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
- SignatureGenerator.cs
- HtmlMobileTextWriter.cs
- ArgIterator.cs
- MonikerProxyAttribute.cs
- CustomError.cs
- DescendentsWalkerBase.cs
- CodeCommentStatementCollection.cs
- DbDataAdapter.cs
- SqlDeflator.cs
- LogWriteRestartAreaState.cs
- PreviewPrintController.cs
- FontStyles.cs
- WebServiceParameterData.cs
- BackoffTimeoutHelper.cs
- NullableDoubleAverageAggregationOperator.cs
- QuaternionAnimation.cs
- TextTreeTextElementNode.cs
- XmlNavigatorStack.cs
- Utils.cs
- Classification.cs
- StringConverter.cs
- WinEventHandler.cs
- XamlBrushSerializer.cs
- ExceptionValidationRule.cs
- HttpPostedFileBase.cs
- Int32Collection.cs
- ObfuscateAssemblyAttribute.cs
- HttpRequestCacheValidator.cs
- Primitive.cs
- ScrollChrome.cs
- Double.cs
- ListViewItemEventArgs.cs
- EnumConverter.cs
- SimpleBitVector32.cs
- LogManagementAsyncResult.cs
- KoreanLunisolarCalendar.cs
- MemoryStream.cs
- HttpFileCollection.cs
- CopyCodeAction.cs
- DbParameterCollection.cs
- Sql8ExpressionRewriter.cs
- ItemCheckEvent.cs
- HttpCapabilitiesSectionHandler.cs
- HMACMD5.cs
- ExtensionFile.cs
- FamilyMapCollection.cs
- DataContractAttribute.cs
- BasicViewGenerator.cs
- MediaContextNotificationWindow.cs
- ToolStripPanelCell.cs
- HierarchicalDataTemplate.cs
- HttpWriter.cs
- TextDecorations.cs
- InitializationEventAttribute.cs
- XmlFormatReaderGenerator.cs
- ProfileGroupSettingsCollection.cs
- Matrix3D.cs
- HtmlForm.cs
- URLAttribute.cs
- HtmlEmptyTagControlBuilder.cs
- ColorAnimation.cs
- CanonicalFontFamilyReference.cs
- InitializerFacet.cs
- SQLChars.cs
- ListDesigner.cs
- XmlDocumentType.cs
- RefreshEventArgs.cs
- GenericIdentity.cs
- XmlEncApr2001.cs
- SoapMessage.cs
- WorkflowQueueInfo.cs
- Underline.cs
- EventManager.cs
- ClaimTypeElementCollection.cs
- PeerChannelFactory.cs
- ObjectViewEntityCollectionData.cs
- SessionStateUtil.cs
- CheckPair.cs
- ToggleButtonAutomationPeer.cs
- PassportAuthenticationEventArgs.cs
- XmlSchemaDatatype.cs
- PropertyEmitter.cs
- GraphicsState.cs
- BinaryObjectReader.cs
- PolicyValidationException.cs
- CodeLabeledStatement.cs
- QuerySafeNavigator.cs
- EmptyElement.cs
- RealizationDrawingContextWalker.cs
- MaterialGroup.cs
- UserControlCodeDomTreeGenerator.cs
- RoutedEventValueSerializer.cs
- DataGridTextBox.cs
- WebSysDisplayNameAttribute.cs
- TypeContext.cs
- MediaPlayerState.cs
- WSSecurityPolicy.cs
- ProjectionPlanCompiler.cs
- SessionStateItemCollection.cs
- ListItemViewAttribute.cs