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
- SyntaxCheck.cs
- SqlCacheDependency.cs
- pingexception.cs
- GenericWebPart.cs
- InfoCardSymmetricCrypto.cs
- XmlConvert.cs
- StaticExtension.cs
- TreeView.cs
- _SslState.cs
- As.cs
- followingquery.cs
- WebBrowserBase.cs
- XmlSchema.cs
- WindowsFormsHost.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- GroupJoinQueryOperator.cs
- ScanQueryOperator.cs
- Int32CollectionValueSerializer.cs
- PageStatePersister.cs
- WebSysDisplayNameAttribute.cs
- HtmlShim.cs
- Atom10FeedFormatter.cs
- EventLogConfiguration.cs
- AvTraceFormat.cs
- ControllableStoryboardAction.cs
- MetadataUtilsSmi.cs
- CharacterHit.cs
- WebPartsPersonalizationAuthorization.cs
- FlowNode.cs
- StylusButtonEventArgs.cs
- KeyboardEventArgs.cs
- Block.cs
- _LocalDataStoreMgr.cs
- DataBindingsDialog.cs
- ConnectionPointCookie.cs
- ResolveRequestResponseAsyncResult.cs
- ICspAsymmetricAlgorithm.cs
- DATA_BLOB.cs
- GeometryDrawing.cs
- Suspend.cs
- MemberAccessException.cs
- DBBindings.cs
- MD5.cs
- SqlServices.cs
- BitmapFrameEncode.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- View.cs
- GacUtil.cs
- NativeObjectSecurity.cs
- Span.cs
- RightsManagementUser.cs
- OrderablePartitioner.cs
- IdentityHolder.cs
- ProcessHost.cs
- UIElementParagraph.cs
- ContextStack.cs
- ImageSource.cs
- QilReference.cs
- C14NUtil.cs
- ProcessThread.cs
- ZoomPercentageConverter.cs
- Validator.cs
- Profiler.cs
- EncoderNLS.cs
- DataGridViewMethods.cs
- DrawListViewColumnHeaderEventArgs.cs
- Utility.cs
- DragEventArgs.cs
- DataKey.cs
- EntityParameter.cs
- AutoGeneratedFieldProperties.cs
- RangeValuePattern.cs
- HeaderedContentControl.cs
- MetadataItemEmitter.cs
- XpsPartBase.cs
- CodeTypeMemberCollection.cs
- HiddenFieldPageStatePersister.cs
- LinqDataSourceUpdateEventArgs.cs
- ConnectionManagementElement.cs
- ColumnBinding.cs
- DBParameter.cs
- ProfessionalColors.cs
- Hyperlink.cs
- WeakHashtable.cs
- XmlNodeChangedEventManager.cs
- AnnotationResourceCollection.cs
- GrammarBuilderBase.cs
- AssertFilter.cs
- ArithmeticLiteral.cs
- MenuItemStyle.cs
- ResourceExpressionBuilder.cs
- NameValueConfigurationElement.cs
- remotingproxy.cs
- TaiwanLunisolarCalendar.cs
- XmlElementAttributes.cs
- PropertyDescriptorComparer.cs
- BaseParser.cs
- MediaTimeline.cs
- UnsafeNativeMethods.cs
- CompModSwitches.cs