Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Input / Stylus / PenThread.cs / 1 / 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.
//#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
- Pair.cs
- MarginCollapsingState.cs
- ToolStripMenuItemDesigner.cs
- InternalConfigEventArgs.cs
- ConfigXmlCDataSection.cs
- SqlBooleanMismatchVisitor.cs
- InternalRelationshipCollection.cs
- BindStream.cs
- ScriptingJsonSerializationSection.cs
- RootBrowserWindowProxy.cs
- QueryExtender.cs
- Compilation.cs
- AssemblyBuilderData.cs
- List.cs
- XmlMembersMapping.cs
- HtmlInputImage.cs
- Activation.cs
- ViewBox.cs
- HttpModuleAction.cs
- Update.cs
- DocumentCollection.cs
- InputDevice.cs
- CharKeyFrameCollection.cs
- SetIterators.cs
- ObjectStateManagerMetadata.cs
- DocumentGrid.cs
- SafeNativeMethods.cs
- httpstaticobjectscollection.cs
- DoubleCollectionConverter.cs
- ToolBarDesigner.cs
- TimeSpanConverter.cs
- MachineKey.cs
- StatusBarDrawItemEvent.cs
- XmlWriter.cs
- ListenerSessionConnectionReader.cs
- Button.cs
- DSACryptoServiceProvider.cs
- GridViewRow.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- HotSpotCollection.cs
- Parser.cs
- ADMembershipProvider.cs
- GradientSpreadMethodValidation.cs
- XmlSchemaAnnotation.cs
- PrimitiveCodeDomSerializer.cs
- RNGCryptoServiceProvider.cs
- BindValidationContext.cs
- WSTransactionSection.cs
- UInt16Storage.cs
- SchemaImporter.cs
- SemanticTag.cs
- ImageFormatConverter.cs
- ToolboxItemAttribute.cs
- filewebrequest.cs
- ImageMap.cs
- HttpRawResponse.cs
- ValueQuery.cs
- XmlSchemaComplexContentRestriction.cs
- ZoomPercentageConverter.cs
- RequestCachePolicy.cs
- WindowsPen.cs
- RectAnimation.cs
- TemplateBamlTreeBuilder.cs
- BaseEntityWrapper.cs
- LoadedOrUnloadedOperation.cs
- DropShadowBitmapEffect.cs
- BinHexDecoder.cs
- AdapterUtil.cs
- AssemblyInfo.cs
- CachedBitmap.cs
- TreeBuilder.cs
- XamlPointCollectionSerializer.cs
- PathFigureCollectionConverter.cs
- HtmlInputPassword.cs
- MessageDecoder.cs
- CipherData.cs
- AliasedExpr.cs
- TableRowGroup.cs
- WebContentFormatHelper.cs
- CreateUserWizardStep.cs
- XmlAttributes.cs
- PipelineModuleStepContainer.cs
- DataColumnCollection.cs
- XmlQueryTypeFactory.cs
- TabControl.cs
- ImportException.cs
- SafeNativeMethods.cs
- CommunicationObjectFaultedException.cs
- DispatcherExceptionEventArgs.cs
- RuleProcessor.cs
- NetworkInformationException.cs
- XmlSchemaGroupRef.cs
- XComponentModel.cs
- ProcessThread.cs
- IMembershipProvider.cs
- NativeBuffer.cs
- ReadOnlyHierarchicalDataSource.cs
- OpenTypeMethods.cs
- TableDetailsRow.cs
- XmlIgnoreAttribute.cs