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
- SoapHeaderAttribute.cs
- HeaderUtility.cs
- HttpException.cs
- NonSerializedAttribute.cs
- XmlCountingReader.cs
- RadioButtonStandardAdapter.cs
- ConfigXmlDocument.cs
- ToolStripContainerDesigner.cs
- SQLGuidStorage.cs
- BinaryConverter.cs
- Graph.cs
- FileLogRecord.cs
- TextServicesPropertyRanges.cs
- XmlDataImplementation.cs
- DataPager.cs
- DefaultParameterValueAttribute.cs
- httpserverutility.cs
- ConsoleKeyInfo.cs
- BindingList.cs
- ServiceHttpModule.cs
- FigureParagraph.cs
- listitem.cs
- RectangleGeometry.cs
- OrderedParallelQuery.cs
- ListBoxDesigner.cs
- SchemaImporter.cs
- Help.cs
- ExtendedTransformFactory.cs
- QualifiedCellIdBoolean.cs
- OutKeywords.cs
- TrustLevel.cs
- ExpressionParser.cs
- AssertFilter.cs
- MdiWindowListStrip.cs
- CmsInterop.cs
- RealizationDrawingContextWalker.cs
- VirtualPath.cs
- PropertyKey.cs
- NamespaceCollection.cs
- BufferedStream.cs
- NumberSubstitution.cs
- _SafeNetHandles.cs
- FixedTextSelectionProcessor.cs
- TiffBitmapEncoder.cs
- ItemList.cs
- DesignerDataTable.cs
- Object.cs
- LockRecursionException.cs
- ReservationNotFoundException.cs
- BufferedWebEventProvider.cs
- GetPageNumberCompletedEventArgs.cs
- TimeSpanOrInfiniteConverter.cs
- HiddenField.cs
- storagemappingitemcollection.viewdictionary.cs
- Dictionary.cs
- TextTrailingCharacterEllipsis.cs
- WizardDesigner.cs
- PolyQuadraticBezierSegment.cs
- Page.cs
- KeyConstraint.cs
- PngBitmapDecoder.cs
- SetterBase.cs
- HttpModuleAction.cs
- ActionItem.cs
- WebSysDescriptionAttribute.cs
- CommandManager.cs
- ProcessHostMapPath.cs
- InternalSafeNativeMethods.cs
- SQLUtility.cs
- SetIterators.cs
- SafeLocalMemHandle.cs
- SchemaNamespaceManager.cs
- BinaryFormatterWriter.cs
- HexParser.cs
- CultureTableRecord.cs
- Parameter.cs
- WmpBitmapDecoder.cs
- DBCSCodePageEncoding.cs
- ServiceChannelManager.cs
- DataMemberAttribute.cs
- ViewStateModeByIdAttribute.cs
- ButtonBaseAutomationPeer.cs
- MachineSettingsSection.cs
- ClientRuntimeConfig.cs
- DictionaryBase.cs
- _SSPIWrapper.cs
- TdsRecordBufferSetter.cs
- ImageSource.cs
- ContextMarshalException.cs
- PageCatalogPart.cs
- ReadOnlyNameValueCollection.cs
- Ipv6Element.cs
- UncommonField.cs
- RequiredAttributeAttribute.cs
- RightsManagementEncryptionTransform.cs
- ComponentResourceKeyConverter.cs
- EncryptedPackage.cs
- TripleDESCryptoServiceProvider.cs
- RotateTransform.cs
- Command.cs