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
- ApplicationTrust.cs
- HttpResponse.cs
- DateRangeEvent.cs
- DbMetaDataColumnNames.cs
- LinkLabelLinkClickedEvent.cs
- SudsParser.cs
- GridViewRow.cs
- Rect3DValueSerializer.cs
- TextModifierScope.cs
- SystemIPv6InterfaceProperties.cs
- ProcessHostConfigUtils.cs
- ListViewDeletedEventArgs.cs
- HtmlTableCell.cs
- DynamicPropertyHolder.cs
- SystemColorTracker.cs
- XMLSchema.cs
- ByeMessage11.cs
- PhysicalOps.cs
- ManagementObjectCollection.cs
- EntityContainerEmitter.cs
- Stylus.cs
- _ConnectOverlappedAsyncResult.cs
- QueryResults.cs
- RC2.cs
- SafeLocalMemHandle.cs
- InvalidCommandTreeException.cs
- DeferredRunTextReference.cs
- ArrayMergeHelper.cs
- NetworkStream.cs
- TraceHwndHost.cs
- StaticResourceExtension.cs
- SqlCommandSet.cs
- NetSectionGroup.cs
- ImageButton.cs
- SkipStoryboardToFill.cs
- QueryContext.cs
- HwndKeyboardInputProvider.cs
- ConfigXmlCDataSection.cs
- TraceProvider.cs
- OutputCacheSection.cs
- RawContentTypeMapper.cs
- ProfileBuildProvider.cs
- RotationValidation.cs
- SplitterEvent.cs
- InspectionWorker.cs
- Ops.cs
- RowVisual.cs
- UnsafeNativeMethods.cs
- Vector.cs
- PlainXmlSerializer.cs
- PersonalizationState.cs
- IISMapPath.cs
- BitStack.cs
- HttpConfigurationContext.cs
- ComPlusTypeLoader.cs
- RTLAwareMessageBox.cs
- Point4DValueSerializer.cs
- CapabilitiesUse.cs
- MonikerHelper.cs
- NotifyIcon.cs
- GcHandle.cs
- QilNode.cs
- UniqueIdentifierService.cs
- ImportContext.cs
- IPGlobalProperties.cs
- Ref.cs
- COM2ExtendedBrowsingHandler.cs
- SqlDataSource.cs
- RawKeyboardInputReport.cs
- PersonalizablePropertyEntry.cs
- EarlyBoundInfo.cs
- CopyOfAction.cs
- WebBrowserHelper.cs
- SymbolMethod.cs
- DataServiceContext.cs
- Calendar.cs
- OleDbTransaction.cs
- SubclassTypeValidatorAttribute.cs
- CmsInterop.cs
- MdiWindowListItemConverter.cs
- NetSectionGroup.cs
- EntityChangedParams.cs
- BindingsCollection.cs
- StatementContext.cs
- OutputCacheModule.cs
- AdRotator.cs
- CustomErrorCollection.cs
- ZeroOpNode.cs
- XmlSchemaSubstitutionGroup.cs
- Paragraph.cs
- Transform3DCollection.cs
- ItemChangedEventArgs.cs
- CorruptingExceptionCommon.cs
- UnauthorizedAccessException.cs
- PropertyPath.cs
- ProxyAttribute.cs
- ThicknessAnimation.cs
- HierarchicalDataBoundControl.cs
- JournalEntryListConverter.cs
- DiscoveryClientElement.cs