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
- LicenseContext.cs
- MsmqUri.cs
- AssemblyBuilder.cs
- TraceData.cs
- CodeTypeParameter.cs
- DataColumnCollection.cs
- FastEncoderWindow.cs
- PointUtil.cs
- XpsSerializerFactory.cs
- AsyncResult.cs
- UnsafeNativeMethods.cs
- PrimitiveList.cs
- WinFormsSpinner.cs
- NamespaceMapping.cs
- StringConcat.cs
- ChtmlTextWriter.cs
- WebHttpBindingCollectionElement.cs
- Span.cs
- Vector3DValueSerializer.cs
- CodeAttributeDeclarationCollection.cs
- Effect.cs
- Model3DGroup.cs
- RequestCachePolicy.cs
- BoundPropertyEntry.cs
- CmsUtils.cs
- SystemEvents.cs
- BitmapFrameDecode.cs
- PropertyBuilder.cs
- Ray3DHitTestResult.cs
- HttpListenerRequest.cs
- HtmlElementCollection.cs
- CacheOutputQuery.cs
- DNS.cs
- XPathItem.cs
- Point.cs
- ListSortDescriptionCollection.cs
- ArithmeticException.cs
- cryptoapiTransform.cs
- XPathExpr.cs
- WebPartConnectionCollection.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- InputReportEventArgs.cs
- HwndProxyElementProvider.cs
- ConfigurationProperty.cs
- ConfigXmlComment.cs
- HostingEnvironment.cs
- GuidConverter.cs
- WSSecurityOneDotOneReceiveSecurityHeader.cs
- PageCatalogPart.cs
- SecurityTokenValidationException.cs
- SetterBaseCollection.cs
- InkCanvasSelection.cs
- RemotingSurrogateSelector.cs
- RegisteredArrayDeclaration.cs
- CellConstantDomain.cs
- SpotLight.cs
- DataGridViewLinkColumn.cs
- TypedElement.cs
- MultiSelectRootGridEntry.cs
- TemplateKeyConverter.cs
- _NetRes.cs
- WsatExtendedInformation.cs
- UnsafeNativeMethods.cs
- LocalsItemDescription.cs
- RecognizerInfo.cs
- ConnectionStringsExpressionBuilder.cs
- ChannelTokenTypeConverter.cs
- MessageSecurityOverTcpElement.cs
- VirtualizedCellInfoCollection.cs
- Win32SafeHandles.cs
- _ConnectStream.cs
- LinqMaximalSubtreeNominator.cs
- ListDataHelper.cs
- StringAnimationUsingKeyFrames.cs
- EncodingInfo.cs
- ManagementObjectSearcher.cs
- UpdateManifestForBrowserApplication.cs
- EditorPartCollection.cs
- TraceUtils.cs
- SizeChangedEventArgs.cs
- storepermissionattribute.cs
- Simplifier.cs
- ProxyAttribute.cs
- ListBase.cs
- LightweightCodeGenerator.cs
- AddInActivator.cs
- UInt16Converter.cs
- ImageSource.cs
- querybuilder.cs
- ContainerSelectorBehavior.cs
- XmlNotation.cs
- GridViewCancelEditEventArgs.cs
- ConvertBinder.cs
- KeyNotFoundException.cs
- CompressEmulationStream.cs
- ErasingStroke.cs
- UmAlQuraCalendar.cs
- DetailsViewPagerRow.cs
- QueryableDataSourceView.cs
- SafeProcessHandle.cs