Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- Attributes.cs
- AnyReturnReader.cs
- StandardOleMarshalObject.cs
- ConfigurationConverterBase.cs
- Mutex.cs
- ExclusiveHandle.cs
- InputScopeAttribute.cs
- ConfigurationStrings.cs
- TdsEnums.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- AttributeAction.cs
- TaiwanCalendar.cs
- CommonEndpointBehaviorElement.cs
- BaseComponentEditor.cs
- RoleManagerSection.cs
- Padding.cs
- OpenFileDialog.cs
- ComboBoxRenderer.cs
- CommunicationObjectManager.cs
- RouteItem.cs
- InvokeMethodActivity.cs
- ClientRuntimeConfig.cs
- CqlBlock.cs
- CharacterMetricsDictionary.cs
- __FastResourceComparer.cs
- FreezableDefaultValueFactory.cs
- AxisAngleRotation3D.cs
- Module.cs
- HtmlInputReset.cs
- SmiMetaData.cs
- AuthenticationService.cs
- PathFigureCollectionConverter.cs
- SemaphoreSecurity.cs
- Trigger.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- ComplexType.cs
- DesignTable.cs
- XmlElement.cs
- TargetParameterCountException.cs
- TextEndOfLine.cs
- FontUnit.cs
- Root.cs
- CodeIdentifier.cs
- TextTreeUndoUnit.cs
- EncryptedReference.cs
- StylusPlugin.cs
- Win32Exception.cs
- NamespaceEmitter.cs
- DirectoryInfo.cs
- XamlBrushSerializer.cs
- UnhandledExceptionEventArgs.cs
- IgnoreFileBuildProvider.cs
- HWStack.cs
- DbReferenceCollection.cs
- ButtonColumn.cs
- ScriptResourceAttribute.cs
- IUnknownConstantAttribute.cs
- DesignerForm.cs
- Viewport3DAutomationPeer.cs
- DataGridViewSelectedCellCollection.cs
- SecurityContextTokenCache.cs
- TypeDescriptionProvider.cs
- Light.cs
- CustomWebEventKey.cs
- FunctionImportElement.cs
- PreviewKeyDownEventArgs.cs
- XmlMembersMapping.cs
- UntypedNullExpression.cs
- parserscommon.cs
- DateTime.cs
- DeliveryRequirementsAttribute.cs
- PersistenceProviderFactory.cs
- Hex.cs
- GeometryDrawing.cs
- MediaElementAutomationPeer.cs
- ExclusiveTcpListener.cs
- IntMinMaxAggregationOperator.cs
- XsdBuildProvider.cs
- OdbcUtils.cs
- CornerRadiusConverter.cs
- OleDbPermission.cs
- PathNode.cs
- WebGetAttribute.cs
- TabControl.cs
- BaseAddressElement.cs
- SafeFileMappingHandle.cs
- ComboBoxItem.cs
- ServiceModelTimeSpanValidator.cs
- DbProviderSpecificTypePropertyAttribute.cs
- PlatformCulture.cs
- BatchWriter.cs
- Converter.cs
- VsPropertyGrid.cs
- DataControlFieldHeaderCell.cs
- ObjectQueryState.cs
- HttpConfigurationContext.cs
- SpeechRecognizer.cs
- TypeListConverter.cs
- VirtualizingStackPanel.cs
- Sorting.cs