Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- MenuRendererStandards.cs
- Compiler.cs
- InstrumentationTracker.cs
- BitmapEffectGeneralTransform.cs
- CopyOnWriteList.cs
- TableProviderWrapper.cs
- FlowLayoutSettings.cs
- ViewStateAttachedPropertyFeature.cs
- XslAst.cs
- ThreadStartException.cs
- XmlSchemaExporter.cs
- SqlStatistics.cs
- COSERVERINFO.cs
- SliderAutomationPeer.cs
- CursorInteropHelper.cs
- XMLDiffLoader.cs
- ValidatingPropertiesEventArgs.cs
- ThemeDirectoryCompiler.cs
- ObjectRef.cs
- XmlReturnReader.cs
- FixedSOMTableCell.cs
- ProcessHostServerConfig.cs
- DeclarativeCatalogPart.cs
- TraceSource.cs
- Positioning.cs
- IListConverters.cs
- AppSettingsReader.cs
- DataTemplateKey.cs
- HttpConfigurationSystem.cs
- XmlSchemaComplexType.cs
- CellIdBoolean.cs
- BackoffTimeoutHelper.cs
- BuildResultCache.cs
- SchemaNames.cs
- PathBox.cs
- ColorAnimation.cs
- Part.cs
- X509Certificate2Collection.cs
- SamlSerializer.cs
- SelectedPathEditor.cs
- OdbcErrorCollection.cs
- Int32AnimationBase.cs
- EasingQuaternionKeyFrame.cs
- TextInfo.cs
- RemotingServices.cs
- SourceInterpreter.cs
- RoleGroup.cs
- CFStream.cs
- ObjectSecurity.cs
- OletxVolatileEnlistment.cs
- CodeGeneratorAttribute.cs
- SponsorHelper.cs
- ExpressionBuilder.cs
- StateMachine.cs
- GcSettings.cs
- ZipFileInfo.cs
- HttpServerVarsCollection.cs
- SpeechUI.cs
- SortedDictionary.cs
- StateManagedCollection.cs
- KnowledgeBase.cs
- IdnElement.cs
- DataReceivedEventArgs.cs
- EngineSiteSapi.cs
- FtpRequestCacheValidator.cs
- GenericPrincipal.cs
- sqlmetadatafactory.cs
- Win32Exception.cs
- AQNBuilder.cs
- FixedSOMPageConstructor.cs
- Transform.cs
- CultureInfo.cs
- WebServiceParameterData.cs
- VoiceObjectToken.cs
- ShutDownListener.cs
- WebPartCollection.cs
- PeerApplication.cs
- ToolStripManager.cs
- MarkerProperties.cs
- XmlText.cs
- ListViewInsertionMark.cs
- TraceSection.cs
- InkCanvas.cs
- ContextDataSourceView.cs
- ReadWriteObjectLock.cs
- VectorCollectionConverter.cs
- TextRunCache.cs
- MultipleViewPattern.cs
- Bold.cs
- EventProviderWriter.cs
- CollectionViewSource.cs
- COM2PropertyBuilderUITypeEditor.cs
- Clipboard.cs
- PtsPage.cs
- ClientSettingsProvider.cs
- MatrixTransform.cs
- ConfigXmlWhitespace.cs
- DesignerWebPartChrome.cs
- SelectingProviderEventArgs.cs
- AssociatedControlConverter.cs