Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- PseudoWebRequest.cs
- RadioButtonPopupAdapter.cs
- Registry.cs
- TypeLibConverter.cs
- ExtensibleClassFactory.cs
- GlobalizationAssembly.cs
- RtfToXamlLexer.cs
- lengthconverter.cs
- WaitHandleCannotBeOpenedException.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- ActivityXamlServices.cs
- BitHelper.cs
- PerformanceCounterPermissionEntryCollection.cs
- MenuBase.cs
- CheckBoxStandardAdapter.cs
- JoinGraph.cs
- SubclassTypeValidator.cs
- Stroke.cs
- StreamGeometryContext.cs
- BindingManagerDataErrorEventArgs.cs
- DbLambda.cs
- EntitySetDataBindingList.cs
- RC2CryptoServiceProvider.cs
- SimpleLine.cs
- CacheOutputQuery.cs
- _NetworkingPerfCounters.cs
- LocatorManager.cs
- TracingConnection.cs
- filewebresponse.cs
- AnnotationResourceChangedEventArgs.cs
- SqlDataReader.cs
- PeerCollaborationPermission.cs
- DocumentAutomationPeer.cs
- GifBitmapDecoder.cs
- PerformanceCountersElement.cs
- PackageDigitalSignatureManager.cs
- Simplifier.cs
- ParsedRoute.cs
- CompiledXpathExpr.cs
- SecurityImpersonationBehavior.cs
- ParallelDesigner.cs
- Helper.cs
- _AutoWebProxyScriptEngine.cs
- UnconditionalPolicy.cs
- CodeObject.cs
- FlowDocumentReader.cs
- PermissionRequestEvidence.cs
- DataSourceHelper.cs
- WebBrowser.cs
- XmlReaderDelegator.cs
- PartManifestEntry.cs
- HScrollBar.cs
- ContainerUtilities.cs
- CLRBindingWorker.cs
- ReadOnlyCollection.cs
- QilPatternVisitor.cs
- RenderingEventArgs.cs
- Pair.cs
- SourceFilter.cs
- HttpServerVarsCollection.cs
- StdValidatorsAndConverters.cs
- StreamGeometry.cs
- StackSpiller.Generated.cs
- CollectionEditor.cs
- CodeMemberField.cs
- JpegBitmapEncoder.cs
- ZipIOModeEnforcingStream.cs
- ToolStripDropDownDesigner.cs
- EventListenerClientSide.cs
- EmbossBitmapEffect.cs
- SchemaMapping.cs
- DataGridViewColumnEventArgs.cs
- Range.cs
- DataControlLinkButton.cs
- ObservableCollection.cs
- SectionInput.cs
- CanonicalizationDriver.cs
- DocumentPageTextView.cs
- SubqueryRules.cs
- CodeMethodInvokeExpression.cs
- GPRECT.cs
- DocumentSequenceHighlightLayer.cs
- CorrelationRequestContext.cs
- KeyInfo.cs
- RefExpr.cs
- StatusBarItemAutomationPeer.cs
- SQLGuid.cs
- SeekStoryboard.cs
- UIPermission.cs
- GridViewPageEventArgs.cs
- ControlPager.cs
- ItemCollection.cs
- EdgeModeValidation.cs
- DetailsViewPageEventArgs.cs
- EntityContainerAssociationSetEnd.cs
- WebSysDescriptionAttribute.cs
- ActivationWorker.cs
- SqlBinder.cs
- TrackingMemoryStreamFactory.cs
- TextTreeFixupNode.cs