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
- CryptographicAttribute.cs
- CryptoApi.cs
- KeyTime.cs
- Image.cs
- WebPartDisplayModeCollection.cs
- ParserStreamGeometryContext.cs
- ValueConversionAttribute.cs
- GroupItemAutomationPeer.cs
- XmlStreamStore.cs
- ConfigDefinitionUpdates.cs
- DbModificationCommandTree.cs
- StylusShape.cs
- Rijndael.cs
- Registry.cs
- SqlTransaction.cs
- BamlVersionHeader.cs
- RolePrincipal.cs
- Point.cs
- BinaryFormatter.cs
- ForwardPositionQuery.cs
- XpsImage.cs
- MaskedTextProvider.cs
- _HeaderInfoTable.cs
- newinstructionaction.cs
- pingexception.cs
- AdapterUtil.cs
- DataControlFieldHeaderCell.cs
- ContentValidator.cs
- WindowsListViewItem.cs
- ImpersonationContext.cs
- Highlights.cs
- EntitySqlQueryCacheEntry.cs
- OleCmdHelper.cs
- DateRangeEvent.cs
- MarshalDirectiveException.cs
- HijriCalendar.cs
- Viewport3DAutomationPeer.cs
- Util.cs
- _FixedSizeReader.cs
- UpdatePanel.cs
- SaveWorkflowAsyncResult.cs
- Camera.cs
- HandledMouseEvent.cs
- TemplateParser.cs
- PropertyGridEditorPart.cs
- XmlSerializerVersionAttribute.cs
- DataKey.cs
- Tool.cs
- Parallel.cs
- VerificationAttribute.cs
- CharAnimationUsingKeyFrames.cs
- Evaluator.cs
- CodeDomConfigurationHandler.cs
- XmlLanguage.cs
- XmlElement.cs
- BoundField.cs
- OrderingExpression.cs
- HttpCacheParams.cs
- SR.cs
- CommonObjectSecurity.cs
- DataRowExtensions.cs
- ToolStripEditorManager.cs
- DefaultWorkflowSchedulerService.cs
- GridViewSelectEventArgs.cs
- ListViewDeleteEventArgs.cs
- WebPartUtil.cs
- DataBindingExpressionBuilder.cs
- XhtmlTextWriter.cs
- BaseUriHelper.cs
- EdmError.cs
- PolicyValidationException.cs
- XmlDataSourceNodeDescriptor.cs
- ImageEditor.cs
- HttpFormatExtensions.cs
- MobileErrorInfo.cs
- XmlILModule.cs
- XmlAttributes.cs
- UidManager.cs
- PreservationFileReader.cs
- ObjectNavigationPropertyMapping.cs
- WebPartDisplayModeEventArgs.cs
- ToolStripRenderEventArgs.cs
- ExpressionLexer.cs
- DataSourceView.cs
- WrapPanel.cs
- Matrix3DStack.cs
- BuildProvider.cs
- TraceFilter.cs
- SemanticKeyElement.cs
- WizardStepBase.cs
- SubqueryRules.cs
- PersonalizationStateInfo.cs
- ServiceObjectContainer.cs
- HostedTransportConfigurationManager.cs
- XmlSchemaCollection.cs
- ToolStripDropDownItemDesigner.cs
- PrinterSettings.cs
- FirstMatchCodeGroup.cs
- WorkflowMarkupSerializationException.cs
- WebPartVerbCollection.cs