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
- OleDbConnection.cs
- AuthenticationModuleElement.cs
- JobCollate.cs
- Base64Decoder.cs
- FontCollection.cs
- Font.cs
- DeflateStream.cs
- DataPagerFieldCollection.cs
- ExtensibleClassFactory.cs
- D3DImage.cs
- baseaxisquery.cs
- HttpHostedTransportConfiguration.cs
- XslAst.cs
- KeyInfo.cs
- AttachedProperty.cs
- ZipPackage.cs
- TagPrefixAttribute.cs
- RefreshEventArgs.cs
- ThemeInfoAttribute.cs
- BinaryObjectInfo.cs
- InputBindingCollection.cs
- EntryPointNotFoundException.cs
- OpenTypeCommon.cs
- XslAstAnalyzer.cs
- Rfc2898DeriveBytes.cs
- ClientApiGenerator.cs
- ComponentEditorForm.cs
- SinglePageViewer.cs
- BindingExpressionUncommonField.cs
- XmlSubtreeReader.cs
- DisposableCollectionWrapper.cs
- CatalogPartChrome.cs
- HelpPage.cs
- connectionpool.cs
- DbConnectionClosed.cs
- SmtpMail.cs
- IIS7UserPrincipal.cs
- XamlSerializationHelper.cs
- AttributeProviderAttribute.cs
- OAVariantLib.cs
- HttpListenerPrefixCollection.cs
- SocketElement.cs
- ObjectViewQueryResultData.cs
- BigInt.cs
- TypedTableHandler.cs
- EmbossBitmapEffect.cs
- arabicshape.cs
- UniqueID.cs
- EmptyEnumerable.cs
- CommonDialog.cs
- AuthenticateEventArgs.cs
- DbProviderServices.cs
- DataGridHelper.cs
- SqlDataRecord.cs
- CalendarDataBindingHandler.cs
- DataContractSerializerFaultFormatter.cs
- BindableAttribute.cs
- TypeSystem.cs
- ObjectSet.cs
- EntityDataSourceValidationException.cs
- SqlNotificationRequest.cs
- SpeechSynthesizer.cs
- SimpleBitVector32.cs
- MetadataCache.cs
- MemoryMappedFileSecurity.cs
- CheckPair.cs
- MessageFilterException.cs
- UnsignedPublishLicense.cs
- followingsibling.cs
- RefExpr.cs
- CellRelation.cs
- errorpatternmatcher.cs
- TextPointerBase.cs
- ValidationSummary.cs
- SqlParameter.cs
- SerializationInfo.cs
- DbBuffer.cs
- AsyncResult.cs
- BamlRecords.cs
- BaseAppDomainProtocolHandler.cs
- SqlDataSourceAdvancedOptionsForm.cs
- NativeMethods.cs
- HandlerBase.cs
- ExtensibleSyndicationObject.cs
- UshortList2.cs
- DynamicValidatorEventArgs.cs
- SrgsRuleRef.cs
- InputBuffer.cs
- SelectionPatternIdentifiers.cs
- TokenBasedSetEnumerator.cs
- NullReferenceException.cs
- DecoderBestFitFallback.cs
- TextContainer.cs
- ACL.cs
- SafeEventHandle.cs
- LassoHelper.cs
- WebPartDisplayModeCollection.cs
- BinaryUtilClasses.cs
- ResourceBinder.cs
- DataGridViewColumnHeaderCell.cs