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
- AdornerPresentationContext.cs
- ConfigXmlComment.cs
- AccessDataSource.cs
- ValidatorUtils.cs
- SafeHandles.cs
- XmlNavigatorStack.cs
- InputGestureCollection.cs
- CollectionViewProxy.cs
- IDQuery.cs
- Transactions.cs
- SmuggledIUnknown.cs
- HttpResponseInternalWrapper.cs
- Path.cs
- Rotation3DKeyFrameCollection.cs
- ListViewUpdatedEventArgs.cs
- RolePrincipal.cs
- BaseTypeViewSchema.cs
- AbstractDataSvcMapFileLoader.cs
- GuidelineCollection.cs
- ExpandSegment.cs
- DivideByZeroException.cs
- SrgsElementFactory.cs
- WebMessageFormatHelper.cs
- ObjectRef.cs
- UnaryQueryOperator.cs
- InternalReceiveMessage.cs
- DesignerCategoryAttribute.cs
- CollectionType.cs
- SpellerStatusTable.cs
- ExtenderProvidedPropertyAttribute.cs
- PublishLicense.cs
- DataServiceHostFactory.cs
- XmlSerializerVersionAttribute.cs
- ResourceReferenceKeyNotFoundException.cs
- ValueUtilsSmi.cs
- BindingNavigator.cs
- CompositeScriptReferenceEventArgs.cs
- EntityFunctions.cs
- X509Certificate2Collection.cs
- EmptyEnumerable.cs
- CustomTrackingRecord.cs
- TableParagraph.cs
- XmlMessageFormatter.cs
- ToolTipService.cs
- DefaultObjectMappingItemCollection.cs
- Select.cs
- SBCSCodePageEncoding.cs
- WsdlInspector.cs
- KnownAssembliesSet.cs
- IFlowDocumentViewer.cs
- ValidationHelper.cs
- DataTableClearEvent.cs
- StrokeNodeData.cs
- CounterCreationDataCollection.cs
- EntityCommand.cs
- XmlQueryType.cs
- MemberDescriptor.cs
- SafeNativeMemoryHandle.cs
- QilParameter.cs
- X509Certificate2.cs
- TransactionsSectionGroup.cs
- Content.cs
- WebEventTraceProvider.cs
- FormattedText.cs
- TextCompositionEventArgs.cs
- CommonDialog.cs
- PinProtectionHelper.cs
- RtfControlWordInfo.cs
- StateWorkerRequest.cs
- ActivityMarkupSerializer.cs
- SoapExtensionTypeElement.cs
- SafeFileHandle.cs
- TextTreeTextNode.cs
- TextLineResult.cs
- RightsManagementEncryptedStream.cs
- FrameworkContextData.cs
- ZoneButton.cs
- NullableFloatSumAggregationOperator.cs
- ResourcePool.cs
- DocumentViewerBaseAutomationPeer.cs
- X509ChainElement.cs
- ObjectHandle.cs
- Vector3DValueSerializer.cs
- Quad.cs
- ImageCodecInfoPrivate.cs
- MemberHolder.cs
- PropertyConverter.cs
- KeyBinding.cs
- AttributeExtensions.cs
- FormattedText.cs
- RegisteredArrayDeclaration.cs
- CryptoKeySecurity.cs
- DataPointer.cs
- ValueType.cs
- FunctionParameter.cs
- FrameworkTextComposition.cs
- MarkupWriter.cs
- ExpressionNormalizer.cs
- NameValuePair.cs
- PostBackTrigger.cs