Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EastAsianLunisolarCalendar.cs
- DisplayNameAttribute.cs
- SelectedGridItemChangedEvent.cs
- EncoderNLS.cs
- PropertyTabChangedEvent.cs
- WrapperEqualityComparer.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- MessageQuerySet.cs
- RectangleGeometry.cs
- InvokeWebService.cs
- RootBuilder.cs
- ConfigWriter.cs
- SqlFormatter.cs
- MinMaxParagraphWidth.cs
- DataColumnPropertyDescriptor.cs
- RawStylusSystemGestureInputReport.cs
- FixedPageProcessor.cs
- User.cs
- DbParameterCollectionHelper.cs
- RootBrowserWindowAutomationPeer.cs
- DecoderBestFitFallback.cs
- UrlMapping.cs
- TrimSurroundingWhitespaceAttribute.cs
- InterleavedZipPartStream.cs
- DateTimeParse.cs
- newinstructionaction.cs
- SafeNativeMethods.cs
- EndpointDiscoveryMetadata.cs
- PageThemeParser.cs
- StyleSelector.cs
- BackgroundFormatInfo.cs
- RepeatButtonAutomationPeer.cs
- SelectionHighlightInfo.cs
- XmlIterators.cs
- PersonalizationStateInfoCollection.cs
- AxisAngleRotation3D.cs
- CorrelationKeyCalculator.cs
- keycontainerpermission.cs
- SelectorItemAutomationPeer.cs
- RemoveStoryboard.cs
- ComponentRenameEvent.cs
- XmlArrayAttribute.cs
- DataBinder.cs
- TransformPatternIdentifiers.cs
- SvcMapFile.cs
- ScrollBarAutomationPeer.cs
- ResourcesGenerator.cs
- TableTextElementCollectionInternal.cs
- StandardBindingImporter.cs
- Message.cs
- LogReserveAndAppendState.cs
- Dispatcher.cs
- RequestNavigateEventArgs.cs
- TemplateColumn.cs
- EntityStoreSchemaFilterEntry.cs
- XmlSchemas.cs
- XmlSchemaAnnotation.cs
- SiteMapPath.cs
- LogAppendAsyncResult.cs
- BufferedGraphics.cs
- _Connection.cs
- BuildResultCache.cs
- DispatcherExceptionEventArgs.cs
- ChtmlLinkAdapter.cs
- DCSafeHandle.cs
- SortDescriptionCollection.cs
- RuleProcessor.cs
- COM2ExtendedBrowsingHandler.cs
- ClaimSet.cs
- StylusPlugin.cs
- SqlParameterCollection.cs
- UserControlCodeDomTreeGenerator.cs
- HashMembershipCondition.cs
- ObjRef.cs
- DataGridViewControlCollection.cs
- DocumentStatusResources.cs
- SqlDataSourceCommandEventArgs.cs
- SendReply.cs
- ToolStripPanelRenderEventArgs.cs
- ImageMapEventArgs.cs
- DbConnectionPoolGroup.cs
- SqlDesignerDataSourceView.cs
- TreeWalkHelper.cs
- DrawingGroup.cs
- DecodeHelper.cs
- ServiceModelSectionGroup.cs
- FormsAuthenticationTicket.cs
- ConfigurationManagerHelper.cs
- Clock.cs
- FederatedMessageSecurityOverHttpElement.cs
- ToolBar.cs
- Stack.cs
- ArrayTypeMismatchException.cs
- RelationshipDetailsRow.cs
- CharStorage.cs
- ControlPaint.cs
- FacetValues.cs
- ToolConsole.cs
- WebPartTransformer.cs
- MenuEventArgs.cs