Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Input / InputProviderSite.cs / 1 / InputProviderSite.cs
using System; using System.Security; using System.Security.Permissions; using MS.Internal; using MS.Internal.PresentationCore; // SecurityHelper using MS.Win32; using System.Windows.Threading; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; namespace System.Windows.Input { ////// The object which input providers use to report input to the input /// manager. /// internal class InputProviderSite : IDisposable { ////// Critical: This code creates critical data in the form of InputManager and InputProvider /// [SecurityCritical] internal InputProviderSite(InputManager inputManager, IInputProvider inputProvider) { _inputManager = new SecurityCriticalDataClass(inputManager); _inputProvider = new SecurityCriticalDataClass (inputProvider); } /// /// Returns the input manager that this site is attached to. /// ////// Critical: We do not want to expose the Input manager in the SEE /// TreatAsSafe: This code has a demand in it /// public InputManager InputManager { [SecurityCritical,SecurityTreatAsSafe] get { SecurityHelper.DemandUnrestrictedUIPermission(); return CriticalInputManager; } } ////// Returns the input manager that this site is attached to. /// ////// Critical: We do not want to expose the Input manager in the SEE /// internal InputManager CriticalInputManager { [SecurityCritical] get { return _inputManager.Value; } } ////// Unregisters this input provider. /// ////// Critical: This code accesses critical data (InputManager and InputProvider). /// TreatAsSafe: The critical data is not exposed outside this call /// [SecurityCritical,SecurityTreatAsSafe] public void Dispose() { if (!_isDisposed) { _isDisposed = true; if (_inputManager != null && _inputProvider != null) { _inputManager.Value.UnregisterInputProvider(_inputProvider.Value); } _inputManager = null; _inputProvider = null; } } ////// Returns true if the CompositionTarget is disposed. /// public bool IsDisposed { get { return _isDisposed; } } ////// Reports input to the input manager. /// ////// Whether or not any event generated as a consequence of this /// event was handled. /// ////// Critical:This code is critical and can be used in event spoofing. It also accesses /// InputManager and calls into ProcessInput which is critical. /// // [SecurityCritical ] [UIPermissionAttribute(SecurityAction.LinkDemand,Unrestricted = true)] public bool ReportInput(InputReport inputReport) { if(IsDisposed) { throw new ObjectDisposedException(SR.Get(SRID.InputProviderSiteDisposed)); } bool handled = false; InputReportEventArgs input = new InputReportEventArgs(null, inputReport); input.RoutedEvent=InputManager.PreviewInputReportEvent; if(_inputManager != null) { handled = _inputManager.Value.ProcessInput(input); } return handled; } private bool _isDisposed; ////// Critical: This object should not be exposed in the SEE as it can be /// used for input spoofing /// private SecurityCriticalDataClass_inputManager; /// /// Critical: This object should not be exposed in the SEE as it can be /// used for input spoofing /// private SecurityCriticalDataClass_inputProvider; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConditionalDesigner.cs
- DataGridViewRowsRemovedEventArgs.cs
- dsa.cs
- Encoder.cs
- NetworkInterface.cs
- ManagedCodeMarkers.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- OrderPreservingPipeliningSpoolingTask.cs
- GeneralTransform.cs
- BulletChrome.cs
- XLinq.cs
- recordstatefactory.cs
- RenderOptions.cs
- X509Certificate.cs
- AstNode.cs
- ListViewInsertedEventArgs.cs
- ListViewItemMouseHoverEvent.cs
- WindowsPrincipal.cs
- MouseEvent.cs
- IndexedEnumerable.cs
- AppDomainGrammarProxy.cs
- DataGridViewRowConverter.cs
- RuleInfoComparer.cs
- SqlDependencyListener.cs
- WindowsEditBoxRange.cs
- NotFiniteNumberException.cs
- XamlPathDataSerializer.cs
- ParameterRefs.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- SelectionPatternIdentifiers.cs
- ObjectQueryProvider.cs
- SimpleHandlerBuildProvider.cs
- CalloutQueueItem.cs
- ClusterSafeNativeMethods.cs
- MarkedHighlightComponent.cs
- RootBrowserWindow.cs
- IsolatedStorageException.cs
- UnsafeMethods.cs
- ScaleTransform3D.cs
- SQLRoleProvider.cs
- SoapElementAttribute.cs
- MergeFailedEvent.cs
- DataBindingHandlerAttribute.cs
- RelatedView.cs
- BrushConverter.cs
- XmlSchemaAttributeGroup.cs
- MinimizableAttributeTypeConverter.cs
- SecurityVerifiedMessage.cs
- LazyTextWriterCreator.cs
- GlobalizationSection.cs
- PointAnimationUsingPath.cs
- RoutedEventConverter.cs
- WmlPageAdapter.cs
- ColorAnimation.cs
- HttpCachePolicyElement.cs
- SerialErrors.cs
- BrowsableAttribute.cs
- updateconfighost.cs
- KnownBoxes.cs
- IdentitySection.cs
- VectorKeyFrameCollection.cs
- grammarelement.cs
- DictionaryContent.cs
- LinkTarget.cs
- FlowLayout.cs
- DataSourceSelectArguments.cs
- XAMLParseException.cs
- HwndProxyElementProvider.cs
- SafeCoTaskMem.cs
- IisTraceListener.cs
- KeyGestureValueSerializer.cs
- ComboBoxAutomationPeer.cs
- FutureFactory.cs
- QilPatternVisitor.cs
- InternalMappingException.cs
- FirstMatchCodeGroup.cs
- DocumentOrderComparer.cs
- Page.cs
- RegexCode.cs
- HtmlTextArea.cs
- UInt16.cs
- MemoryPressure.cs
- EnumValidator.cs
- SQLSingleStorage.cs
- TypeInfo.cs
- DataSet.cs
- MasterPage.cs
- WorkflowInvoker.cs
- AssociationTypeEmitter.cs
- FusionWrap.cs
- DescendantBaseQuery.cs
- SizeAnimationClockResource.cs
- CircleHotSpot.cs
- Keywords.cs
- WinEventQueueItem.cs
- XmlSchemaObjectCollection.cs
- AsynchronousChannelMergeEnumerator.cs
- ThemeDirectoryCompiler.cs
- StringArrayConverter.cs
- ScriptManagerProxy.cs