Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / Win32Providers / MS / Internal / AutomationProxies / SafeProcessHandle.cs / 1305600 / 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
- InstanceDataCollectionCollection.cs
- CodeGen.cs
- CurrencyWrapper.cs
- PropertyCollection.cs
- WebReferencesBuildProvider.cs
- StringInfo.cs
- HScrollProperties.cs
- Calendar.cs
- FunctionOverloadResolver.cs
- EventMap.cs
- OleDbMetaDataFactory.cs
- RadialGradientBrush.cs
- UrlPropertyAttribute.cs
- ObjectStorage.cs
- IpcServerChannel.cs
- BitmapEffect.cs
- ProfileBuildProvider.cs
- NullableIntAverageAggregationOperator.cs
- VariantWrapper.cs
- AutoResetEvent.cs
- DataGridRowAutomationPeer.cs
- HttpException.cs
- Profiler.cs
- ViewGenResults.cs
- ProfessionalColorTable.cs
- MulticastDelegate.cs
- DesignerActionItem.cs
- MatrixAnimationUsingKeyFrames.cs
- ControlBindingsConverter.cs
- ToolStripLocationCancelEventArgs.cs
- BoolLiteral.cs
- InvokePattern.cs
- StringPropertyBuilder.cs
- SnapLine.cs
- EntityDataSourceChangedEventArgs.cs
- XmlConvert.cs
- _NegoState.cs
- XmlSerializerObjectSerializer.cs
- Merger.cs
- RedistVersionInfo.cs
- XPathSelfQuery.cs
- ItemsControlAutomationPeer.cs
- LoginNameDesigner.cs
- ScalarConstant.cs
- DeclaredTypeElementCollection.cs
- MouseActionConverter.cs
- RenderDataDrawingContext.cs
- RegisteredExpandoAttribute.cs
- FontWeight.cs
- OledbConnectionStringbuilder.cs
- RowUpdatingEventArgs.cs
- QilXmlWriter.cs
- ApplicationException.cs
- ConsoleCancelEventArgs.cs
- MergeFailedEvent.cs
- Error.cs
- XPathDocumentIterator.cs
- MethodToken.cs
- Frame.cs
- WebPartConnectionsConfigureVerb.cs
- FileClassifier.cs
- InputReportEventArgs.cs
- LoginNameDesigner.cs
- DrawingState.cs
- ToolStripDropDownClosedEventArgs.cs
- CallbackException.cs
- MessagePropertyAttribute.cs
- PrintDialogException.cs
- FrameAutomationPeer.cs
- OleDbRowUpdatingEvent.cs
- XomlCompilerResults.cs
- ScrollBar.cs
- ObjectDataSourceEventArgs.cs
- MailWriter.cs
- SchemeSettingElement.cs
- GroupByExpressionRewriter.cs
- DoubleUtil.cs
- SettingsAttributes.cs
- RequestQueryParser.cs
- DataGridViewCheckBoxCell.cs
- ReceiveErrorHandling.cs
- RightsManagementEncryptedStream.cs
- UpdateExpressionVisitor.cs
- UnaryNode.cs
- SettingsProviderCollection.cs
- HttpListenerRequest.cs
- CompiledQueryCacheEntry.cs
- TraceLog.cs
- CompoundFileReference.cs
- TranslateTransform3D.cs
- DSASignatureFormatter.cs
- TextLineResult.cs
- SafeNativeMethodsMilCoreApi.cs
- XPathNodeIterator.cs
- UnsafeNetInfoNativeMethods.cs
- SafeWaitHandle.cs
- SystemIcons.cs
- DateTimeOffsetConverter.cs
- ProcessHostMapPath.cs
- UnsupportedPolicyOptionsException.cs