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
- WhereaboutsReader.cs
- DataServiceRequest.cs
- SafeNativeMethods.cs
- CfgArc.cs
- TemplateManager.cs
- ComponentChangedEvent.cs
- VectorCollectionValueSerializer.cs
- CompositeScriptReferenceEventArgs.cs
- SmtpMail.cs
- IdleTimeoutMonitor.cs
- MachineKey.cs
- loginstatus.cs
- CellLabel.cs
- CodeNamespaceImport.cs
- PeerFlooder.cs
- FieldBuilder.cs
- ObjectDataProvider.cs
- PermissionSetEnumerator.cs
- DataGridViewImageCell.cs
- Inline.cs
- FixedSOMTable.cs
- ApplySecurityAndSendAsyncResult.cs
- InputProviderSite.cs
- PnrpPermission.cs
- ImageEditor.cs
- DefaultTraceListener.cs
- NameValueCollection.cs
- TypeElementCollection.cs
- EntityDataSourceQueryBuilder.cs
- ObjectQueryExecutionPlan.cs
- TextEndOfSegment.cs
- DateTimeConverter.cs
- ThreadStaticAttribute.cs
- SqlAggregateChecker.cs
- SqlServer2KCompatibilityAnnotation.cs
- TableLayoutCellPaintEventArgs.cs
- ClientEventManager.cs
- RowTypePropertyElement.cs
- PageThemeBuildProvider.cs
- BindingCollectionElement.cs
- WebPartCollection.cs
- DebuggerAttributes.cs
- FrameworkName.cs
- Stack.cs
- MenuTracker.cs
- ParseNumbers.cs
- Win32.cs
- InstanceCollisionException.cs
- GifBitmapEncoder.cs
- Logging.cs
- MemoryMappedView.cs
- UriTemplatePathPartiallyEquivalentSet.cs
- XmlSignatureManifest.cs
- HierarchicalDataBoundControlAdapter.cs
- FileUpload.cs
- SecurityKeyType.cs
- ObjectListTitleAttribute.cs
- CodeAssignStatement.cs
- PageSetupDialog.cs
- URLString.cs
- WebMessageEncodingElement.cs
- XmlWriterSettings.cs
- ReplacementText.cs
- DataObjectAttribute.cs
- WindowHideOrCloseTracker.cs
- CopyOnWriteList.cs
- IFormattable.cs
- DataKey.cs
- HandledMouseEvent.cs
- DATA_BLOB.cs
- ListItemParagraph.cs
- CompilerParameters.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- WmlMobileTextWriter.cs
- newitemfactory.cs
- TreeNodeConverter.cs
- GeneralTransform.cs
- control.ime.cs
- ResourceWriter.cs
- EditingScope.cs
- XmlSchemaComplexContentRestriction.cs
- SpellerError.cs
- DirectoryNotFoundException.cs
- VerticalAlignConverter.cs
- MessageBox.cs
- ImageBrush.cs
- ClientSettingsSection.cs
- WSFederationHttpSecurityElement.cs
- ZipIOLocalFileHeader.cs
- ClientApiGenerator.cs
- BuildResultCache.cs
- HwndHost.cs
- XmlReturnReader.cs
- __TransparentProxy.cs
- ComProxy.cs
- BufferAllocator.cs
- EventDescriptorCollection.cs
- RowSpanVector.cs
- ParentQuery.cs
- CompilerScope.Storage.cs