Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / 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. 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
- MenuItem.cs
- DrawingContext.cs
- NumericUpDown.cs
- DesignerSerializationManager.cs
- Decorator.cs
- DataServiceQuery.cs
- ScrollBar.cs
- ILGenerator.cs
- CodeAccessSecurityEngine.cs
- IIS7UserPrincipal.cs
- GridViewCommandEventArgs.cs
- QilTargetType.cs
- ObjectDataSourceView.cs
- LocatorPart.cs
- EncodingInfo.cs
- FlagsAttribute.cs
- DateBoldEvent.cs
- WebPartMenuStyle.cs
- CultureTableRecord.cs
- ExpressionBindingsDialog.cs
- RIPEMD160.cs
- SendMessageContent.cs
- File.cs
- MapPathBasedVirtualPathProvider.cs
- WebPartConnectionsDisconnectVerb.cs
- ArrayConverter.cs
- HttpServerChannel.cs
- DocumentPageView.cs
- MemberAssignment.cs
- PublisherMembershipCondition.cs
- TextEndOfLine.cs
- PagedDataSource.cs
- EDesignUtil.cs
- SectionRecord.cs
- CaseStatement.cs
- LineBreakRecord.cs
- DiagnosticStrings.cs
- RSAPKCS1SignatureFormatter.cs
- DoWorkEventArgs.cs
- DataGridViewTopLeftHeaderCell.cs
- DeferrableContent.cs
- ExternalException.cs
- WebPartCatalogCloseVerb.cs
- SafeCertificateContext.cs
- TypeConverterHelper.cs
- TypeElement.cs
- ValueHandle.cs
- EntityDataSourceMemberPath.cs
- XmlQueryRuntime.cs
- EllipticalNodeOperations.cs
- NamespaceMapping.cs
- DataColumnChangeEvent.cs
- IDispatchConstantAttribute.cs
- Monitor.cs
- IntSecurity.cs
- InputLanguageCollection.cs
- SqlTopReducer.cs
- HtmlWindow.cs
- GraphicsState.cs
- MaterialGroup.cs
- ParallelDesigner.xaml.cs
- ListViewGroupConverter.cs
- TemplateNameScope.cs
- WebDisplayNameAttribute.cs
- BaseValidator.cs
- BeginEvent.cs
- IdentifierCollection.cs
- ReferencedType.cs
- Vector3DCollectionConverter.cs
- ListViewAutomationPeer.cs
- MULTI_QI.cs
- TransactionProtocol.cs
- diagnosticsswitches.cs
- ACE.cs
- InfoCardCryptoHelper.cs
- TextDpi.cs
- CoreSwitches.cs
- CollectionChangedEventManager.cs
- HtmlInputButton.cs
- DES.cs
- InertiaTranslationBehavior.cs
- ZoomPercentageConverter.cs
- TdsParserHelperClasses.cs
- Vector3dCollection.cs
- RuntimeTransactionHandle.cs
- CryptoStream.cs
- ControlBuilderAttribute.cs
- SymmetricAlgorithm.cs
- IconConverter.cs
- HttpHeaderCollection.cs
- RSAPKCS1SignatureFormatter.cs
- ComEventsInfo.cs
- AccessText.cs
- SpellerHighlightLayer.cs
- OleDbWrapper.cs
- ThreadInterruptedException.cs
- SqlDataReader.cs
- GrammarBuilderPhrase.cs
- OdbcConnectionPoolProviderInfo.cs
- UnauthorizedAccessException.cs