Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Input / Stylus / PenThread.cs / 2 / PenThread.cs
//#define TRACE using System; using System.Diagnostics; using System.Collections; using System.Collections.ObjectModel; using System.Runtime.InteropServices; using System.Windows.Threading; using System.Threading; using System.Security; using System.Security.Permissions; using MS.Internal; using MS.Internal.PresentationCore; // SecurityHelper using MS.Win32.Penimc; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; namespace System.Windows.Input { ///////////////////////////////////////////////////////////////////////// internal sealed class PenThread { private PenThreadWorker _penThreadWorker; ////// Critical - Calls SecurityCritical code PenThreadWorker constructor. /// Called by PenThreadPool.RegisterPenContextHelper. /// TreatAsSafe boundry is Stylus.EnableCore, Stylus.RegisterHwndForInput /// and HwndWrapperHook class (via HwndSource.InputFilterMessage). /// [SecurityCritical] internal PenThread() { _penThreadWorker = new PenThreadWorker(); } ////// Dispose /// internal void Dispose() { DisposeHelper(); } ///////////////////////////////////////////////////////////////////// ~PenThread() { DisposeHelper(); } ///////////////////////////////////////////////////////////////////// ////// Critical - Call security critical method PenThreadWorker.Dispose(). /// TreatAsSafe - Safe since it only frees internal private handle /// on an object that is going to be also marked as disposed and /// start failing all calls after return. /// [SecurityCritical, SecurityTreatAsSafe] void DisposeHelper() { // NOTE: PenThreadWorker deals with already being disposed logic. _penThreadWorker.Dispose(); GC.KeepAlive(this); } ///////////////////////////////////////////////////////////////////// ////// Critical - Calls SecurityCritical code PenThreadWorker.WorkerAddPenContext. /// Called by PenThreadPool.RegisterPenContextHelper. /// TreatAsSafe boundry is Stylus.EnableCore, Stylus.RegisterHwndForInput /// and HwndWrapperHook class (via HwndSource.InputFilterMessage). /// [SecurityCritical] internal bool AddPenContext(PenContext penContext) { return _penThreadWorker.WorkerAddPenContext(penContext); } ////// Critical - Calls SecurityCritical code PenThreadWorker.WorkerRemovePenContext. /// Called by PenContext.Disable. /// TreatAsSafe boundry is PenContext.Dispose, Stylus.ProcessDisplayChange /// and HwndWrapperHook class (via HwndSource.InputFilterMessage). /// [SecurityCritical] internal bool RemovePenContext(PenContext penContext) { return _penThreadWorker.WorkerRemovePenContext(penContext); } ///////////////////////////////////////////////////////////////////// ////// Critical - Calls SecurityCritical code PenThreadWorker.WorkerGetTabletsInfo. /// Called by PenThreadPool.WorkerGetTabletsInfo. /// [SecurityCritical] internal TabletDeviceInfo[] WorkerGetTabletsInfo() { return _penThreadWorker.WorkerGetTabletsInfo(); } ////// Critical - Calls SecurityCritical code PenThreadWorker.WorkerCreateContext. /// Called by PenThreadPool.WorkerCreateContext. /// TreatAsSafe boundry is Stylus.EnableCore and HwndWrapperHook class /// (via HwndSource.InputFilterMessage). /// [SecurityCritical] internal PenContextInfo WorkerCreateContext(IntPtr hwnd, IPimcTablet pimcTablet) { return _penThreadWorker.WorkerCreateContext(hwnd, pimcTablet); } ////// Critical - Calls SecurityCritical code PenThreadWorker.WorkerRefreshCursorInfo. /// Called by PenThreadPool.WorkerRefreshCursorInfo. /// [SecurityCritical] internal StylusDeviceInfo[] WorkerRefreshCursorInfo(IPimcTablet pimcTablet) { return _penThreadWorker.WorkerRefreshCursorInfo(pimcTablet); } ////// Critical - Calls SecurityCritical code PenThreadWorker.WorkerGetTabletInfo. /// Called by PenThreadPool.WorkerGetTabletInfo. /// [SecurityCritical] internal TabletDeviceInfo WorkerGetTabletInfo(uint index) { return _penThreadWorker.WorkerGetTabletInfo(index); } ////// Critical - Calls SecurityCritical code PenThreadWorker.WorkerGetUpdatedSizes. /// Called by PenThreadPool.WorkerGetUpdatedTabletRect. /// [SecurityCritical] internal TabletDeviceSizeInfo WorkerGetUpdatedSizes(IPimcTablet pimcTablet) { return _penThreadWorker.WorkerGetUpdatedSizes(pimcTablet); } } } // 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
- HtmlTableCell.cs
- LogicalExpressionEditor.cs
- EventRoute.cs
- PropertyRecord.cs
- SchemaComplexType.cs
- RowBinding.cs
- Vector3DKeyFrameCollection.cs
- DateTimeConverter.cs
- WindowsGraphicsWrapper.cs
- MethodCallTranslator.cs
- TcpSocketManager.cs
- ProfileSection.cs
- UpdatePanelControlTrigger.cs
- MethodRental.cs
- BatchServiceHost.cs
- ConfigurationPermission.cs
- COM2AboutBoxPropertyDescriptor.cs
- PaintValueEventArgs.cs
- SchemaElement.cs
- ZipIOCentralDirectoryBlock.cs
- TagPrefixCollection.cs
- WindowsGrip.cs
- ColorInterpolationModeValidation.cs
- AutomationIdentifierGuids.cs
- QueueException.cs
- StateDesigner.CommentLayoutGlyph.cs
- IxmlLineInfo.cs
- CodeAccessPermission.cs
- GridViewUpdatedEventArgs.cs
- SerialStream.cs
- ErrorTableItemStyle.cs
- AliasedSlot.cs
- WebPartZoneCollection.cs
- TextBoxDesigner.cs
- HostedHttpRequestAsyncResult.cs
- TextServicesCompartmentEventSink.cs
- ClientSettings.cs
- DiagnosticTrace.cs
- ParameterReplacerVisitor.cs
- TableCell.cs
- RootDesignerSerializerAttribute.cs
- LockCookie.cs
- TypeConverter.cs
- MediaCommands.cs
- ActivitySurrogate.cs
- ListControl.cs
- RenderCapability.cs
- ConnectionInterfaceCollection.cs
- XmlToDatasetMap.cs
- OrthographicCamera.cs
- NativeMethodsOther.cs
- EDesignUtil.cs
- WebRequest.cs
- SrgsGrammar.cs
- PropertySegmentSerializationProvider.cs
- IisTraceWebEventProvider.cs
- FixedDSBuilder.cs
- ImmutableAssemblyCacheEntry.cs
- SiteMapPath.cs
- DbConnectionFactory.cs
- ForwardPositionQuery.cs
- BitmapPalettes.cs
- WebHttpDispatchOperationSelectorData.cs
- RsaSecurityKey.cs
- MarshalDirectiveException.cs
- Expander.cs
- DefaultHttpHandler.cs
- ComplexObject.cs
- TypeContext.cs
- ClientTargetCollection.cs
- ExpressionBinding.cs
- ByteAnimationBase.cs
- MDIClient.cs
- TraceSection.cs
- SQLString.cs
- KeyEventArgs.cs
- EntityTypeEmitter.cs
- WSSecurityTokenSerializer.cs
- ClientBuildManager.cs
- MailHeaderInfo.cs
- IdentityReference.cs
- ParameterBuilder.cs
- FtpWebResponse.cs
- OperationPickerDialog.cs
- ModelUIElement3D.cs
- BinaryWriter.cs
- DataColumnChangeEvent.cs
- CodeSnippetStatement.cs
- AmbiguousMatchException.cs
- PagesSection.cs
- MultiBinding.cs
- Serializer.cs
- UnsafeNativeMethodsPenimc.cs
- wgx_commands.cs
- DESCryptoServiceProvider.cs
- ConfigurationManagerInternalFactory.cs
- JsonDataContract.cs
- CodeNamespaceImport.cs
- DataTablePropertyDescriptor.cs
- TrustSection.cs