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
- TagPrefixInfo.cs
- XmlSchemaInferenceException.cs
- MemberAccessException.cs
- _DigestClient.cs
- SynchronizedPool.cs
- FixedTextPointer.cs
- CombinedGeometry.cs
- MemberAssignmentAnalysis.cs
- DataPagerFieldCommandEventArgs.cs
- RoutingConfiguration.cs
- DataGridViewColumnEventArgs.cs
- Timer.cs
- _Connection.cs
- FileUtil.cs
- WSFederationHttpSecurity.cs
- FlowDocumentPaginator.cs
- NeutralResourcesLanguageAttribute.cs
- BitmapMetadataBlob.cs
- DataSourceXmlClassAttribute.cs
- WorkflowInstanceExtensionProvider.cs
- MetafileHeaderEmf.cs
- PropertyGroupDescription.cs
- ImageCollectionEditor.cs
- ScriptManagerProxy.cs
- CustomTrackingQuery.cs
- GridViewColumnCollectionChangedEventArgs.cs
- NamespaceEmitter.cs
- RewritingValidator.cs
- BaseParaClient.cs
- LazyTextWriterCreator.cs
- EncoderFallback.cs
- BaseDataBoundControl.cs
- GridViewCommandEventArgs.cs
- TabletCollection.cs
- EventToken.cs
- GridViewSelectEventArgs.cs
- CodeDelegateInvokeExpression.cs
- IPPacketInformation.cs
- RTTrackingProfile.cs
- NTAccount.cs
- CustomExpression.cs
- TextServicesPropertyRanges.cs
- HebrewNumber.cs
- ListBoxChrome.cs
- EntityDataSourceEntityTypeFilterItem.cs
- WebPartZoneBase.cs
- Encoding.cs
- FormatVersion.cs
- StateMachineHelpers.cs
- XmlImplementation.cs
- Latin1Encoding.cs
- CommandLibraryHelper.cs
- AesCryptoServiceProvider.cs
- DesignerToolStripControlHost.cs
- UnsafeNativeMethods.cs
- TransformProviderWrapper.cs
- MsmqElementBase.cs
- TableCell.cs
- ContextItem.cs
- GeneralTransform.cs
- ConnectionManagementElementCollection.cs
- BinaryParser.cs
- DrawListViewSubItemEventArgs.cs
- IdentityValidationException.cs
- LinqDataSourceValidationException.cs
- WsdlBuildProvider.cs
- SiteMapSection.cs
- CngAlgorithm.cs
- WebPartVerbCollection.cs
- HostSecurityManager.cs
- DataGridViewButtonCell.cs
- BlockCollection.cs
- QilStrConcatenator.cs
- ExtenderControl.cs
- FixUpCollection.cs
- ImageAnimator.cs
- CrossSiteScriptingValidation.cs
- SynchronizedPool.cs
- TrackingDataItemValue.cs
- WsdlInspector.cs
- ObjectDataProvider.cs
- DataBindingHandlerAttribute.cs
- ProxyManager.cs
- SurrogateSelector.cs
- TypePropertyEditor.cs
- ReliableInputConnection.cs
- Border.cs
- HybridDictionary.cs
- MenuEventArgs.cs
- DPCustomTypeDescriptor.cs
- DodSequenceMerge.cs
- CustomAttributeSerializer.cs
- AudioException.cs
- Context.cs
- XmlElementAttribute.cs
- PathFigure.cs
- DeflateStream.cs
- RightNameExpirationInfoPair.cs
- NavigatorInput.cs
- ResourceDescriptionAttribute.cs