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
- XmlWellformedWriter.cs
- TextStore.cs
- ComponentDispatcherThread.cs
- FastEncoderWindow.cs
- ActivityExecutor.cs
- StreamHelper.cs
- AppDomainManager.cs
- SimpleApplicationHost.cs
- Slider.cs
- UserInitiatedRoutedEventPermission.cs
- Point3D.cs
- RestClientProxyHandler.cs
- IPEndPoint.cs
- DoubleAverageAggregationOperator.cs
- MouseButton.cs
- BaseCollection.cs
- Delegate.cs
- SafeFindHandle.cs
- VolatileEnlistmentState.cs
- PageCodeDomTreeGenerator.cs
- LifetimeServices.cs
- DbConvert.cs
- EventTask.cs
- DateTimeSerializationSection.cs
- IdentityValidationException.cs
- DataGridViewButtonCell.cs
- ActivityTypeDesigner.xaml.cs
- ControlPaint.cs
- Baml6ConstructorInfo.cs
- SmiGettersStream.cs
- FixedElement.cs
- TracedNativeMethods.cs
- BoundPropertyEntry.cs
- PropertyGridView.cs
- SortQuery.cs
- UnaryNode.cs
- TemplatePropertyEntry.cs
- mactripleDES.cs
- JulianCalendar.cs
- WebPartZoneBaseDesigner.cs
- PostBackOptions.cs
- TransportContext.cs
- LocatorManager.cs
- ConfigurationManagerInternal.cs
- RemotingException.cs
- SqlConnectionFactory.cs
- Int16Animation.cs
- EditorZoneBase.cs
- EnvelopedPkcs7.cs
- XmlNamespaceMapping.cs
- LassoSelectionBehavior.cs
- SoapSchemaImporter.cs
- Transform3D.cs
- IBuiltInEvidence.cs
- RegexCharClass.cs
- GenericTypeParameterBuilder.cs
- DecimalConstantAttribute.cs
- ACE.cs
- CharEnumerator.cs
- ExpanderAutomationPeer.cs
- NativeRecognizer.cs
- DbProviderServices.cs
- CustomErrorsSection.cs
- XAMLParseException.cs
- DataBindingCollection.cs
- RuntimeConfigurationRecord.cs
- ExpressionBuilderContext.cs
- StructuredTypeEmitter.cs
- ReflectionUtil.cs
- DiscoveryVersion.cs
- ToolStripPanelRenderEventArgs.cs
- UserControlParser.cs
- coordinator.cs
- ReferenceConverter.cs
- CardSpacePolicyElement.cs
- ThreadExceptionEvent.cs
- DataServices.cs
- SamlAssertion.cs
- ListViewTableRow.cs
- ProxyWebPart.cs
- TemplateInstanceAttribute.cs
- SqlMethods.cs
- Visual.cs
- TableParaClient.cs
- PaginationProgressEventArgs.cs
- OracleBoolean.cs
- FixedDocument.cs
- TailCallAnalyzer.cs
- HttpsTransportBindingElement.cs
- Group.cs
- GcSettings.cs
- Connector.cs
- HandledMouseEvent.cs
- StringBuilder.cs
- ConfigurationLocationCollection.cs
- LayoutInformation.cs
- SrgsElement.cs
- MemberDescriptor.cs
- WmlListAdapter.cs
- IncrementalCompileAnalyzer.cs