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
- XmlNamedNodeMap.cs
- WCFBuildProvider.cs
- RotateTransform.cs
- NumberFunctions.cs
- WebPartHelpVerb.cs
- SqlDelegatedTransaction.cs
- AutoResetEvent.cs
- ControlPropertyNameConverter.cs
- Trace.cs
- MailAddress.cs
- StrokeCollectionConverter.cs
- ImageMap.cs
- ExpandedProjectionNode.cs
- ContextMenuService.cs
- IPEndPointCollection.cs
- OrderedHashRepartitionStream.cs
- Transform3D.cs
- CollectionConverter.cs
- DragStartedEventArgs.cs
- XmlNamespaceMapping.cs
- EditingCommands.cs
- ScriptHandlerFactory.cs
- BitmapEffectGeneralTransform.cs
- PointAnimationClockResource.cs
- CollectionView.cs
- Calendar.cs
- XPathBuilder.cs
- XslTransform.cs
- ScriptingProfileServiceSection.cs
- OrderedEnumerableRowCollection.cs
- SettingsPropertyWrongTypeException.cs
- FormatterServicesNoSerializableCheck.cs
- Visual3D.cs
- DoubleStorage.cs
- XPathPatternParser.cs
- VolatileEnlistmentMultiplexing.cs
- AsyncOperationManager.cs
- CssStyleCollection.cs
- PolicyException.cs
- CaseStatementSlot.cs
- LayoutDump.cs
- TrustLevel.cs
- WsdlBuildProvider.cs
- ObjectListComponentEditor.cs
- Expr.cs
- Synchronization.cs
- CalendarAutoFormatDialog.cs
- SqlConnectionHelper.cs
- WebPartConnectionsCloseVerb.cs
- X509CertificateInitiatorServiceCredential.cs
- OutputCacheProfileCollection.cs
- SymbolTable.cs
- EdmProperty.cs
- GenericFlowSwitchHelper.cs
- XmlEncoding.cs
- xmlsaver.cs
- ArgumentException.cs
- SamlNameIdentifierClaimResource.cs
- FilterRepeater.cs
- ExtentKey.cs
- HtmlUtf8RawTextWriter.cs
- Tool.cs
- ImageMetadata.cs
- TrustManager.cs
- PasswordRecovery.cs
- ServiceDescriptionReflector.cs
- ObjectRef.cs
- streamingZipPartStream.cs
- Object.cs
- PersonalizableTypeEntry.cs
- Comparer.cs
- RemotingException.cs
- Debug.cs
- InfoCardTrace.cs
- EntityType.cs
- TemplatePartAttribute.cs
- Misc.cs
- SiteMap.cs
- MemberProjectionIndex.cs
- AppearanceEditorPart.cs
- HttpWebResponse.cs
- HideDisabledControlAdapter.cs
- Keywords.cs
- EncodedStreamFactory.cs
- ToggleButtonAutomationPeer.cs
- MultipartIdentifier.cs
- CommonProperties.cs
- Timer.cs
- ArrangedElementCollection.cs
- QueryCoreOp.cs
- TypeInfo.cs
- HatchBrush.cs
- XpsResource.cs
- BaseParaClient.cs
- PageRouteHandler.cs
- CommentEmitter.cs
- DataGridViewCellParsingEventArgs.cs
- GenericRootAutomationPeer.cs
- ValidationErrorCollection.cs
- Utils.cs