Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- StylusCaptureWithinProperty.cs
- EtwProvider.cs
- StatusBarDrawItemEvent.cs
- UIntPtr.cs
- AudioStateChangedEventArgs.cs
- IISUnsafeMethods.cs
- PropertyPathConverter.cs
- ProxyHelper.cs
- DbParameterHelper.cs
- XmlSchemaCollection.cs
- InheritanceContextChangedEventManager.cs
- ContactManager.cs
- InteropDesigner.xaml.cs
- MemberInfoSerializationHolder.cs
- PassportAuthentication.cs
- ComponentEvent.cs
- DataRowComparer.cs
- BufferAllocator.cs
- ReadOnlyCollection.cs
- UnicastIPAddressInformationCollection.cs
- RijndaelCryptoServiceProvider.cs
- SBCSCodePageEncoding.cs
- Facet.cs
- DataListItemEventArgs.cs
- AddressAccessDeniedException.cs
- TransactionFlowAttribute.cs
- SkinBuilder.cs
- bindurihelper.cs
- ResourceManager.cs
- ResourcesGenerator.cs
- GetWinFXPath.cs
- Thread.cs
- LazyInitializer.cs
- PrintPreviewDialog.cs
- ToolStripDropDown.cs
- Hash.cs
- DataGridDesigner.cs
- RemotingConfigParser.cs
- ConditionalAttribute.cs
- FolderBrowserDialogDesigner.cs
- SimpleMailWebEventProvider.cs
- XmlSerializerSection.cs
- SizeFConverter.cs
- NonBatchDirectoryCompiler.cs
- WizardPanel.cs
- Sequence.cs
- IIS7WorkerRequest.cs
- SystemTcpConnection.cs
- PrintPageEvent.cs
- DocumentXmlWriter.cs
- ModelEditingScope.cs
- LinqDataSourceSelectEventArgs.cs
- Compiler.cs
- ObjectViewFactory.cs
- CssStyleCollection.cs
- ToolStripSettings.cs
- TextServicesCompartmentEventSink.cs
- AuthenticationService.cs
- AccessViolationException.cs
- AncestorChangedEventArgs.cs
- ServiceControllerDesigner.cs
- PersonalizationState.cs
- QueryTask.cs
- KeyInfo.cs
- SQLInt16.cs
- FunctionUpdateCommand.cs
- CalendarData.cs
- ACE.cs
- BatchStream.cs
- ValidationEventArgs.cs
- CompoundFileIOPermission.cs
- PointConverter.cs
- DataServiceRequestOfT.cs
- DataViewSetting.cs
- RoutedEvent.cs
- DesignConnection.cs
- SectionVisual.cs
- KernelTypeValidation.cs
- ProfilePropertyMetadata.cs
- IPAddressCollection.cs
- UIElementHelper.cs
- RouteParameter.cs
- Compiler.cs
- ContextToken.cs
- DataObject.cs
- Nodes.cs
- StyleTypedPropertyAttribute.cs
- AxImporter.cs
- DataShape.cs
- TableLayout.cs
- TemplateFactory.cs
- Classification.cs
- TypeBuilder.cs
- ArgumentFixer.cs
- TextTreeTextNode.cs
- CodeTypeParameterCollection.cs
- GroupBoxAutomationPeer.cs
- RecognizerStateChangedEventArgs.cs
- BaseValidator.cs
- IdentityHolder.cs