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
- ListSourceHelper.cs
- FixedLineResult.cs
- Int64AnimationBase.cs
- Win32KeyboardDevice.cs
- TreeViewItemAutomationPeer.cs
- SiteMapHierarchicalDataSourceView.cs
- XmlRootAttribute.cs
- MasterPageParser.cs
- SecurityCredentialsManager.cs
- MenuCommand.cs
- WebReference.cs
- APCustomTypeDescriptor.cs
- CorrelationValidator.cs
- SchemaElementDecl.cs
- HtmlInputReset.cs
- GB18030Encoding.cs
- autovalidator.cs
- SendKeys.cs
- Tag.cs
- UInt32Converter.cs
- BaseDataBoundControl.cs
- AmbientValueAttribute.cs
- PenContext.cs
- IPCCacheManager.cs
- Slider.cs
- UnauthorizedWebPart.cs
- TemplateXamlTreeBuilder.cs
- SystemIPInterfaceStatistics.cs
- login.cs
- ItemsPresenter.cs
- DrawListViewItemEventArgs.cs
- XslTransform.cs
- KeyEvent.cs
- X509SecurityTokenAuthenticator.cs
- WithParamAction.cs
- Rotation3DKeyFrameCollection.cs
- DocumentGridPage.cs
- MatrixTransform.cs
- odbcmetadatafactory.cs
- ExcCanonicalXml.cs
- InstanceNotFoundException.cs
- PersonalizableTypeEntry.cs
- HtmlElementEventArgs.cs
- DataGridColumnFloatingHeader.cs
- SimpleWebHandlerParser.cs
- Automation.cs
- StructureChangedEventArgs.cs
- ObjectDataSourceMethodEventArgs.cs
- WebPartDescriptionCollection.cs
- TableLayout.cs
- RoleManagerEventArgs.cs
- DataGridHeaderBorder.cs
- ThousandthOfEmRealDoubles.cs
- Separator.cs
- FileInfo.cs
- SoapEnvelopeProcessingElement.cs
- WSHttpBindingCollectionElement.cs
- InfoCardListRequest.cs
- CopyAttributesAction.cs
- PageTheme.cs
- StoryFragments.cs
- SynchronousReceiveBehavior.cs
- StyleCollection.cs
- RouteItem.cs
- XmlAttributeOverrides.cs
- QilBinary.cs
- SignatureTargetIdManager.cs
- InvalidCardException.cs
- SoapDocumentServiceAttribute.cs
- ReflectionUtil.cs
- DesignUtil.cs
- SmiRecordBuffer.cs
- AuthenticationService.cs
- ManagedWndProcTracker.cs
- WorkflowRuntimeServiceElementCollection.cs
- BitmapSource.cs
- sqlinternaltransaction.cs
- InheritanceRules.cs
- ReachSerializationCacheItems.cs
- AttributeCollection.cs
- SocketCache.cs
- Misc.cs
- WmlListAdapter.cs
- TextReader.cs
- ObjectDataSourceStatusEventArgs.cs
- BindingEditor.xaml.cs
- ContextMenu.cs
- ComplexTypeEmitter.cs
- EndEvent.cs
- DataGridPagerStyle.cs
- IndexedString.cs
- IconBitmapDecoder.cs
- TemplateField.cs
- UriScheme.cs
- CmsInterop.cs
- WebBrowserEvent.cs
- SqlTriggerAttribute.cs
- CompoundFileStorageReference.cs
- OperationCanceledException.cs
- ClockGroup.cs