Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- ContractBase.cs
- BaseTemplateBuildProvider.cs
- DiscoveryDocumentSerializer.cs
- StylusEditingBehavior.cs
- TerminateSequence.cs
- RSAPKCS1SignatureFormatter.cs
- PersistenceTask.cs
- MulticastIPAddressInformationCollection.cs
- ExtendedTransformFactory.cs
- FieldToken.cs
- TimeManager.cs
- GCHandleCookieTable.cs
- ObjectAnimationUsingKeyFrames.cs
- Rule.cs
- NumericExpr.cs
- RuleSetReference.cs
- VBCodeProvider.cs
- Debug.cs
- MenuBase.cs
- HtmlInputControl.cs
- XmlFormatReaderGenerator.cs
- DbConnectionInternal.cs
- TargetConverter.cs
- OdbcUtils.cs
- Executor.cs
- DBCSCodePageEncoding.cs
- Inline.cs
- Roles.cs
- Expander.cs
- WebPartConnectionsEventArgs.cs
- LabelAutomationPeer.cs
- Input.cs
- ActivationService.cs
- ImageAttributes.cs
- SystemKeyConverter.cs
- ColorTranslator.cs
- CreateParams.cs
- WriteTimeStream.cs
- JsonWriter.cs
- ResourceAttributes.cs
- TextContainer.cs
- SystemEvents.cs
- XmlStreamNodeWriter.cs
- DayRenderEvent.cs
- WebBrowserBase.cs
- SqlCacheDependencyDatabaseCollection.cs
- StringFunctions.cs
- ShapeTypeface.cs
- Marshal.cs
- DiscoveryDocumentLinksPattern.cs
- SourceChangedEventArgs.cs
- ColorTransform.cs
- CachedPathData.cs
- NonNullItemCollection.cs
- DataGridViewColumnEventArgs.cs
- Rotation3DAnimationUsingKeyFrames.cs
- SizeAnimation.cs
- InheritanceContextHelper.cs
- XmlSchemaAll.cs
- TraceSwitch.cs
- SynchronizationLockException.cs
- SiteOfOriginContainer.cs
- SessionViewState.cs
- TextOptions.cs
- BamlMapTable.cs
- DecoderFallbackWithFailureFlag.cs
- XmlDocument.cs
- EntityDataSourceState.cs
- WindowsListViewItemStartMenu.cs
- PresentationAppDomainManager.cs
- ParseChildrenAsPropertiesAttribute.cs
- XmlNodeReader.cs
- DropDownButton.cs
- SubMenuStyleCollectionEditor.cs
- TextEmbeddedObject.cs
- StrokeNodeOperations.cs
- TextTreeDeleteContentUndoUnit.cs
- NotifyInputEventArgs.cs
- VersionedStreamOwner.cs
- BulletedListDesigner.cs
- SizeLimitedCache.cs
- RegisterResponseInfo.cs
- ProviderConnectionPointCollection.cs
- FixedElement.cs
- Constraint.cs
- AttachedPropertyBrowsableAttribute.cs
- StorageFunctionMapping.cs
- HtmlButton.cs
- ExpressionWriter.cs
- PrintPreviewDialog.cs
- Rotation3DAnimationUsingKeyFrames.cs
- SqlError.cs
- DefinitionUpdate.cs
- DataSourceView.cs
- DialogResultConverter.cs
- ReflectEventDescriptor.cs
- DataServiceProcessingPipeline.cs
- SafeArrayRankMismatchException.cs
- PopupRoot.cs
- Lazy.cs