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
- Serialization.cs
- NativeMethods.cs
- BrushValueSerializer.cs
- ReferencedAssembly.cs
- Missing.cs
- DataContractAttribute.cs
- StubHelpers.cs
- HttpApplication.cs
- EnterpriseServicesHelper.cs
- MsmqIntegrationElement.cs
- DataListItem.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- PrincipalPermission.cs
- Brush.cs
- RandomDelayQueuedSendsAsyncResult.cs
- WebPartEditorOkVerb.cs
- codemethodreferenceexpression.cs
- DeflateStream.cs
- _SafeNetHandles.cs
- RightsDocument.cs
- TextTreeRootNode.cs
- QilTargetType.cs
- TemplateControl.cs
- WebExceptionStatus.cs
- MessageQueuePermission.cs
- ContextMenu.cs
- FastEncoder.cs
- ReferenceEqualityComparer.cs
- TimersDescriptionAttribute.cs
- mansign.cs
- BoundColumn.cs
- HandleCollector.cs
- HoistedLocals.cs
- HitTestFilterBehavior.cs
- ListBoxAutomationPeer.cs
- ToolTipAutomationPeer.cs
- SourceItem.cs
- ReliabilityContractAttribute.cs
- LogWriteRestartAreaState.cs
- WindowsEditBoxRange.cs
- ExpressionEditorSheet.cs
- StringComparer.cs
- SecureStringHasher.cs
- LifetimeServices.cs
- SQLByteStorage.cs
- TypeContext.cs
- SpeechSynthesizer.cs
- WorkflowItemsPresenter.cs
- ComboBox.cs
- IconConverter.cs
- SystemResources.cs
- PersistenceException.cs
- AnnotationComponentManager.cs
- MarginCollapsingState.cs
- Query.cs
- InvalidDocumentContentsException.cs
- LambdaCompiler.ControlFlow.cs
- DataGridHelper.cs
- InstanceContext.cs
- DBParameter.cs
- ConfigurationProperty.cs
- StreamGeometry.cs
- CollectionBase.cs
- DataGridViewCellStyleEditor.cs
- SizeLimitedCache.cs
- BitmapDecoder.cs
- DataServiceContext.cs
- ConnectionStringsSection.cs
- TypedTableBase.cs
- FixedDocumentSequencePaginator.cs
- NullableDecimalSumAggregationOperator.cs
- ChildTable.cs
- FlowLayoutPanelDesigner.cs
- CounterSample.cs
- ConfigXmlText.cs
- FileDialogCustomPlacesCollection.cs
- IdnElement.cs
- PeerResolverElement.cs
- ChangePassword.cs
- CompilerCollection.cs
- TabletCollection.cs
- RepeatInfo.cs
- BinaryUtilClasses.cs
- ContentValidator.cs
- SRef.cs
- SQLInt32.cs
- ProgressBarRenderer.cs
- ResXDataNode.cs
- WpfMemberInvoker.cs
- SelectorItemAutomationPeer.cs
- MonitoringDescriptionAttribute.cs
- DrawingImage.cs
- BamlStream.cs
- DesignTimeParseData.cs
- HttpUnhandledOperationInvoker.cs
- WsdlWriter.cs
- querybuilder.cs
- TrackingMemoryStream.cs
- RuntimeIdentifierPropertyAttribute.cs
- HitTestWithPointDrawingContextWalker.cs