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
- CodeIterationStatement.cs
- UserUseLicenseDictionaryLoader.cs
- localization.cs
- _DisconnectOverlappedAsyncResult.cs
- XmlDocumentFragment.cs
- ParameterToken.cs
- FixedLineResult.cs
- FlowchartDesigner.Helpers.cs
- TemplateApplicationHelper.cs
- CodeDOMUtility.cs
- Types.cs
- DbModificationClause.cs
- CodeMemberMethod.cs
- KnownTypesHelper.cs
- CodeAccessPermission.cs
- BufferCache.cs
- PlaceHolder.cs
- ImageMapEventArgs.cs
- MethodToken.cs
- CoTaskMemUnicodeSafeHandle.cs
- ProtocolInformationWriter.cs
- FileStream.cs
- BasicKeyConstraint.cs
- GeneralTransform.cs
- TreeNodeEventArgs.cs
- DataTemplateSelector.cs
- path.cs
- WebPartConnectionsCloseVerb.cs
- ParserExtension.cs
- TokenizerHelper.cs
- XmlSchemaSet.cs
- SymbolMethod.cs
- UnsafeMethods.cs
- _AutoWebProxyScriptEngine.cs
- SQLMembershipProvider.cs
- NavigationProperty.cs
- UpdateManifestForBrowserApplication.cs
- ColumnHeaderConverter.cs
- SqlMethodAttribute.cs
- SystemFonts.cs
- CustomTypeDescriptor.cs
- ToolStripPanel.cs
- TypeTypeConverter.cs
- HttpWebResponse.cs
- Point3DAnimationUsingKeyFrames.cs
- OutOfProcStateClientManager.cs
- EntryIndex.cs
- TracedNativeMethods.cs
- CharConverter.cs
- NetNamedPipeBindingCollectionElement.cs
- OracleMonthSpan.cs
- TableLayout.cs
- DiffuseMaterial.cs
- UnsafeNetInfoNativeMethods.cs
- StorageConditionPropertyMapping.cs
- ArgumentValue.cs
- UInt32Storage.cs
- TransportConfigurationTypeElementCollection.cs
- ButtonBase.cs
- StickyNoteAnnotations.cs
- PtsPage.cs
- TouchesOverProperty.cs
- ItemList.cs
- DataGridCaption.cs
- SeparatorAutomationPeer.cs
- XamlClipboardData.cs
- BookmarkEventArgs.cs
- VisualStyleInformation.cs
- ADMembershipProvider.cs
- TextDecorationCollectionConverter.cs
- SqlGatherConsumedAliases.cs
- CommentEmitter.cs
- Part.cs
- SafeNativeMethodsMilCoreApi.cs
- ByteStack.cs
- LayoutEngine.cs
- PathGradientBrush.cs
- TypeTypeConverter.cs
- MenuItemBindingCollection.cs
- Rotation3DAnimationUsingKeyFrames.cs
- HttpProfileBase.cs
- ColumnPropertiesGroup.cs
- AdapterUtil.cs
- CustomErrorsSection.cs
- CursorConverter.cs
- FormattedTextSymbols.cs
- ToolboxItemCollection.cs
- StylusPointPropertyInfoDefaults.cs
- LiteralSubsegment.cs
- HelpEvent.cs
- ProtocolElement.cs
- translator.cs
- Rule.cs
- ByteStreamGeometryContext.cs
- GlobalAclOperationRequirement.cs
- FileDialogCustomPlace.cs
- RegisteredArrayDeclaration.cs
- InfoCardBaseException.cs
- ManipulationStartedEventArgs.cs
- WindowsSysHeader.cs