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
- DrawingCollection.cs
- IgnorePropertiesAttribute.cs
- StringDictionaryEditor.cs
- GifBitmapEncoder.cs
- ToolStripGripRenderEventArgs.cs
- Parser.cs
- PagedControl.cs
- DynamicContractTypeBuilder.cs
- ResourcesChangeInfo.cs
- XmlAtomicValue.cs
- AdjustableArrowCap.cs
- PackageRelationshipSelector.cs
- TextShapeableCharacters.cs
- SrgsGrammar.cs
- Variable.cs
- OleDbRowUpdatingEvent.cs
- FormViewRow.cs
- OledbConnectionStringbuilder.cs
- DecimalKeyFrameCollection.cs
- ConfigXmlElement.cs
- AssemblyNameUtility.cs
- SqlClientPermission.cs
- RoutingUtilities.cs
- EntitySqlQueryBuilder.cs
- XmlCharType.cs
- GlobalAllocSafeHandle.cs
- TableLayoutCellPaintEventArgs.cs
- SignatureToken.cs
- AutomationElementIdentifiers.cs
- WebPartActionVerb.cs
- AttachInfo.cs
- DbCommandDefinition.cs
- PopupEventArgs.cs
- WebPartManagerDesigner.cs
- UIElementParagraph.cs
- XslCompiledTransform.cs
- WindowsHyperlink.cs
- RoleManagerSection.cs
- ArraySegment.cs
- documentation.cs
- TextEndOfParagraph.cs
- ImpersonateTokenRef.cs
- MouseActionValueSerializer.cs
- FunctionOverloadResolver.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- SQLGuid.cs
- CompilerParameters.cs
- HijriCalendar.cs
- NetworkAddressChange.cs
- JumpItem.cs
- CacheMemory.cs
- StringComparer.cs
- MessageSmuggler.cs
- SafeProcessHandle.cs
- StrokeDescriptor.cs
- MemberRelationshipService.cs
- EntitySetDataBindingList.cs
- HttpWriter.cs
- ButtonBaseAutomationPeer.cs
- SimpleType.cs
- DiagnosticTrace.cs
- TypeSystemHelpers.cs
- RewritingSimplifier.cs
- CodeCommentStatement.cs
- DataSet.cs
- FormParameter.cs
- EmbeddedMailObject.cs
- MobileControlBuilder.cs
- OleDbInfoMessageEvent.cs
- DataControlFieldCollection.cs
- FullTrustAssembliesSection.cs
- Duration.cs
- ProfileManager.cs
- _FixedSizeReader.cs
- TaskFormBase.cs
- ObjectStateFormatter.cs
- ObjectDataSourceMethodEditor.cs
- FileDialog.cs
- Matrix3DValueSerializer.cs
- TextUtf8RawTextWriter.cs
- errorpatternmatcher.cs
- ConstraintManager.cs
- DocumentPage.cs
- NumericExpr.cs
- RemoteEndpointMessageProperty.cs
- EmptyImpersonationContext.cs
- MissingManifestResourceException.cs
- TextDecorationCollection.cs
- SafeNativeMemoryHandle.cs
- TraceInternal.cs
- StorageEntitySetMapping.cs
- TrackingDataItemValue.cs
- NativeMethods.cs
- DrawingAttributesDefaultValueFactory.cs
- DynamicRendererThreadManager.cs
- PrintControllerWithStatusDialog.cs
- TextServicesCompartment.cs
- CodeAssignStatement.cs
- CredentialSelector.cs
- FontInfo.cs