Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListManagerBindingsCollection.cs
- LambdaCompiler.Lambda.cs
- ProfessionalColorTable.cs
- validationstate.cs
- DesignerCommandSet.cs
- PerformanceCounterPermission.cs
- DataStreams.cs
- LineSegment.cs
- NamespaceEmitter.cs
- GeneralTransform.cs
- SR.cs
- XMLSchema.cs
- DispatcherFrame.cs
- NamespaceList.cs
- MarshalByValueComponent.cs
- Journaling.cs
- TypeSystemProvider.cs
- AsyncPostBackErrorEventArgs.cs
- LinqToSqlWrapper.cs
- RequestCacheEntry.cs
- ASCIIEncoding.cs
- SafeCryptContextHandle.cs
- _LocalDataStore.cs
- WrappedIUnknown.cs
- OleDbParameterCollection.cs
- TemplateContainer.cs
- PageParserFilter.cs
- RowCache.cs
- XmlEnumAttribute.cs
- ThreadInterruptedException.cs
- IWorkflowDebuggerService.cs
- QueryOptionExpression.cs
- DSASignatureDeformatter.cs
- VisualProxy.cs
- WebPartEditorCancelVerb.cs
- WindowsFormsSectionHandler.cs
- HasCopySemanticsAttribute.cs
- TextTreeObjectNode.cs
- PerfCounterSection.cs
- FamilyMap.cs
- CatalogZoneBase.cs
- ManipulationStartingEventArgs.cs
- DbMetaDataColumnNames.cs
- DataProviderNameConverter.cs
- Slider.cs
- ExtensionWindowHeader.cs
- SatelliteContractVersionAttribute.cs
- XmlSchemaObjectCollection.cs
- ThreadStaticAttribute.cs
- ListBoxChrome.cs
- QueryActivatableWorkflowsCommand.cs
- BuildManagerHost.cs
- ObjectDataSourceMethodEditor.cs
- OleDbConnectionInternal.cs
- SystemIPInterfaceProperties.cs
- CompoundFileIOPermission.cs
- InternalDuplexChannelListener.cs
- CodeAccessSecurityEngine.cs
- AuthenticationConfig.cs
- PeerName.cs
- StringSorter.cs
- DtrList.cs
- _TLSstream.cs
- RootBrowserWindowAutomationPeer.cs
- QilTargetType.cs
- RtType.cs
- LookupNode.cs
- DataObjectAttribute.cs
- SqlDuplicator.cs
- CqlIdentifiers.cs
- DataSourceComponent.cs
- httpserverutility.cs
- BuildManagerHost.cs
- DeviceSpecificDialogCachedState.cs
- DataGridViewCellStateChangedEventArgs.cs
- Int32Rect.cs
- StringResourceManager.cs
- ScrollProviderWrapper.cs
- Model3D.cs
- TagPrefixCollection.cs
- ModifyActivitiesPropertyDescriptor.cs
- ExpressionVisitor.cs
- Vector3dCollection.cs
- MethodBuilderInstantiation.cs
- CollectionContainer.cs
- ListItem.cs
- SspiHelper.cs
- IfAction.cs
- Control.cs
- MsmqHostedTransportConfiguration.cs
- WsdlHelpGeneratorElement.cs
- Size3DValueSerializer.cs
- TraceShell.cs
- JsonDeserializer.cs
- AutomationElement.cs
- XmlAtomicValue.cs
- XXXOnTypeBuilderInstantiation.cs
- TextBoxBase.cs
- XsdDuration.cs
- CacheModeConverter.cs