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
- XmlBinaryReader.cs
- basevalidator.cs
- TextContainerChangeEventArgs.cs
- __Filters.cs
- DbConnectionStringBuilder.cs
- DBConcurrencyException.cs
- MaskInputRejectedEventArgs.cs
- XmlConvert.cs
- TreeNodeCollection.cs
- X509CertificateChain.cs
- ImageSource.cs
- WebPartDisplayModeCollection.cs
- KeyValueSerializer.cs
- RuntimeConfig.cs
- HtmlSelect.cs
- ControlParameter.cs
- ParallelEnumerable.cs
- SemanticBasicElement.cs
- TreeView.cs
- NoneExcludedImageIndexConverter.cs
- HttpWebResponse.cs
- CodeDirectoryCompiler.cs
- InheritablePropertyChangeInfo.cs
- WebPartTransformer.cs
- TextParaLineResult.cs
- RoutedEventValueSerializer.cs
- FixedSOMLineCollection.cs
- TagMapInfo.cs
- _BaseOverlappedAsyncResult.cs
- ExceptionUtil.cs
- DataGridHelper.cs
- XmlDeclaration.cs
- PropertyChange.cs
- ServicesUtilities.cs
- TdsValueSetter.cs
- TimelineGroup.cs
- ThicknessKeyFrameCollection.cs
- FormConverter.cs
- ScrollEventArgs.cs
- Validator.cs
- PipeStream.cs
- SoapServerMessage.cs
- WizardDesigner.cs
- InternalResources.cs
- ParseHttpDate.cs
- ResolveNameEventArgs.cs
- WebConfigurationHostFileChange.cs
- ComplexPropertyEntry.cs
- DispatcherTimer.cs
- SqlDataSourceCommandEventArgs.cs
- ObjectDataSourceView.cs
- FileRecordSequenceHelper.cs
- RowsCopiedEventArgs.cs
- AtlasWeb.Designer.cs
- TargetConverter.cs
- TaiwanLunisolarCalendar.cs
- DataGridViewCellParsingEventArgs.cs
- Codec.cs
- Encoder.cs
- NestedContainer.cs
- Opcode.cs
- PropertyDescriptorCollection.cs
- PrincipalPermissionMode.cs
- PrimitiveDataContract.cs
- Parser.cs
- TextSimpleMarkerProperties.cs
- DataGridRow.cs
- ChangeNode.cs
- DataControlButton.cs
- MatrixConverter.cs
- XmlHierarchyData.cs
- LoginView.cs
- PowerStatus.cs
- FamilyTypefaceCollection.cs
- ListViewSelectEventArgs.cs
- TaskFormBase.cs
- MsmqIntegrationOutputChannel.cs
- DataBindingValueUIHandler.cs
- DbExpressionVisitor_TResultType.cs
- RestHandlerFactory.cs
- EntityModelSchemaGenerator.cs
- WindowsHyperlink.cs
- AndCondition.cs
- Int32KeyFrameCollection.cs
- NotificationContext.cs
- RegexCode.cs
- PeerPresenceInfo.cs
- GlobalizationSection.cs
- precedingquery.cs
- DataGridViewCheckBoxColumn.cs
- ReservationCollection.cs
- BroadcastEventHelper.cs
- ExtenderProviderService.cs
- MaterialGroup.cs
- TypeSystem.cs
- RMEnrollmentPage3.cs
- ObjectViewEntityCollectionData.cs
- Italic.cs
- PassportAuthenticationEventArgs.cs
- SystemColors.cs