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
- OperationContextScope.cs
- PageSetupDialog.cs
- DbProviderSpecificTypePropertyAttribute.cs
- RootProjectionNode.cs
- ActivityPropertyReference.cs
- OrthographicCamera.cs
- StatusBarDrawItemEvent.cs
- SqlDataSourceQuery.cs
- MenuItemStyleCollection.cs
- BinaryConverter.cs
- WsatServiceCertificate.cs
- OdbcTransaction.cs
- GridProviderWrapper.cs
- WebPartEditVerb.cs
- DATA_BLOB.cs
- PropertyFilterAttribute.cs
- RequiredAttributeAttribute.cs
- WebPartCatalogCloseVerb.cs
- HtmlLink.cs
- CompilerTypeWithParams.cs
- Encoder.cs
- DynamicQueryStringParameter.cs
- AddressingVersion.cs
- XamlSerializer.cs
- XdrBuilder.cs
- CodeTypeMemberCollection.cs
- OleDbWrapper.cs
- MemberHolder.cs
- IgnoreSectionHandler.cs
- DataListItemCollection.cs
- RuntimeEnvironment.cs
- SqlDataSourceCache.cs
- ValidationEventArgs.cs
- ProfessionalColorTable.cs
- GeneralTransformGroup.cs
- RoleManagerModule.cs
- UpdateProgress.cs
- ActivationArguments.cs
- NetDataContractSerializer.cs
- TextStore.cs
- MenuItemStyle.cs
- HeaderPanel.cs
- AngleUtil.cs
- AsyncCallback.cs
- ListBox.cs
- ConfigurationLocation.cs
- NetPeerTcpBinding.cs
- FormView.cs
- SqlBulkCopyColumnMapping.cs
- CrossContextChannel.cs
- EventLogTraceListener.cs
- Directory.cs
- HttpConfigurationContext.cs
- XAMLParseException.cs
- AuthenticatingEventArgs.cs
- EntityDataSourceWrapperCollection.cs
- ModuleElement.cs
- HttpDictionary.cs
- Invariant.cs
- TreeViewImageKeyConverter.cs
- SerializationStore.cs
- StateWorkerRequest.cs
- TypeNameParser.cs
- StrongTypingException.cs
- XmlSignatureManifest.cs
- SourceLineInfo.cs
- RectAnimationClockResource.cs
- XmlSchemaSubstitutionGroup.cs
- EndpointDiscoveryMetadata.cs
- SqlDuplicator.cs
- WebPartExportVerb.cs
- ObjectRef.cs
- NativeMethods.cs
- ModelFunction.cs
- Stylus.cs
- LinkDescriptor.cs
- DisplayInformation.cs
- XmlSchemaImport.cs
- CodeAttributeDeclarationCollection.cs
- GorillaCodec.cs
- TextTreeTextElementNode.cs
- ControlHelper.cs
- Light.cs
- SupportingTokenSpecification.cs
- ForEachAction.cs
- DtrList.cs
- InfoCardClaim.cs
- ServiceMemoryGates.cs
- InvokeDelegate.cs
- SmiContextFactory.cs
- InputReport.cs
- HeaderedContentControl.cs
- TraceSwitch.cs
- OperationParameterInfoCollection.cs
- ExpressionEvaluator.cs
- ProviderManager.cs
- GenericParameterDataContract.cs
- PieceNameHelper.cs
- DataServiceClientException.cs
- SvcMapFileLoader.cs