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
- ETagAttribute.cs
- ProviderMetadata.cs
- CornerRadiusConverter.cs
- URLString.cs
- Error.cs
- GridViewCancelEditEventArgs.cs
- CommentEmitter.cs
- activationcontext.cs
- KeyFrames.cs
- HashStream.cs
- InternalConfigConfigurationFactory.cs
- DataGridColumnsPage.cs
- AssemblyName.cs
- XmlSerializerAssemblyAttribute.cs
- IInstanceContextProvider.cs
- HelloMessageCD1.cs
- InputLangChangeEvent.cs
- TaskHelper.cs
- ChangePassword.cs
- CookielessHelper.cs
- PersistenceProvider.cs
- ItemsPresenter.cs
- StringDictionary.cs
- XmlCodeExporter.cs
- ConsumerConnectionPointCollection.cs
- SecurityDocument.cs
- XslAstAnalyzer.cs
- SspiSafeHandles.cs
- DateTimeConstantAttribute.cs
- SBCSCodePageEncoding.cs
- ObjectCacheHost.cs
- GridView.cs
- WriteTimeStream.cs
- PropertyFilterAttribute.cs
- SqlDataReaderSmi.cs
- SaveFileDialog.cs
- TextRangeBase.cs
- UriParserTemplates.cs
- Helper.cs
- Stacktrace.cs
- HandleExceptionArgs.cs
- FrameworkObject.cs
- EditorZone.cs
- EntitySqlException.cs
- COMException.cs
- ProcessHostServerConfig.cs
- __Error.cs
- AppSecurityManager.cs
- MsmqBindingElementBase.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- FamilyTypefaceCollection.cs
- CompiledIdentityConstraint.cs
- DSASignatureFormatter.cs
- QuaternionConverter.cs
- SpellerError.cs
- Wizard.cs
- ExpressionEditorAttribute.cs
- RuntimeConfigLKG.cs
- VerificationException.cs
- SoapExtensionImporter.cs
- _KerberosClient.cs
- TypeForwardedToAttribute.cs
- TransactionInterop.cs
- DatatypeImplementation.cs
- XmlAttribute.cs
- CategoryAttribute.cs
- InternalTypeHelper.cs
- ColumnHeaderConverter.cs
- XmlSchemaException.cs
- PerformanceCountersElement.cs
- MobileControlsSection.cs
- FacetDescription.cs
- AtomContentProperty.cs
- LineBreakRecord.cs
- WhiteSpaceTrimStringConverter.cs
- MatrixStack.cs
- AccessibleObject.cs
- UidManager.cs
- safex509handles.cs
- PeerNameRegistration.cs
- HtmlInputSubmit.cs
- StopStoryboard.cs
- PolicyConversionContext.cs
- BooleanExpr.cs
- XmlBoundElement.cs
- FixedPageAutomationPeer.cs
- MemberProjectionIndex.cs
- InternalUserCancelledException.cs
- TdsParameterSetter.cs
- XmlNamespaceMapping.cs
- ArgumentOutOfRangeException.cs
- xmlfixedPageInfo.cs
- ProxyHelper.cs
- IpcChannelHelper.cs
- CultureTable.cs
- Globals.cs
- PageRanges.cs
- MasterPage.cs
- DeobfuscatingStream.cs
- RegexTree.cs