Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Input / Stylus / PenThread.cs / 2 / 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. _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
- MustUnderstandSoapException.cs
- NetworkStream.cs
- LogManagementAsyncResult.cs
- NamespaceExpr.cs
- DataTablePropertyDescriptor.cs
- DashStyles.cs
- NavigationPropertyEmitter.cs
- Error.cs
- DataGridViewCell.cs
- ConnectionManagementSection.cs
- ADMembershipUser.cs
- XmlLangPropertyAttribute.cs
- BindingsCollection.cs
- PartitionResolver.cs
- ExecutedRoutedEventArgs.cs
- Int32CAMarshaler.cs
- odbcmetadatafactory.cs
- Floater.cs
- VectorAnimationUsingKeyFrames.cs
- BindingListCollectionView.cs
- HtmlContainerControl.cs
- SortKey.cs
- CustomExpression.cs
- InputLangChangeRequestEvent.cs
- CharacterHit.cs
- ConfigurationManagerHelperFactory.cs
- Pkcs9Attribute.cs
- TypeUtil.cs
- ExtensionFile.cs
- XslException.cs
- ImageMapEventArgs.cs
- PartialCachingControl.cs
- BlobPersonalizationState.cs
- ApplicationServiceHelper.cs
- TreeNodeStyleCollection.cs
- BooleanExpr.cs
- QuadraticBezierSegment.cs
- DataBindEngine.cs
- HandleRef.cs
- ValidationRuleCollection.cs
- GridViewDeleteEventArgs.cs
- Partitioner.cs
- UpDownBase.cs
- SQLGuid.cs
- DefaultValueAttribute.cs
- _FtpDataStream.cs
- DataGridViewComboBoxEditingControl.cs
- NameValueConfigurationCollection.cs
- CodeTypeMember.cs
- complextypematerializer.cs
- BinaryMessageFormatter.cs
- SmiContext.cs
- DoubleLinkListEnumerator.cs
- OdbcCommand.cs
- ValidationHelper.cs
- ModifierKeysConverter.cs
- ToolBarDesigner.cs
- FormsAuthenticationUser.cs
- UdpMessageProperty.cs
- BitStream.cs
- Constants.cs
- CmsUtils.cs
- SelectorItemAutomationPeer.cs
- DebuggerAttributes.cs
- Label.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- Path.cs
- ScaleTransform3D.cs
- SimpleWebHandlerParser.cs
- AssemblyInfo.cs
- FormatterServices.cs
- UniqueID.cs
- ToolStripPanelRow.cs
- MachineKeySection.cs
- SafeNativeMethods.cs
- isolationinterop.cs
- InputLangChangeEvent.cs
- ProgressPage.cs
- ServiceTimeoutsBehavior.cs
- ListBoxItemAutomationPeer.cs
- WhitespaceRuleReader.cs
- _NegotiateClient.cs
- ZipFileInfo.cs
- StoreConnection.cs
- DataKeyArray.cs
- DataBoundLiteralControl.cs
- HideDisabledControlAdapter.cs
- AudioLevelUpdatedEventArgs.cs
- ClientProxyGenerator.cs
- FilteredAttributeCollection.cs
- GraphicsPathIterator.cs
- shaperfactoryquerycachekey.cs
- EventEntry.cs
- ElementNotEnabledException.cs
- MultiPropertyDescriptorGridEntry.cs
- BinaryFormatter.cs
- StateManagedCollection.cs
- ImpersonationContext.cs
- infer.cs
- _DisconnectOverlappedAsyncResult.cs