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
- ConnectionsZone.cs
- FrameworkElementAutomationPeer.cs
- JapaneseCalendar.cs
- ModuleBuilderData.cs
- Camera.cs
- SimplePropertyEntry.cs
- TypeConverterHelper.cs
- DocumentOrderQuery.cs
- PrimarySelectionGlyph.cs
- DbXmlEnabledProviderManifest.cs
- CompressedStack.cs
- XsdBuilder.cs
- WhereaboutsReader.cs
- Models.cs
- ListBindingHelper.cs
- OleDbWrapper.cs
- XmlElement.cs
- CheckBoxList.cs
- PocoEntityKeyStrategy.cs
- OutputCacheProviderCollection.cs
- Cursor.cs
- CodeAccessSecurityEngine.cs
- SignatureConfirmations.cs
- AnnotationAuthorChangedEventArgs.cs
- SchemaCollectionPreprocessor.cs
- ServicePointManagerElement.cs
- SafeNativeMethods.cs
- HttpCookiesSection.cs
- SpellerStatusTable.cs
- XmlAnyElementAttributes.cs
- WebPartHeaderCloseVerb.cs
- DBAsyncResult.cs
- AbandonedMutexException.cs
- AxisAngleRotation3D.cs
- SqlDataSourceCommandEventArgs.cs
- XamlValidatingReader.cs
- DataGridViewColumnDesigner.cs
- ProfilePropertyNameValidator.cs
- Point3DKeyFrameCollection.cs
- WebPartConnectionsConfigureVerb.cs
- Queue.cs
- ClientSettingsProvider.cs
- XamlPointCollectionSerializer.cs
- SectionXmlInfo.cs
- BezierSegment.cs
- WmlObjectListAdapter.cs
- RemotingConfigParser.cs
- BindingSourceDesigner.cs
- InfoCardSymmetricAlgorithm.cs
- PageEventArgs.cs
- SchemaElement.cs
- _FtpControlStream.cs
- EventWaitHandle.cs
- PerformanceCounterPermissionEntry.cs
- GuidelineCollection.cs
- ViewKeyConstraint.cs
- mansign.cs
- SignedXml.cs
- grammarelement.cs
- Encoding.cs
- ProcessHostConfigUtils.cs
- HyperLinkColumn.cs
- PlainXmlDeserializer.cs
- XmlExtensionFunction.cs
- QualifiedCellIdBoolean.cs
- KeyEventArgs.cs
- HierarchicalDataBoundControl.cs
- TextRangeEdit.cs
- METAHEADER.cs
- AssemblyHash.cs
- Geometry3D.cs
- BrowserCapabilitiesCompiler.cs
- ChannelServices.cs
- AdapterSwitches.cs
- OdbcError.cs
- ServiceOperationUIEditor.cs
- ConstructorNeedsTagAttribute.cs
- RedistVersionInfo.cs
- Positioning.cs
- IntPtr.cs
- EditingCommands.cs
- ViewBase.cs
- SystemUdpStatistics.cs
- PropertyChangedEventArgs.cs
- TcpHostedTransportConfiguration.cs
- SupportingTokenDuplexChannel.cs
- FilterException.cs
- SQLBinaryStorage.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- UrlRoutingHandler.cs
- NameValueConfigurationCollection.cs
- CrossAppDomainChannel.cs
- CompoundFileStreamReference.cs
- CalendarAutoFormat.cs
- SettingsPropertyValue.cs
- RegistrationServices.cs
- ReturnType.cs
- RegistrationServices.cs
- AppDomainShutdownMonitor.cs
- FlowDocumentView.cs