Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------------- // //// 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
- CachedFontFace.cs
- XmlCharCheckingWriter.cs
- AuthenticationSection.cs
- VectorCollectionValueSerializer.cs
- SapiGrammar.cs
- TreeViewAutomationPeer.cs
- Pens.cs
- TableLayoutSettingsTypeConverter.cs
- DisableDpiAwarenessAttribute.cs
- InputLanguageManager.cs
- XmlNamespaceMapping.cs
- TypeLibConverter.cs
- XPathExpr.cs
- ThreadAttributes.cs
- BooleanConverter.cs
- TagMapInfo.cs
- TreeViewDesigner.cs
- Operators.cs
- ListBoxItemAutomationPeer.cs
- StringBuilder.cs
- ControlCodeDomSerializer.cs
- MsmqElementBase.cs
- XsltFunctions.cs
- GrammarBuilder.cs
- AssemblyCollection.cs
- TextEmbeddedObject.cs
- MethodImplAttribute.cs
- ContractBase.cs
- TypeNameConverter.cs
- UserControlCodeDomTreeGenerator.cs
- ReferentialConstraint.cs
- CodeSubDirectoriesCollection.cs
- ValueProviderWrapper.cs
- ParameterBuilder.cs
- PersonalizationStateInfo.cs
- PartialTrustHelpers.cs
- XpsColorContext.cs
- XsltInput.cs
- MailHeaderInfo.cs
- Constraint.cs
- WrapperSecurityCommunicationObject.cs
- RightsManagementInformation.cs
- XmlDocument.cs
- Listen.cs
- PreservationFileWriter.cs
- __TransparentProxy.cs
- DataRowComparer.cs
- EventWaitHandle.cs
- HelpProvider.cs
- externdll.cs
- ThreadAbortException.cs
- _ConnectionGroup.cs
- GlyphsSerializer.cs
- SafeRightsManagementQueryHandle.cs
- TextSearch.cs
- CqlGenerator.cs
- Atom10FormatterFactory.cs
- ToolboxItemCollection.cs
- Knowncolors.cs
- OdbcConnectionHandle.cs
- ThousandthOfEmRealPoints.cs
- DataPagerFieldCollection.cs
- SqlUdtInfo.cs
- WebServiceMethodData.cs
- UnsafeNetInfoNativeMethods.cs
- WeakReferenceEnumerator.cs
- Delegate.cs
- ThreadInterruptedException.cs
- Frame.cs
- SupportingTokenChannel.cs
- QilCloneVisitor.cs
- BitmapDownload.cs
- AuthStoreRoleProvider.cs
- CollectionConverter.cs
- CommandHelpers.cs
- WebPartConnectVerb.cs
- AppendHelper.cs
- shaper.cs
- LinqToSqlWrapper.cs
- WebPartTransformer.cs
- ContractUtils.cs
- Encoder.cs
- controlskin.cs
- StreamUpgradeInitiator.cs
- XmlTextReaderImpl.cs
- PersonalizablePropertyEntry.cs
- RadioButtonFlatAdapter.cs
- DEREncoding.cs
- IHttpResponseInternal.cs
- PersonalizationProviderCollection.cs
- Random.cs
- TextPointer.cs
- CodeIndexerExpression.cs
- CompositeFontInfo.cs
- BigInt.cs
- IgnoreSection.cs
- ListBindableAttribute.cs
- AsyncContentLoadedEventArgs.cs
- TypedTableBase.cs
- KnownIds.cs