Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Input / Stylus / PenThread.cs / 1305600 / 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. if (_penThreadWorker != null) { _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
- Matrix3DStack.cs
- PerformanceCounters.cs
- HeaderFilter.cs
- Itemizer.cs
- DataServiceRequestException.cs
- InstanceContext.cs
- XmlSchemaObject.cs
- DataGridViewSelectedColumnCollection.cs
- TileBrush.cs
- NativeBuffer.cs
- ScrollProviderWrapper.cs
- ColorConvertedBitmap.cs
- ThreadPoolTaskScheduler.cs
- MsmqReceiveHelper.cs
- SmtpDigestAuthenticationModule.cs
- CodeTypeDeclarationCollection.cs
- SiteMapNodeItemEventArgs.cs
- CompilerParameters.cs
- ComponentResourceKeyConverter.cs
- MsmqAuthenticationMode.cs
- InvalidCommandTreeException.cs
- PerfCounterSection.cs
- SqlCacheDependencyDatabaseCollection.cs
- OutOfProcStateClientManager.cs
- MenuEventArgs.cs
- NameSpaceExtractor.cs
- ListViewPagedDataSource.cs
- TextFormatterHost.cs
- Binding.cs
- ScriptBehaviorDescriptor.cs
- SplitterEvent.cs
- DbProviderManifest.cs
- translator.cs
- SizeLimitedCache.cs
- MatrixCamera.cs
- EntityDataSourceStatementEditorForm.cs
- OracleInternalConnection.cs
- UniqueEventHelper.cs
- ResourceSetExpression.cs
- CodePageUtils.cs
- NamespaceEmitter.cs
- UInt16.cs
- AnnotationHighlightLayer.cs
- ValueConversionAttribute.cs
- TextBoxBase.cs
- ClonableStack.cs
- ReturnType.cs
- ComplexType.cs
- DateTimeAutomationPeer.cs
- PolyBezierSegmentFigureLogic.cs
- DataGridViewButtonCell.cs
- LogLogRecord.cs
- FreezableCollection.cs
- SqlNotificationEventArgs.cs
- PartialCachingAttribute.cs
- AutoGeneratedFieldProperties.cs
- CAGDesigner.cs
- TransformerConfigurationWizardBase.cs
- Brush.cs
- WebServiceEnumData.cs
- SchemaElement.cs
- BinaryConverter.cs
- indexingfiltermarshaler.cs
- OleDbConnectionFactory.cs
- NativeRecognizer.cs
- FileUpload.cs
- MenuStrip.cs
- DeclarativeConditionsCollection.cs
- RadialGradientBrush.cs
- FileRegion.cs
- Internal.cs
- WebPartUtil.cs
- PeerApplication.cs
- FileLevelControlBuilderAttribute.cs
- AsyncPostBackTrigger.cs
- XPathNavigatorException.cs
- HopperCache.cs
- StreamHelper.cs
- DesignerActionHeaderItem.cs
- GAC.cs
- SqlWebEventProvider.cs
- x509utils.cs
- documentsequencetextcontainer.cs
- DeflateEmulationStream.cs
- ResolveMatchesApril2005.cs
- Receive.cs
- DmlSqlGenerator.cs
- storagemappingitemcollection.viewdictionary.cs
- NewArray.cs
- RegisteredScript.cs
- DefaultMemberAttribute.cs
- sqlmetadatafactory.cs
- CqlWriter.cs
- PropertyGeneratedEventArgs.cs
- ReaderWriterLock.cs
- ColorBlend.cs
- Win32PrintDialog.cs
- OdbcCommand.cs
- StringExpressionSet.cs
- Geometry.cs