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
- StylusButton.cs
- Activation.cs
- XPathExpr.cs
- UInt32Converter.cs
- TextTreeNode.cs
- listitem.cs
- UTF32Encoding.cs
- InvokeMethodActivity.cs
- BindingWorker.cs
- SqlCommandBuilder.cs
- CatalogZoneBase.cs
- ImplicitInputBrush.cs
- DesignerDataSourceView.cs
- UnsafeNativeMethods.cs
- HiddenFieldPageStatePersister.cs
- PromptStyle.cs
- HorizontalAlignConverter.cs
- DataGridState.cs
- MetadataItemSerializer.cs
- DispatcherProcessingDisabled.cs
- WebBrowsableAttribute.cs
- AssemblyResourceLoader.cs
- ClientSettingsStore.cs
- MatrixStack.cs
- ObservableDictionary.cs
- TransformerInfo.cs
- ModifyActivitiesPropertyDescriptor.cs
- PointHitTestResult.cs
- WindowsScroll.cs
- TableColumn.cs
- QueueException.cs
- AssemblyAssociatedContentFileAttribute.cs
- LocationReferenceValue.cs
- NativeMethodsCLR.cs
- StringAnimationBase.cs
- MenuCommand.cs
- SchemaNames.cs
- StrongBox.cs
- DocumentViewerBase.cs
- BufferBuilder.cs
- ProxyManager.cs
- TypographyProperties.cs
- MonikerHelper.cs
- DbParameterCollectionHelper.cs
- AmbiguousMatchException.cs
- QueryCacheKey.cs
- EntitySet.cs
- SendingRequestEventArgs.cs
- ConnectionStringsSection.cs
- WorkflowMessageEventArgs.cs
- TextViewSelectionProcessor.cs
- ToolStripDropDownClosedEventArgs.cs
- XmlImplementation.cs
- TCPClient.cs
- LineUtil.cs
- ConnectionPointCookie.cs
- XmlSchema.cs
- ObjectCacheHost.cs
- EntityDataSourceConfigureObjectContext.cs
- SmtpNetworkElement.cs
- XmlDocumentSchema.cs
- DiagnosticTraceSource.cs
- AsymmetricSecurityProtocol.cs
- DrawingGroupDrawingContext.cs
- BitmapEffectRenderDataResource.cs
- LinqDataSourceHelper.cs
- BrowserCapabilitiesFactoryBase.cs
- Bits.cs
- HttpConfigurationSystem.cs
- DuplicateWaitObjectException.cs
- SiteMapDataSourceView.cs
- InfiniteTimeSpanConverter.cs
- TextViewSelectionProcessor.cs
- SizeValueSerializer.cs
- ServiceReference.cs
- XPathNodeList.cs
- HtmlDocument.cs
- TextWriter.cs
- XsdBuilder.cs
- rsa.cs
- log.cs
- MaterialCollection.cs
- EpmTargetPathSegment.cs
- PropertyTabChangedEvent.cs
- PaginationProgressEventArgs.cs
- ExpandoObject.cs
- HGlobalSafeHandle.cs
- DataBindingCollectionEditor.cs
- DbConnectionStringCommon.cs
- HtmlControlPersistable.cs
- ContainsSearchOperator.cs
- ReaderOutput.cs
- RegexCharClass.cs
- XamlSerializerUtil.cs
- Tile.cs
- WeakEventTable.cs
- TreeWalker.cs
- LayoutDump.cs
- SingleObjectCollection.cs
- DocumentViewerHelper.cs