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
- OracleBFile.cs
- EntityViewGenerator.cs
- PolyLineSegment.cs
- ContentPlaceHolder.cs
- TextEditorCopyPaste.cs
- TransformConverter.cs
- BCryptSafeHandles.cs
- TypeDescriptionProviderAttribute.cs
- LoadMessageLogger.cs
- AddingNewEventArgs.cs
- ScrollData.cs
- ReadOnlyDataSourceView.cs
- AnimationLayer.cs
- ChangeConflicts.cs
- FormatSettings.cs
- Regex.cs
- _emptywebproxy.cs
- MatcherBuilder.cs
- DoubleAnimationUsingPath.cs
- TypeConverterValueSerializer.cs
- MembershipUser.cs
- MatchingStyle.cs
- BoolExpressionVisitors.cs
- ContourSegment.cs
- Types.cs
- RemotingConfigParser.cs
- MeasurementDCInfo.cs
- XmlAttributeHolder.cs
- WebReferenceCollection.cs
- InstanceNameConverter.cs
- SchemaAttDef.cs
- KerberosReceiverSecurityToken.cs
- EarlyBoundInfo.cs
- XsdDataContractExporter.cs
- EditorPart.cs
- ImmComposition.cs
- SQLMoneyStorage.cs
- ManagementScope.cs
- DocumentXmlWriter.cs
- MenuItem.cs
- IDispatchConstantAttribute.cs
- CorrelationService.cs
- CacheSection.cs
- AuthorizationSection.cs
- ScrollChangedEventArgs.cs
- WpfKnownType.cs
- TabletDeviceInfo.cs
- CharAnimationUsingKeyFrames.cs
- VersionedStream.cs
- CodePageEncoding.cs
- SqlConnectionStringBuilder.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- ClientClassGenerator.cs
- unsafeIndexingFilterStream.cs
- TemplatePartAttribute.cs
- ProvidersHelper.cs
- Context.cs
- BindingElement.cs
- QilPatternVisitor.cs
- ImageIndexConverter.cs
- GridViewRow.cs
- TypedElement.cs
- Merger.cs
- EmptyEnumerable.cs
- AsymmetricAlgorithm.cs
- CredentialCache.cs
- NamedPipeChannelListener.cs
- TrackingMemoryStream.cs
- Viewport3DVisual.cs
- GridViewHeaderRowPresenter.cs
- XmlWriterDelegator.cs
- PartialCachingControl.cs
- AssemblyBuilder.cs
- NullableFloatMinMaxAggregationOperator.cs
- WinFormsComponentEditor.cs
- FtpRequestCacheValidator.cs
- LinqDataSourceView.cs
- ZipIOCentralDirectoryFileHeader.cs
- CustomAssemblyResolver.cs
- StringInfo.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- Debugger.cs
- LinkedResourceCollection.cs
- DoubleCollection.cs
- BasicHttpSecurityElement.cs
- SQLRoleProvider.cs
- DockPattern.cs
- Cursors.cs
- ParallelEnumerable.cs
- AspNetCompatibilityRequirementsAttribute.cs
- TimerTable.cs
- TypeUnloadedException.cs
- PolicyManager.cs
- GeometryHitTestResult.cs
- SelectionPattern.cs
- UDPClient.cs
- FormViewPageEventArgs.cs
- UidManager.cs
- SafeRegistryKey.cs
- FollowerQueueCreator.cs