Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- EventLog.cs
- ReservationNotFoundException.cs
- CreatingCookieEventArgs.cs
- DispatcherFrame.cs
- WebZone.cs
- WindowsSysHeader.cs
- AuthenticationService.cs
- MemoryRecordBuffer.cs
- WinCategoryAttribute.cs
- Package.cs
- EdmItemError.cs
- PhysicalAddress.cs
- DictionaryBase.cs
- ScaleTransform3D.cs
- ServiceObjectContainer.cs
- DbConnectionStringCommon.cs
- IListConverters.cs
- StringPropertyBuilder.cs
- XmlSortKeyAccumulator.cs
- EventListener.cs
- TextElementCollectionHelper.cs
- WmlValidationSummaryAdapter.cs
- ByteStreamMessage.cs
- BindingContext.cs
- Listbox.cs
- Single.cs
- MessageLogger.cs
- RoleManagerSection.cs
- HyperLink.cs
- RawUIStateInputReport.cs
- FileDataSourceCache.cs
- RegisteredScript.cs
- ImageMap.cs
- ProtocolsConfigurationEntry.cs
- FormViewModeEventArgs.cs
- TextEditorTyping.cs
- HashAlgorithm.cs
- TypedRowHandler.cs
- IdnMapping.cs
- AttributedMetaModel.cs
- DrawingGroup.cs
- DetailsViewPageEventArgs.cs
- CharacterBufferReference.cs
- BrowserDefinitionCollection.cs
- LinkedResourceCollection.cs
- SecurityState.cs
- DynamicVirtualDiscoSearcher.cs
- ConditionalBranch.cs
- VisualBrush.cs
- SiteMapNodeItemEventArgs.cs
- XmlSchemaObject.cs
- DataControlButton.cs
- MetadataArtifactLoaderFile.cs
- WorkflowServiceNamespace.cs
- KeyTimeConverter.cs
- MethodAccessException.cs
- ErrorFormatter.cs
- RelationshipEnd.cs
- CodeSubDirectory.cs
- PropertyTabChangedEvent.cs
- SolidColorBrush.cs
- CodeGenHelper.cs
- SqlInternalConnection.cs
- PrinterSettings.cs
- CallbackValidator.cs
- SubclassTypeValidator.cs
- NetworkCredential.cs
- XslTransformFileEditor.cs
- SwitchAttribute.cs
- VarInfo.cs
- PackageDigitalSignature.cs
- CommonRemoteMemoryBlock.cs
- AssemblyName.cs
- COM2ComponentEditor.cs
- MsmqIntegrationChannelFactory.cs
- AppearanceEditorPart.cs
- PackagingUtilities.cs
- FunctionDescription.cs
- TransactionContextValidator.cs
- DbMetaDataCollectionNames.cs
- ParserHooks.cs
- Oid.cs
- CodeSubDirectoriesCollection.cs
- Rotation3DAnimation.cs
- DetailsViewPageEventArgs.cs
- CodeTypeMember.cs
- Math.cs
- HttpFileCollection.cs
- Rules.cs
- SqlConnectionHelper.cs
- WmpBitmapDecoder.cs
- ButtonChrome.cs
- DataGridViewCellValidatingEventArgs.cs
- HttpCachePolicyElement.cs
- XmlJsonReader.cs
- BindableAttribute.cs
- DataTableNameHandler.cs
- StaticResourceExtension.cs
- RepeaterCommandEventArgs.cs
- SerializationSectionGroup.cs