Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- StatusCommandUI.cs
- Form.cs
- SqlDataSourceSelectingEventArgs.cs
- Metadata.cs
- GenericWebPart.cs
- SecurityHelper.cs
- Int16KeyFrameCollection.cs
- TemplateManager.cs
- Exceptions.cs
- PackUriHelper.cs
- OperationGenerator.cs
- PageEventArgs.cs
- TraceProvider.cs
- SplitContainer.cs
- _SpnDictionary.cs
- SqlDataSourceSelectingEventArgs.cs
- CompatibleComparer.cs
- DataSourceComponent.cs
- BlockCollection.cs
- ProxyWebPartConnectionCollection.cs
- EnumerableCollectionView.cs
- TextTreeRootTextBlock.cs
- Label.cs
- LingerOption.cs
- VoiceObjectToken.cs
- InfoCardTraceRecord.cs
- TcpClientSocketManager.cs
- RuntimeWrappedException.cs
- SqlTransaction.cs
- MethodAccessException.cs
- Verify.cs
- HttpEncoder.cs
- VersionedStream.cs
- ChannelBase.cs
- RadioButtonFlatAdapter.cs
- PolyBezierSegment.cs
- AutoGeneratedField.cs
- KerberosTicketHashIdentifierClause.cs
- SqlStream.cs
- DesignColumn.cs
- ExpressionLink.cs
- diagnosticsswitches.cs
- EventLogConfiguration.cs
- SQLUtility.cs
- oledbmetadatacolumnnames.cs
- UncommonField.cs
- DataGridViewColumnStateChangedEventArgs.cs
- BaseAsyncResult.cs
- WhitespaceRuleLookup.cs
- LinkButton.cs
- DelegatingConfigHost.cs
- InvalidWMPVersionException.cs
- DispatchChannelSink.cs
- EmptyEnumerator.cs
- PropertyGridDesigner.cs
- TypedDataSourceCodeGenerator.cs
- ItemCheckEvent.cs
- DataListCommandEventArgs.cs
- TreeNodeBinding.cs
- UserControlParser.cs
- PerfCounters.cs
- X509ChainPolicy.cs
- InstanceContext.cs
- StrokeCollection.cs
- TextFormatterContext.cs
- Polyline.cs
- BindToObject.cs
- GridSplitter.cs
- InlineUIContainer.cs
- NotEqual.cs
- RsaKeyIdentifierClause.cs
- NamespaceMapping.cs
- EntityContainerEmitter.cs
- SafeRightsManagementPubHandle.cs
- DataGridCellClipboardEventArgs.cs
- ExtractorMetadata.cs
- ExtendedProtectionPolicyElement.cs
- AttributeEmitter.cs
- ErrorFormatterPage.cs
- SchemaElementDecl.cs
- EdmScalarPropertyAttribute.cs
- NavigationWindow.cs
- ApplicationManager.cs
- DbInsertCommandTree.cs
- MasterPageBuildProvider.cs
- PageThemeBuildProvider.cs
- StringValidator.cs
- UnknownBitmapDecoder.cs
- _ProxyChain.cs
- TcpTransportBindingElement.cs
- SchemaName.cs
- OrthographicCamera.cs
- WeakReferenceEnumerator.cs
- ScrollBar.cs
- NativeRecognizer.cs
- TextTrailingCharacterEllipsis.cs
- ConfigurationProperty.cs
- BasicViewGenerator.cs
- DataSourceXmlTextReader.cs
- OracleRowUpdatingEventArgs.cs