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
- ContentDisposition.cs
- ValidateNames.cs
- DataPointer.cs
- UnsafeNativeMethods.cs
- filewebresponse.cs
- ChannelFactory.cs
- InputScope.cs
- EncryptedType.cs
- CreateBookmarkScope.cs
- PageRanges.cs
- StrokeRenderer.cs
- BezierSegment.cs
- PageRanges.cs
- MLangCodePageEncoding.cs
- PerspectiveCamera.cs
- WebControlParameterProxy.cs
- SoapReflector.cs
- DataStreams.cs
- AsnEncodedData.cs
- PropertyDescriptorCollection.cs
- PenThread.cs
- XamlInterfaces.cs
- UpdateCommand.cs
- DataControlPagerLinkButton.cs
- FormViewRow.cs
- Exception.cs
- StringAttributeCollection.cs
- NamespaceDecl.cs
- DiscoveryReference.cs
- HttpProfileBase.cs
- DeploymentExceptionMapper.cs
- RuntimeHelpers.cs
- StorageSetMapping.cs
- ImageFormat.cs
- TypefaceMetricsCache.cs
- BufferedGraphicsManager.cs
- SystemFonts.cs
- SchemaType.cs
- ListViewInsertedEventArgs.cs
- DiscoveryClientChannelBase.cs
- Padding.cs
- EpmSyndicationContentDeSerializer.cs
- SponsorHelper.cs
- ISAPIApplicationHost.cs
- FontFamily.cs
- UniqueIdentifierService.cs
- ClassDataContract.cs
- SecurityContextSecurityTokenParameters.cs
- ToolStripSeparator.cs
- Vector3DCollection.cs
- TypeTypeConverter.cs
- DivideByZeroException.cs
- ProfileGroupSettings.cs
- PageThemeCodeDomTreeGenerator.cs
- ProfileManager.cs
- IxmlLineInfo.cs
- DecoderFallback.cs
- CommandBinding.cs
- HwndSourceParameters.cs
- CodeParameterDeclarationExpressionCollection.cs
- TypeBuilder.cs
- TextBlockAutomationPeer.cs
- DesigntimeLicenseContext.cs
- MarkupExtensionParser.cs
- TemplateBindingExpressionConverter.cs
- WinInetCache.cs
- FaultReasonText.cs
- SpellerStatusTable.cs
- OrderPreservingMergeHelper.cs
- EventLogTraceListener.cs
- SQLDouble.cs
- InfocardChannelParameter.cs
- MonthChangedEventArgs.cs
- TemplateNameScope.cs
- MenuItemBinding.cs
- TemplateControlParser.cs
- FileNotFoundException.cs
- EncryptedKey.cs
- FixedHyperLink.cs
- Converter.cs
- AdPostCacheSubstitution.cs
- Events.cs
- TailPinnedEventArgs.cs
- ConcurrentBag.cs
- XmlNodeComparer.cs
- DataGridState.cs
- wgx_sdk_version.cs
- ListBox.cs
- BindingBase.cs
- ToolStripPanelRow.cs
- XmlSchemaObjectCollection.cs
- MultipleViewPattern.cs
- ControlCachePolicy.cs
- EncoderParameter.cs
- FormViewUpdatedEventArgs.cs
- Emitter.cs
- PageStatePersister.cs
- AutomationProperties.cs
- CodeSnippetTypeMember.cs
- ValidationSummary.cs