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
- FormViewCommandEventArgs.cs
- AmbientLight.cs
- TagMapCollection.cs
- HtmlSelect.cs
- DateTimeConstantAttribute.cs
- RoleManagerEventArgs.cs
- HtmlTable.cs
- Iis7Helper.cs
- DefaultDialogButtons.cs
- XmlSchemaComplexContentRestriction.cs
- ContentControl.cs
- CustomErrorCollection.cs
- CompiledRegexRunnerFactory.cs
- DeclarativeCatalogPart.cs
- XmlC14NWriter.cs
- HtmlTableRowCollection.cs
- FileDialogCustomPlace.cs
- EdmItemCollection.OcAssemblyCache.cs
- AvTraceFormat.cs
- Point4DConverter.cs
- SpecularMaterial.cs
- newinstructionaction.cs
- ExtensionQuery.cs
- SystemKeyConverter.cs
- LicenseManager.cs
- TextEndOfSegment.cs
- MessageSecurityOverTcpElement.cs
- HwndSource.cs
- DbConnectionStringBuilder.cs
- X509Utils.cs
- Validator.cs
- SimpleType.cs
- ValidationEventArgs.cs
- ProfileElement.cs
- DependencyObject.cs
- Quad.cs
- IProvider.cs
- QueryConverter.cs
- ResolveMatchesMessage11.cs
- Rect.cs
- OleDbConnectionFactory.cs
- WebPartConnectionsCancelVerb.cs
- ProcessHost.cs
- QuestionEventArgs.cs
- TaiwanLunisolarCalendar.cs
- _BaseOverlappedAsyncResult.cs
- GroupByQueryOperator.cs
- ComPlusDiagnosticTraceRecords.cs
- CaretElement.cs
- PageAdapter.cs
- ConversionContext.cs
- DesignParameter.cs
- Menu.cs
- XmlSchemaObject.cs
- ActiveXHelper.cs
- FastEncoderWindow.cs
- AmbientProperties.cs
- ListBox.cs
- ListInitExpression.cs
- DiscoveryMessageProperty.cs
- HtmlElementErrorEventArgs.cs
- Gdiplus.cs
- CheckBoxList.cs
- TypeSource.cs
- WindowsListViewSubItem.cs
- XamlStream.cs
- MatrixKeyFrameCollection.cs
- ProbeDuplexCD1AsyncResult.cs
- JsonDeserializer.cs
- OptimalBreakSession.cs
- CultureTable.cs
- GrabHandleGlyph.cs
- FileIOPermission.cs
- AccessControlList.cs
- XPathDocumentIterator.cs
- Invariant.cs
- FacetDescriptionElement.cs
- _DisconnectOverlappedAsyncResult.cs
- DataControlFieldCollection.cs
- _Rfc2616CacheValidators.cs
- ObjectParameterCollection.cs
- UriTemplateCompoundPathSegment.cs
- LogicalExpr.cs
- PriorityItem.cs
- SQLBytes.cs
- MultiBinding.cs
- ClientConfigurationHost.cs
- Msec.cs
- HwndHostAutomationPeer.cs
- Deflater.cs
- MSAAWinEventWrap.cs
- ComAwareEventInfo.cs
- ExpressionVisitor.cs
- ContentTypeSettingDispatchMessageFormatter.cs
- login.cs
- TransformerConfigurationWizardBase.cs
- JoinTreeNode.cs
- ServiceDescriptionSerializer.cs
- TableProvider.cs
- TimeSpanConverter.cs