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
- PeerPresenceInfo.cs
- _TLSstream.cs
- SecureUICommand.cs
- CodeTypeReferenceExpression.cs
- ResetableIterator.cs
- Button.cs
- ListDataBindEventArgs.cs
- UrlPath.cs
- ThrowHelper.cs
- Zone.cs
- DataMemberConverter.cs
- Run.cs
- OdbcTransaction.cs
- XsdCachingReader.cs
- Empty.cs
- DataGridTable.cs
- TypeForwardedFromAttribute.cs
- SendMailErrorEventArgs.cs
- VerificationAttribute.cs
- DataServiceExpressionVisitor.cs
- BinaryMethodMessage.cs
- TreeBuilderXamlTranslator.cs
- BitFlagsGenerator.cs
- DbException.cs
- WebSysDefaultValueAttribute.cs
- HttpPostedFile.cs
- NetNamedPipeBinding.cs
- ProvidePropertyAttribute.cs
- DataGridViewHitTestInfo.cs
- NumberFormatter.cs
- TextLineResult.cs
- DesignerActionItem.cs
- CommandEventArgs.cs
- MethodExpr.cs
- ExceptionTranslationTable.cs
- RecordsAffectedEventArgs.cs
- InvalidateEvent.cs
- ToolZone.cs
- ListItem.cs
- BitmapImage.cs
- MasterPageParser.cs
- ResourceContainerWrapper.cs
- COM2ComponentEditor.cs
- ContentWrapperAttribute.cs
- SQLByteStorage.cs
- PersonalizationStateInfo.cs
- ApplicationFileParser.cs
- SR.cs
- PolicyLevel.cs
- Encoding.cs
- ByteStreamMessageEncoder.cs
- TemplateXamlTreeBuilder.cs
- ConstraintManager.cs
- IISUnsafeMethods.cs
- ButtonBaseAdapter.cs
- ICspAsymmetricAlgorithm.cs
- SortedSetDebugView.cs
- CodeAttachEventStatement.cs
- ThousandthOfEmRealPoints.cs
- MimeBasePart.cs
- ArgumentOutOfRangeException.cs
- SizeAnimationBase.cs
- CurrencyWrapper.cs
- AuthenticationModuleElement.cs
- TypefaceMap.cs
- AliasedSlot.cs
- BypassElementCollection.cs
- TakeOrSkipQueryOperator.cs
- PropertyNames.cs
- BuildProvider.cs
- QueryExpr.cs
- CompositionAdorner.cs
- SafeEventHandle.cs
- DeleteWorkflowOwnerCommand.cs
- ChoiceConverter.cs
- ContentWrapperAttribute.cs
- DataGridViewComboBoxEditingControl.cs
- RuntimeCompatibilityAttribute.cs
- ObjectSet.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- HandleCollector.cs
- DataStreamFromComStream.cs
- StatusBarDrawItemEvent.cs
- DelegatingHeader.cs
- AmbientValueAttribute.cs
- ErrorFormatterPage.cs
- InputDevice.cs
- ByteFacetDescriptionElement.cs
- SimpleApplicationHost.cs
- EmptyEnumerator.cs
- MenuItemCollection.cs
- WsatConfiguration.cs
- SequenceFullException.cs
- ProfileBuildProvider.cs
- TraceContextRecord.cs
- UnsafeNativeMethods.cs
- SerializeAbsoluteContext.cs
- DragDrop.cs
- ErrorWrapper.cs
- BinaryOperationBinder.cs