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
- DataGridViewCellEventArgs.cs
- StyleTypedPropertyAttribute.cs
- Pointer.cs
- FamilyMap.cs
- LogEntryHeaderSerializer.cs
- HTMLTagNameToTypeMapper.cs
- ConfigXmlWhitespace.cs
- DetailsViewInsertEventArgs.cs
- DesignerValidationSummaryAdapter.cs
- CroppedBitmap.cs
- Hex.cs
- VisualStyleElement.cs
- AspCompat.cs
- CalendarTable.cs
- StickyNote.cs
- WebPartZone.cs
- SocketAddress.cs
- WarningException.cs
- Animatable.cs
- ContainerControl.cs
- GenericEnumConverter.cs
- SQLInt64Storage.cs
- WindowsAuthenticationModule.cs
- EncodingStreamWrapper.cs
- IResourceProvider.cs
- Pointer.cs
- OptionalMessageQuery.cs
- Unit.cs
- DataGridViewCellFormattingEventArgs.cs
- XmlSchemaDocumentation.cs
- CommentEmitter.cs
- ImageInfo.cs
- LinkConverter.cs
- XPathParser.cs
- ObjectNotFoundException.cs
- DiscriminatorMap.cs
- ParseHttpDate.cs
- MarkupCompilePass2.cs
- SourceFilter.cs
- ToolStripPanelRow.cs
- DynamicValidatorEventArgs.cs
- Normalization.cs
- XmlnsDictionary.cs
- DockPattern.cs
- XmlHierarchicalDataSourceView.cs
- WriteTimeStream.cs
- SchemaConstraints.cs
- Action.cs
- HebrewCalendar.cs
- ResourceContainer.cs
- GridPatternIdentifiers.cs
- RoutedEventHandlerInfo.cs
- QueueProcessor.cs
- ExpressionVisitor.cs
- QueryableFilterUserControl.cs
- OverflowException.cs
- MetadataArtifactLoaderCompositeFile.cs
- MultiAsyncResult.cs
- RealProxy.cs
- RegexMatchCollection.cs
- ProcessDesigner.cs
- AssociationSetEnd.cs
- MetafileHeaderWmf.cs
- XmlExpressionDumper.cs
- IndicFontClient.cs
- StylusPointPropertyInfo.cs
- SelectionEditor.cs
- SiteMapSection.cs
- SystemFonts.cs
- ScalarOps.cs
- ParallelDesigner.xaml.cs
- TagPrefixInfo.cs
- ImageCodecInfoPrivate.cs
- DeclaredTypeValidator.cs
- PrintingPermissionAttribute.cs
- ContractCodeDomInfo.cs
- WorkflowApplicationException.cs
- FixedSOMLineRanges.cs
- TableLayoutPanelCodeDomSerializer.cs
- MobilePage.cs
- FolderLevelBuildProviderCollection.cs
- XPathDocumentIterator.cs
- SimpleApplicationHost.cs
- BamlLocalizationDictionary.cs
- SelectionChangedEventArgs.cs
- RoleGroup.cs
- Style.cs
- CounterSampleCalculator.cs
- SessionIDManager.cs
- SubstitutionList.cs
- ConnectionInterfaceCollection.cs
- TextLine.cs
- BaseParser.cs
- ScaleTransform.cs
- LineServices.cs
- DataConnectionHelper.cs
- RadioButton.cs
- RijndaelManaged.cs
- BCLDebug.cs
- GridViewUpdatedEventArgs.cs