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
- XmlExceptionHelper.cs
- DeviceContext.cs
- WindowsBrush.cs
- UrlParameterWriter.cs
- DataGridViewRowCancelEventArgs.cs
- ChannelListenerBase.cs
- CodeSubDirectoriesCollection.cs
- ToolStripItemClickedEventArgs.cs
- UnmanagedBitmapWrapper.cs
- VariableDesigner.xaml.cs
- ReachIDocumentPaginatorSerializerAsync.cs
- _ConnectOverlappedAsyncResult.cs
- StreamMarshaler.cs
- BezierSegment.cs
- QilValidationVisitor.cs
- ProgressBarBrushConverter.cs
- _ScatterGatherBuffers.cs
- UnsafeNativeMethods.cs
- StatusBar.cs
- DataGridViewComboBoxEditingControl.cs
- CodeTypeDeclarationCollection.cs
- AuthStoreRoleProvider.cs
- DataGridHyperlinkColumn.cs
- StringSource.cs
- Automation.cs
- UntrustedRecipientException.cs
- SortedDictionary.cs
- LoginViewDesigner.cs
- PointAnimationBase.cs
- GC.cs
- FileDialog.cs
- RequestCachingSection.cs
- BamlBinaryReader.cs
- SmtpNtlmAuthenticationModule.cs
- NetMsmqBindingElement.cs
- TokenBasedSet.cs
- ModelItemCollectionImpl.cs
- CodeTypeReferenceExpression.cs
- TripleDES.cs
- Int16.cs
- CollectionViewGroup.cs
- LicenseProviderAttribute.cs
- ListenerConstants.cs
- UDPClient.cs
- ConnectionsZone.cs
- TypefaceMetricsCache.cs
- ValidationEventArgs.cs
- SoapObjectReader.cs
- XPathChildIterator.cs
- SqlCacheDependencyDatabaseCollection.cs
- SupportsEventValidationAttribute.cs
- DigitalSignatureProvider.cs
- XPathNodeList.cs
- PropertyGeneratedEventArgs.cs
- SqlStream.cs
- DbMetaDataCollectionNames.cs
- ExpressionValueEditor.cs
- ContentFileHelper.cs
- SelectorAutomationPeer.cs
- MemoryStream.cs
- MethodBuilderInstantiation.cs
- SecurityHeader.cs
- Floater.cs
- SerializationObjectManager.cs
- ImportContext.cs
- sqlpipe.cs
- EnumCodeDomSerializer.cs
- SqlParameterizer.cs
- ObjectDataSource.cs
- DynamicPropertyReader.cs
- ZipIOModeEnforcingStream.cs
- DataGridViewHeaderCell.cs
- FixedSOMElement.cs
- ErrorEventArgs.cs
- DeadCharTextComposition.cs
- FrugalList.cs
- PrimitiveXmlSerializers.cs
- DataObjectPastingEventArgs.cs
- DataGridParentRows.cs
- LineVisual.cs
- UICuesEvent.cs
- QueryAccessibilityHelpEvent.cs
- CacheChildrenQuery.cs
- TraceSection.cs
- SizeF.cs
- FacetDescription.cs
- CharAnimationBase.cs
- HyperLinkField.cs
- ThemeableAttribute.cs
- WebPartConnectionsConnectVerb.cs
- MethodRental.cs
- EntitySqlQueryState.cs
- UserControl.cs
- TableDetailsCollection.cs
- NativeMethodsCLR.cs
- KeyInterop.cs
- FontCollection.cs
- KnownBoxes.cs
- AssemblyCache.cs
- validationstate.cs