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
- SecurityCriticalDataForSet.cs
- FilteredXmlReader.cs
- MsmqIntegrationMessageProperty.cs
- XmlUtil.cs
- TypeConverterAttribute.cs
- IndexerNameAttribute.cs
- PropertyValueUIItem.cs
- Journaling.cs
- DataServiceProcessingPipelineEventArgs.cs
- SiteMapNodeItem.cs
- StreamGeometry.cs
- SqlClientWrapperSmiStream.cs
- ResXBuildProvider.cs
- Debug.cs
- ValidationError.cs
- ThreadExceptionDialog.cs
- UDPClient.cs
- RedirectionProxy.cs
- SafeArrayRankMismatchException.cs
- EditorPartChrome.cs
- TemplateContentLoader.cs
- GeneralTransform.cs
- _LocalDataStoreMgr.cs
- GlyphRun.cs
- RSAProtectedConfigurationProvider.cs
- LayoutExceptionEventArgs.cs
- OutputCacheSection.cs
- ToolStripRenderer.cs
- ContextMenuService.cs
- BevelBitmapEffect.cs
- TextModifier.cs
- _ShellExpression.cs
- DerivedKeyCachingSecurityTokenSerializer.cs
- EntityClassGenerator.cs
- ActionFrame.cs
- CDSCollectionETWBCLProvider.cs
- CompModSwitches.cs
- LowerCaseStringConverter.cs
- DetailsViewRowCollection.cs
- RequestTimeoutManager.cs
- MetafileHeader.cs
- ReferenceConverter.cs
- BamlRecords.cs
- RTLAwareMessageBox.cs
- HexParser.cs
- CriticalExceptions.cs
- RectValueSerializer.cs
- DataGridViewColumnDesigner.cs
- XmlCollation.cs
- TextElementEnumerator.cs
- SessionState.cs
- SqlCommandAsyncResult.cs
- HtmlMeta.cs
- MobilePage.cs
- RegexCode.cs
- AssemblyAssociatedContentFileAttribute.cs
- Visual3DCollection.cs
- PageCache.cs
- PointUtil.cs
- TreeNodeBindingCollection.cs
- XmlDictionaryReaderQuotasElement.cs
- HMAC.cs
- EventProviderWriter.cs
- XamlDesignerSerializationManager.cs
- PenLineJoinValidation.cs
- DataGridRowHeaderAutomationPeer.cs
- WebPartMenuStyle.cs
- PartialArray.cs
- datacache.cs
- WebConfigurationHost.cs
- BindingSource.cs
- XmlLinkedNode.cs
- RSAOAEPKeyExchangeDeformatter.cs
- SelectionItemProviderWrapper.cs
- DesignerTransactionCloseEvent.cs
- FilteredDataSetHelper.cs
- XmlSchemaAttributeGroupRef.cs
- SubtreeProcessor.cs
- CodeExpressionStatement.cs
- ClientRuntimeConfig.cs
- HtmlEmptyTagControlBuilder.cs
- ConfigurationElementProperty.cs
- ImpersonateTokenRef.cs
- HyperLinkColumn.cs
- FastPropertyAccessor.cs
- SafeLocalMemHandle.cs
- HttpWebResponse.cs
- InputScopeManager.cs
- DateTimeConverter2.cs
- UnitySerializationHolder.cs
- DeploymentSectionCache.cs
- ClientFormsAuthenticationCredentials.cs
- ForwardPositionQuery.cs
- DirtyTextRange.cs
- OleStrCAMarshaler.cs
- ToolStripDropDown.cs
- EntityDataSourceContextCreatingEventArgs.cs
- ExcludeFromCodeCoverageAttribute.cs
- PathFigureCollectionConverter.cs
- TextRangeProviderWrapper.cs