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
- PrefixHandle.cs
- TcpConnectionPoolSettings.cs
- XmlSchemaComplexType.cs
- WeakHashtable.cs
- MatrixKeyFrameCollection.cs
- CommittableTransaction.cs
- regiisutil.cs
- CollectionViewProxy.cs
- Decimal.cs
- FakeModelPropertyImpl.cs
- GraphicsPathIterator.cs
- ObfuscateAssemblyAttribute.cs
- DecoderNLS.cs
- IndexOutOfRangeException.cs
- CompoundFileReference.cs
- ProfileGroupSettingsCollection.cs
- CardSpaceShim.cs
- DefaultHttpHandler.cs
- StorageMappingFragment.cs
- DeferrableContent.cs
- PropertyIDSet.cs
- PageAdapter.cs
- DataServiceQueryException.cs
- ProcessHostMapPath.cs
- OdbcParameter.cs
- WebPartZoneAutoFormat.cs
- ControlCachePolicy.cs
- __FastResourceComparer.cs
- ExpressionPrefixAttribute.cs
- ErrorHandlerModule.cs
- CustomValidator.cs
- ServiceOperation.cs
- HtmlInputText.cs
- CommonObjectSecurity.cs
- ReflectionUtil.cs
- MetadataPropertyAttribute.cs
- CornerRadius.cs
- Italic.cs
- DocumentScope.cs
- TransactionManager.cs
- PageHandlerFactory.cs
- TableRowCollection.cs
- AmbiguousMatchException.cs
- XmlDocumentSurrogate.cs
- FixedSOMTextRun.cs
- Span.cs
- BitmapEditor.cs
- XslNumber.cs
- CodeSubDirectory.cs
- HtmlObjectListAdapter.cs
- DateTimeFormatInfoScanner.cs
- DataGridViewRowCollection.cs
- XmlSchemaSimpleTypeUnion.cs
- DynamicQueryableWrapper.cs
- DateTimeFormatInfoScanner.cs
- XmlUTF8TextWriter.cs
- XmlValidatingReaderImpl.cs
- ClientTargetSection.cs
- EFTableProvider.cs
- SoapHttpTransportImporter.cs
- Cursor.cs
- TransactionState.cs
- StartUpEventArgs.cs
- PrintPageEvent.cs
- DynamicArgumentDialog.cs
- BitmapDecoder.cs
- ZipIOLocalFileDataDescriptor.cs
- MappingSource.cs
- SoapFormatterSinks.cs
- SessionStateUtil.cs
- dbdatarecord.cs
- SoapInteropTypes.cs
- DynamicContractTypeBuilder.cs
- FileAuthorizationModule.cs
- TTSEngineTypes.cs
- ObjectDataSourceEventArgs.cs
- WriteFileContext.cs
- IndicShape.cs
- JsonClassDataContract.cs
- SafeNativeMethods.cs
- InfoCardMasterKey.cs
- RulePatternOps.cs
- HandlerBase.cs
- ExceptionHelpers.cs
- FontClient.cs
- ReservationCollection.cs
- XamlSerializerUtil.cs
- EllipticalNodeOperations.cs
- HttpCacheVaryByContentEncodings.cs
- AtomServiceDocumentSerializer.cs
- AuthenticationSection.cs
- IsolatedStorage.cs
- ErrorWebPart.cs
- TextServicesDisplayAttributePropertyRanges.cs
- XmlSerializerVersionAttribute.cs
- XPathNavigatorKeyComparer.cs
- GroupStyle.cs
- Animatable.cs
- TransactionProxy.cs
- AsynchronousChannel.cs