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
- MetabaseServerConfig.cs
- AssociationTypeEmitter.cs
- BitmapDecoder.cs
- securestring.cs
- Label.cs
- MiniAssembly.cs
- HtmlInputPassword.cs
- Win32Native.cs
- CallbackValidatorAttribute.cs
- DesignerEventService.cs
- DataBindEngine.cs
- RewritingProcessor.cs
- __Filters.cs
- AsyncInvokeContext.cs
- DeviceOverridableAttribute.cs
- TextEditorDragDrop.cs
- TransformProviderWrapper.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- DrawingCollection.cs
- FolderBrowserDialog.cs
- XmlDigitalSignatureProcessor.cs
- SectionInformation.cs
- SmiGettersStream.cs
- DocumentViewerAutomationPeer.cs
- WindowsFont.cs
- BehaviorDragDropEventArgs.cs
- SignatureHelper.cs
- SerializationSectionGroup.cs
- WorkflowServiceInstance.cs
- DataSourceSelectArguments.cs
- Roles.cs
- Attributes.cs
- HtmlInputButton.cs
- PerspectiveCamera.cs
- DataTableTypeConverter.cs
- PrinterSettings.cs
- CheckedPointers.cs
- Selection.cs
- EdmItemCollection.cs
- ConfigXmlText.cs
- EdgeProfileValidation.cs
- ProxyGenerator.cs
- DateTimeOffsetConverter.cs
- PlainXmlSerializer.cs
- XNodeNavigator.cs
- SelectionHighlightInfo.cs
- DynamicArgumentDialog.cs
- WorkItem.cs
- XPathDocumentBuilder.cs
- COM2TypeInfoProcessor.cs
- WebResourceAttribute.cs
- GeometryCombineModeValidation.cs
- StatusBar.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- CustomSignedXml.cs
- Utils.cs
- ExtensionElementCollection.cs
- LowerCaseStringConverter.cs
- QilPatternFactory.cs
- InvalidComObjectException.cs
- ValueHandle.cs
- PauseStoryboard.cs
- TextMetrics.cs
- ReflectionTypeLoadException.cs
- AssertHelper.cs
- FastEncoderWindow.cs
- OleDbReferenceCollection.cs
- GetPageCompletedEventArgs.cs
- DataGridViewCellParsingEventArgs.cs
- DependencyProperty.cs
- Utils.cs
- Help.cs
- TagMapInfo.cs
- WorkflowRuntimeService.cs
- IncrementalHitTester.cs
- HTMLTagNameToTypeMapper.cs
- IdentityValidationException.cs
- SkipStoryboardToFill.cs
- Animatable.cs
- SQLMoney.cs
- WeakReference.cs
- MemberInfoSerializationHolder.cs
- SqlConnectionString.cs
- InProcStateClientManager.cs
- SamlAdvice.cs
- RegistrySecurity.cs
- HashAlgorithm.cs
- WhitespaceSignificantCollectionAttribute.cs
- MetadataElement.cs
- WebDescriptionAttribute.cs
- XmlHierarchicalDataSourceView.cs
- SqlTransaction.cs
- BindStream.cs
- ReadOnlyDataSource.cs
- ObjectListFieldCollection.cs
- MediaContext.cs
- _ProxyChain.cs
- ParagraphVisual.cs
- URLAttribute.cs
- RequestCacheValidator.cs