Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / UIAutomation / Win32Providers / MS / Internal / AutomationProxies / SafeProcessHandle.cs / 1 / SafeProcessHandle.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description:
//
// History:
// 10/04/2003 : [....] Created
//---------------------------------------------------------------------------
using System;
using System.Security;
using System.Security.Permissions;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using System.Windows.Automation;
using Microsoft.Win32.SafeHandles;
using MS.Win32;
namespace MS.Internal.AutomationProxies
{
internal sealed class SafeProcessHandle : SafeHandleZeroOrMinusOneIsInvalid
{
// This constructor is used by the P/Invoke marshaling layer
// to allocate a SafeHandle instance. P/Invoke then does the
// appropriate method call, storing the handle in this class.
private SafeProcessHandle() : base(true) {}
internal SafeProcessHandle(IntPtr hwnd) : base(true)
{
uint processId;
if (hwnd == IntPtr.Zero)
{
processId = UnsafeNativeMethods.GetCurrentProcessId();
}
else
{
// Get process id...
Misc.GetWindowThreadProcessId(hwnd, out processId);
}
// handle might be used to query for Wow64 information (_QUERY_), or to do cross-process allocs (VM_*)
SetHandle(Misc.OpenProcess(NativeMethods.PROCESS_QUERY_INFORMATION | NativeMethods.PROCESS_VM_OPERATION | NativeMethods.PROCESS_VM_READ | NativeMethods.PROCESS_VM_WRITE, false, processId, hwnd));
}
// Uncomment this if & only if we need a constructor
// that takes a handle from external code
//internal SafeProcessHandle(IntPtr preexistingHandle, bool ownsHandle) : base(ownsHandle)
//{
// SetHandle(preexistingHandle);
//}
//
protected override bool ReleaseHandle()
{
return Misc.CloseHandle(handle);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description:
//
// History:
// 10/04/2003 : [....] Created
//---------------------------------------------------------------------------
using System;
using System.Security;
using System.Security.Permissions;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using System.Windows.Automation;
using Microsoft.Win32.SafeHandles;
using MS.Win32;
namespace MS.Internal.AutomationProxies
{
internal sealed class SafeProcessHandle : SafeHandleZeroOrMinusOneIsInvalid
{
// This constructor is used by the P/Invoke marshaling layer
// to allocate a SafeHandle instance. P/Invoke then does the
// appropriate method call, storing the handle in this class.
private SafeProcessHandle() : base(true) {}
internal SafeProcessHandle(IntPtr hwnd) : base(true)
{
uint processId;
if (hwnd == IntPtr.Zero)
{
processId = UnsafeNativeMethods.GetCurrentProcessId();
}
else
{
// Get process id...
Misc.GetWindowThreadProcessId(hwnd, out processId);
}
// handle might be used to query for Wow64 information (_QUERY_), or to do cross-process allocs (VM_*)
SetHandle(Misc.OpenProcess(NativeMethods.PROCESS_QUERY_INFORMATION | NativeMethods.PROCESS_VM_OPERATION | NativeMethods.PROCESS_VM_READ | NativeMethods.PROCESS_VM_WRITE, false, processId, hwnd));
}
// Uncomment this if & only if we need a constructor
// that takes a handle from external code
//internal SafeProcessHandle(IntPtr preexistingHandle, bool ownsHandle) : base(ownsHandle)
//{
// SetHandle(preexistingHandle);
//}
//
protected override bool ReleaseHandle()
{
return Misc.CloseHandle(handle);
}
}
}
// 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
- DefaultProxySection.cs
- Types.cs
- FileSystemEventArgs.cs
- SerializerWriterEventHandlers.cs
- QilValidationVisitor.cs
- DataServiceKeyAttribute.cs
- DataColumnMappingCollection.cs
- TextElementCollection.cs
- CommandBinding.cs
- CompilationSection.cs
- BaseResourcesBuildProvider.cs
- XmlSerializationReader.cs
- DataReaderContainer.cs
- FilteredAttributeCollection.cs
- XmlObjectSerializerReadContextComplex.cs
- LinearQuaternionKeyFrame.cs
- ApplicationInfo.cs
- WorkflowOperationInvoker.cs
- Quaternion.cs
- BackgroundWorker.cs
- IndexerNameAttribute.cs
- AccessibleObject.cs
- AppDomainManager.cs
- TrackBarRenderer.cs
- DuplexChannelBinder.cs
- CollectionContainer.cs
- Region.cs
- TableDetailsCollection.cs
- IUnknownConstantAttribute.cs
- KeysConverter.cs
- ContainerParaClient.cs
- OleDbEnumerator.cs
- DesignerForm.cs
- CodeTypeReferenceCollection.cs
- DispatchChannelSink.cs
- ClaimSet.cs
- EntityDataSourceView.cs
- Matrix3D.cs
- NullableDoubleAverageAggregationOperator.cs
- ServiceNameCollection.cs
- XamlBrushSerializer.cs
- AudioLevelUpdatedEventArgs.cs
- FontCacheLogic.cs
- WebPartConnection.cs
- TdsParserSessionPool.cs
- ProviderCommandInfoUtils.cs
- RequestSecurityTokenSerializer.cs
- mansign.cs
- AddInController.cs
- Point3DIndependentAnimationStorage.cs
- MsmqHostedTransportManager.cs
- WebPartDisplayModeCancelEventArgs.cs
- altserialization.cs
- ContentPosition.cs
- UserPreferenceChangedEventArgs.cs
- DataGridLinkButton.cs
- BamlLocalizabilityResolver.cs
- ExpressionBinding.cs
- ComponentCommands.cs
- ConfigurationStrings.cs
- UIElementAutomationPeer.cs
- CornerRadius.cs
- WebPartsSection.cs
- UndoUnit.cs
- localization.cs
- XPathException.cs
- RetriableClipboard.cs
- ValueOfAction.cs
- ReaderContextStackData.cs
- AnnotationStore.cs
- PersonalizationStateInfoCollection.cs
- EdmError.cs
- URLMembershipCondition.cs
- RuntimeHandles.cs
- LocalizationParserHooks.cs
- PropertyToken.cs
- ToolStripMenuItem.cs
- TracedNativeMethods.cs
- EntityClassGenerator.cs
- FrameworkElementFactory.cs
- EnumerableCollectionView.cs
- DataSourceXmlSubItemAttribute.cs
- DiscoveryClientChannelBase.cs
- ElementMarkupObject.cs
- Queue.cs
- ImmutableObjectAttribute.cs
- BaseParser.cs
- serverconfig.cs
- PerspectiveCamera.cs
- Blend.cs
- Matrix3DConverter.cs
- XmlnsDefinitionAttribute.cs
- SqlWriter.cs
- BindingExpression.cs
- MultiBinding.cs
- CodeDelegateInvokeExpression.cs
- TextRangeBase.cs
- ComboBoxRenderer.cs
- TemplateControlCodeDomTreeGenerator.cs
- StateMachineSubscriptionManager.cs