Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Input / InputProviderSite.cs / 1305600 / 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() { GC.SuppressFinalize(this); 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. 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() { GC.SuppressFinalize(this); 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
- WebHttpBindingCollectionElement.cs
- StreamInfo.cs
- DBCSCodePageEncoding.cs
- DBConcurrencyException.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- ReferenceSchema.cs
- ImageList.cs
- __ComObject.cs
- ByteStreamMessageEncoder.cs
- DataGridViewCellLinkedList.cs
- CodeGenerator.cs
- AssemblyResolver.cs
- TextSerializer.cs
- CriticalFileToken.cs
- WebPartCancelEventArgs.cs
- WebBrowser.cs
- PersistChildrenAttribute.cs
- AssociationType.cs
- MarshalByValueComponent.cs
- CompoundFileIOPermission.cs
- TabPageDesigner.cs
- HtmlControlPersistable.cs
- PathFigureCollection.cs
- AnnotationResource.cs
- FastPropertyAccessor.cs
- AlternateViewCollection.cs
- DataGridViewColumnConverter.cs
- TypedColumnHandler.cs
- SerializableAttribute.cs
- XmlDataCollection.cs
- BrowserCapabilitiesFactory.cs
- URI.cs
- ProcessActivityTreeOptions.cs
- WmlControlAdapter.cs
- FontEmbeddingManager.cs
- BrowsableAttribute.cs
- DummyDataSource.cs
- StringValidatorAttribute.cs
- CodePrimitiveExpression.cs
- Stackframe.cs
- DbDataAdapter.cs
- SoapEnumAttribute.cs
- WebPartChrome.cs
- HttpResponseHeader.cs
- SchemaImporterExtensionElementCollection.cs
- SplitContainerDesigner.cs
- XmlChildNodes.cs
- StrongNameUtility.cs
- FrameworkPropertyMetadata.cs
- BamlRecords.cs
- PageSetupDialog.cs
- LifetimeServices.cs
- Crc32.cs
- ListenUriMode.cs
- WizardForm.cs
- ParentUndoUnit.cs
- SystemInformation.cs
- TextAnchor.cs
- BigInt.cs
- HtmlLink.cs
- LinkedResourceCollection.cs
- ContourSegment.cs
- Button.cs
- ContentTextAutomationPeer.cs
- NamespaceQuery.cs
- ProgramNode.cs
- EventBuilder.cs
- SubMenuStyle.cs
- FolderLevelBuildProvider.cs
- StorageAssociationSetMapping.cs
- TypeUnloadedException.cs
- WebSysDisplayNameAttribute.cs
- DependencyPropertyKind.cs
- AuthenticationModulesSection.cs
- ParentQuery.cs
- TextComposition.cs
- BitmapEffectvisualstate.cs
- ObservableCollection.cs
- DropShadowBitmapEffect.cs
- ExtractCollection.cs
- FilteredAttributeCollection.cs
- QuaternionAnimation.cs
- ChoiceConverter.cs
- HttpClientProtocol.cs
- Interop.cs
- EventHandlersDesigner.cs
- ManagedWndProcTracker.cs
- LabelAutomationPeer.cs
- CodeMemberProperty.cs
- HtmlGenericControl.cs
- ResourceContainer.cs
- validationstate.cs
- _ShellExpression.cs
- HttpChannelBindingToken.cs
- UInt64.cs
- WindowsComboBox.cs
- WindowsGraphicsCacheManager.cs
- ItemsChangedEventArgs.cs
- HttpListener.cs
- SelectQueryOperator.cs