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
- ShaderEffect.cs
- TypeGenericEnumerableViewSchema.cs
- NeutralResourcesLanguageAttribute.cs
- RequestCachePolicy.cs
- RegisteredScript.cs
- PrinterSettings.cs
- UrlMappingsSection.cs
- Mutex.cs
- Pkcs7Recipient.cs
- baseaxisquery.cs
- TableLayoutPanel.cs
- EnumMember.cs
- ProxySimple.cs
- SingleTagSectionHandler.cs
- AuthStoreRoleProvider.cs
- ExtendedPropertyCollection.cs
- CompressEmulationStream.cs
- SerializationSectionGroup.cs
- XmlValidatingReader.cs
- configsystem.cs
- IncrementalHitTester.cs
- Form.cs
- _Connection.cs
- IndependentAnimationStorage.cs
- FunctionUpdateCommand.cs
- PathSegmentCollection.cs
- FamilyTypefaceCollection.cs
- EncoderExceptionFallback.cs
- TypeSource.cs
- DefaultAssemblyResolver.cs
- EntityDataSourceReferenceGroup.cs
- SafeUserTokenHandle.cs
- NonVisualControlAttribute.cs
- HttpListenerElement.cs
- ViewCellSlot.cs
- CancellationScope.cs
- TdsParserHelperClasses.cs
- NameValueCollection.cs
- DataServiceOperationContext.cs
- DBSqlParserTableCollection.cs
- DataStreams.cs
- ScriptIgnoreAttribute.cs
- FontFaceLayoutInfo.cs
- DoubleAnimationUsingPath.cs
- TableSectionStyle.cs
- SqlNodeAnnotations.cs
- SoapTypeAttribute.cs
- RootProfilePropertySettingsCollection.cs
- CharEnumerator.cs
- ClientOptions.cs
- RadioButtonRenderer.cs
- CommonObjectSecurity.cs
- DependencyPropertyKey.cs
- OdbcConnectionString.cs
- Set.cs
- AssemblyNameProxy.cs
- RequestQueue.cs
- TraceListeners.cs
- HttpCacheVaryByContentEncodings.cs
- CapabilitiesSection.cs
- HtmlAnchor.cs
- AutomationAttributeInfo.cs
- ServerValidateEventArgs.cs
- ToolStripItemBehavior.cs
- _FtpControlStream.cs
- Int16Converter.cs
- CompensatableSequenceActivity.cs
- SessionStateModule.cs
- TdsRecordBufferSetter.cs
- QilExpression.cs
- SerializationAttributes.cs
- ReliabilityContractAttribute.cs
- Mutex.cs
- CodeSnippetStatement.cs
- SystemTcpStatistics.cs
- HttpFileCollectionWrapper.cs
- XmlUnspecifiedAttribute.cs
- SmiTypedGetterSetter.cs
- SoapAttributeAttribute.cs
- SessionStateContainer.cs
- ResourceExpressionBuilder.cs
- Canvas.cs
- EditorBrowsableAttribute.cs
- RequestCachePolicy.cs
- RangeContentEnumerator.cs
- Menu.cs
- Graph.cs
- ManifestResourceInfo.cs
- RepeaterItem.cs
- PeerToPeerException.cs
- ErrorTolerantObjectWriter.cs
- complextypematerializer.cs
- SoapSchemaMember.cs
- Compiler.cs
- StorageEntitySetMapping.cs
- LineServicesRun.cs
- DeferredTextReference.cs
- DiagnosticTrace.cs
- HitTestResult.cs
- UidManager.cs