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
- CodeDomSerializer.cs
- codemethodreferenceexpression.cs
- FileChangesMonitor.cs
- StorageFunctionMapping.cs
- DateTimeStorage.cs
- DbConnectionPool.cs
- DependencyPropertyAttribute.cs
- ListViewItemMouseHoverEvent.cs
- GenericArgumentsUpdater.cs
- Brush.cs
- ValidatorCompatibilityHelper.cs
- ChildrenQuery.cs
- IntSecurity.cs
- HScrollBar.cs
- OutputCacheSection.cs
- CompositeScriptReference.cs
- HtmlControlPersistable.cs
- CachedFontFamily.cs
- SystemGatewayIPAddressInformation.cs
- MarshalDirectiveException.cs
- IPeerNeighbor.cs
- configsystem.cs
- ParallelDesigner.cs
- HotSpot.cs
- SubclassTypeValidatorAttribute.cs
- CharStorage.cs
- WebPartHeaderCloseVerb.cs
- UrlMappingCollection.cs
- SupportsEventValidationAttribute.cs
- DirectoryObjectSecurity.cs
- HtmlControlPersistable.cs
- CheckBoxField.cs
- Accessible.cs
- FastEncoder.cs
- ExeContext.cs
- CompilerGeneratedAttribute.cs
- BlobPersonalizationState.cs
- MemberDomainMap.cs
- SchemaContext.cs
- GetPageNumberCompletedEventArgs.cs
- FontStretch.cs
- Vector3DCollection.cs
- BitmapSourceSafeMILHandle.cs
- InkPresenterAutomationPeer.cs
- ReadOnlyHierarchicalDataSourceView.cs
- DataSetMappper.cs
- BitmapVisualManager.cs
- DataGridViewComboBoxEditingControl.cs
- XmlSecureResolver.cs
- AssertUtility.cs
- SizeAnimationBase.cs
- TextViewSelectionProcessor.cs
- ConfigurationSectionHelper.cs
- DataControlFieldsEditor.cs
- SqlConnectionString.cs
- PassportAuthenticationEventArgs.cs
- IncrementalHitTester.cs
- TemplateControl.cs
- TypedServiceChannelBuilder.cs
- StringBlob.cs
- ValidatingPropertiesEventArgs.cs
- SettingsBindableAttribute.cs
- DetailsViewPageEventArgs.cs
- ToolStripDropTargetManager.cs
- XmlSchemaRedefine.cs
- CreateUserWizardStep.cs
- ProfileGroupSettingsCollection.cs
- CharacterMetrics.cs
- APCustomTypeDescriptor.cs
- AnimationException.cs
- TextProviderWrapper.cs
- IdnMapping.cs
- OracleSqlParser.cs
- TableItemPatternIdentifiers.cs
- Model3DGroup.cs
- BlurEffect.cs
- EntityDataSourceValidationException.cs
- TextTreeRootNode.cs
- AsyncCompletedEventArgs.cs
- WebServicesInteroperability.cs
- ButtonBaseDesigner.cs
- AppDomainFactory.cs
- FontFaceLayoutInfo.cs
- ImageCreator.cs
- PowerModeChangedEventArgs.cs
- GetMemberBinder.cs
- CollectionContainer.cs
- FixedSOMTableCell.cs
- JournalEntryStack.cs
- altserialization.cs
- CollectionChangedEventManager.cs
- ScrollProviderWrapper.cs
- AnchoredBlock.cs
- PowerModeChangedEventArgs.cs
- QilInvoke.cs
- ConfigurationValue.cs
- FileResponseElement.cs
- VisemeEventArgs.cs
- dsa.cs
- SkinBuilder.cs