Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- PointCollection.cs
- DataGridViewAdvancedBorderStyle.cs
- XmlILStorageConverter.cs
- DesignerVerbCollection.cs
- SequenceDesigner.xaml.cs
- MenuAutomationPeer.cs
- ActivityCollectionMarkupSerializer.cs
- BaseValidator.cs
- OdbcConnectionHandle.cs
- KeyboardEventArgs.cs
- DataRelationCollection.cs
- LoadedOrUnloadedOperation.cs
- DataGridItem.cs
- WrappedIUnknown.cs
- KeyConverter.cs
- RijndaelManagedTransform.cs
- SQLMoney.cs
- LinkArea.cs
- FlowDocument.cs
- Lock.cs
- FileCodeGroup.cs
- ShortcutKeysEditor.cs
- GeneralTransform3DTo2DTo3D.cs
- CheckBoxRenderer.cs
- ParentQuery.cs
- WindowsRichEditRange.cs
- ImageFormatConverter.cs
- MimeObjectFactory.cs
- Stroke2.cs
- ToolStripItemClickedEventArgs.cs
- RemotingConfigParser.cs
- DbQueryCommandTree.cs
- ExtenderControl.cs
- GorillaCodec.cs
- CompilationSection.cs
- ButtonFieldBase.cs
- ConnectionInterfaceCollection.cs
- XsdValidatingReader.cs
- InfocardChannelParameter.cs
- WorkflowDesignerMessageFilter.cs
- TrustManagerMoreInformation.cs
- ConfigXmlText.cs
- QilInvokeLateBound.cs
- StringUtil.cs
- CultureInfo.cs
- TextSelectionHighlightLayer.cs
- InkPresenter.cs
- SequenceNumber.cs
- ProviderUtil.cs
- RequestCachingSection.cs
- ValidationSummary.cs
- InstanceData.cs
- HitTestResult.cs
- SqlConnectionString.cs
- NavigationPropertyEmitter.cs
- PeerPresenceInfo.cs
- EntityContainerEntitySetDefiningQuery.cs
- MultipartIdentifier.cs
- DataGridViewCellStyle.cs
- Int16AnimationUsingKeyFrames.cs
- ProxyWebPartManagerDesigner.cs
- ObjectViewFactory.cs
- ManipulationLogic.cs
- InputScopeManager.cs
- BindingMemberInfo.cs
- PropVariant.cs
- PropertyReferenceSerializer.cs
- InputElement.cs
- XmlElementAttributes.cs
- XmlBinaryWriterSession.cs
- DataServiceCollectionOfT.cs
- NominalTypeEliminator.cs
- SByteStorage.cs
- DataPagerFieldCommandEventArgs.cs
- CheckableControlBaseAdapter.cs
- DbMetaDataFactory.cs
- UnsafeNativeMethodsTablet.cs
- SafeProcessHandle.cs
- SqlConnectionStringBuilder.cs
- DaylightTime.cs
- DbgCompiler.cs
- StreamReader.cs
- IPEndPoint.cs
- UnknownBitmapDecoder.cs
- ConfigXmlText.cs
- PkcsMisc.cs
- SchemaObjectWriter.cs
- EventLogPermissionEntry.cs
- SortExpressionBuilder.cs
- DbDataSourceEnumerator.cs
- TripleDES.cs
- LogManagementAsyncResult.cs
- ZipIOCentralDirectoryFileHeader.cs
- TriggerCollection.cs
- NegatedCellConstant.cs
- XamlStream.cs
- DesignTimeVisibleAttribute.cs
- TitleStyle.cs
- Version.cs
- EmptyEnumerator.cs