Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- mediaeventshelper.cs
- SafeNativeMethods.cs
- GeometryModel3D.cs
- EntityDataSource.cs
- ResourceSetExpression.cs
- CodeMemberProperty.cs
- MenuItemCollection.cs
- ActivityLocationReferenceEnvironment.cs
- OleDbSchemaGuid.cs
- CompositeControl.cs
- DrawingCollection.cs
- DetailsViewPageEventArgs.cs
- BinaryUtilClasses.cs
- XmlSchemaObject.cs
- Nullable.cs
- BufferedGraphicsContext.cs
- objectresult_tresulttype.cs
- ByteStreamGeometryContext.cs
- Int32KeyFrameCollection.cs
- ProcessingInstructionAction.cs
- UniqueEventHelper.cs
- DataReaderContainer.cs
- _TransmitFileOverlappedAsyncResult.cs
- ContractDescription.cs
- PropertiesTab.cs
- ToolStripGripRenderEventArgs.cs
- IndependentlyAnimatedPropertyMetadata.cs
- OleDbReferenceCollection.cs
- ToolStripHighContrastRenderer.cs
- UnsafeNativeMethods.cs
- DocComment.cs
- SqlRewriteScalarSubqueries.cs
- RowUpdatingEventArgs.cs
- MinimizableAttributeTypeConverter.cs
- CodeAttributeArgument.cs
- Win32SafeHandles.cs
- Int32AnimationUsingKeyFrames.cs
- PageEventArgs.cs
- MenuItemStyleCollection.cs
- FileSystemEventArgs.cs
- WindowsAuthenticationEventArgs.cs
- ColumnResizeUndoUnit.cs
- SemanticTag.cs
- ServiceProviders.cs
- DoubleIndependentAnimationStorage.cs
- JpegBitmapDecoder.cs
- Normalization.cs
- SettingsPropertyValueCollection.cs
- DataGridViewUtilities.cs
- Annotation.cs
- CharacterMetrics.cs
- CompilerTypeWithParams.cs
- Compress.cs
- IxmlLineInfo.cs
- CodeEventReferenceExpression.cs
- RoleGroupCollection.cs
- DispatchOperationRuntime.cs
- ScriptingRoleServiceSection.cs
- NamespaceExpr.cs
- WorkflowViewElement.cs
- wgx_sdk_version.cs
- ObjectReaderCompiler.cs
- Compiler.cs
- XsltFunctions.cs
- SwitchElementsCollection.cs
- DiagnosticSection.cs
- Stylesheet.cs
- TextTreeText.cs
- WasAdminWrapper.cs
- VerificationException.cs
- FileLogRecordHeader.cs
- EnumBuilder.cs
- ZoneMembershipCondition.cs
- ConfigViewGenerator.cs
- XmlHierarchyData.cs
- ProcessHostServerConfig.cs
- SQLResource.cs
- Roles.cs
- FixedFlowMap.cs
- Cursor.cs
- CreateUserWizardStep.cs
- MatrixKeyFrameCollection.cs
- ContentOperations.cs
- AutomationEventArgs.cs
- CodeGotoStatement.cs
- _RequestLifetimeSetter.cs
- InertiaExpansionBehavior.cs
- MenuCommand.cs
- GridViewColumnCollection.cs
- DataObject.cs
- AdPostCacheSubstitution.cs
- MsmqDecodeHelper.cs
- TransportReplyChannelAcceptor.cs
- FormCollection.cs
- AssertHelper.cs
- QueryOutputWriter.cs
- OracleConnectionString.cs
- ListViewItemEventArgs.cs
- Brush.cs
- ObjectDataSourceFilteringEventArgs.cs