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
- SoapServerMessage.cs
- AudioException.cs
- CheckBox.cs
- HttpListenerRequestTraceRecord.cs
- RegexTree.cs
- ArraySubsetEnumerator.cs
- webproxy.cs
- CursorInteropHelper.cs
- TypeConverterValueSerializer.cs
- CommandID.cs
- AttributeAction.cs
- TextServicesCompartmentContext.cs
- OleStrCAMarshaler.cs
- SID.cs
- RectAnimationClockResource.cs
- LineVisual.cs
- AnnouncementEventArgs.cs
- TemplateBaseAction.cs
- Ticks.cs
- BuildResultCache.cs
- ContentElement.cs
- SqlAliasesReferenced.cs
- XmlnsCompatibleWithAttribute.cs
- ValidationUtility.cs
- FtpWebResponse.cs
- PlainXmlWriter.cs
- FontEmbeddingManager.cs
- PageParserFilter.cs
- XmlIncludeAttribute.cs
- DataGridViewBand.cs
- FormsAuthentication.cs
- ConstantSlot.cs
- ContentPresenter.cs
- Compiler.cs
- SerializableTypeCodeDomSerializer.cs
- ProfilePropertySettingsCollection.cs
- XmlDocumentFragment.cs
- IriParsingElement.cs
- DoubleLinkList.cs
- XmlHierarchicalDataSourceView.cs
- Number.cs
- SiteMapDesignerDataSourceView.cs
- ProcessModelInfo.cs
- ParseHttpDate.cs
- WindowAutomationPeer.cs
- DuplicateMessageDetector.cs
- FrameworkName.cs
- HtmlControlAdapter.cs
- BamlMapTable.cs
- NotifyIcon.cs
- CellCreator.cs
- StateChangeEvent.cs
- DataError.cs
- Binding.cs
- DataStorage.cs
- PeerInputChannel.cs
- SecurityRuntime.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- ListControlConvertEventArgs.cs
- CodeGroup.cs
- InstanceKeyNotReadyException.cs
- ObservableCollectionDefaultValueFactory.cs
- GroupAggregateExpr.cs
- OptionUsage.cs
- ModuleElement.cs
- InvocationExpression.cs
- Effect.cs
- RepeatInfo.cs
- GridViewSortEventArgs.cs
- ApplicationHost.cs
- RotationValidation.cs
- ColorInterpolationModeValidation.cs
- LoginNameDesigner.cs
- PackWebRequest.cs
- EventWaitHandle.cs
- DocumentViewerConstants.cs
- GcHandle.cs
- ViewPort3D.cs
- MimeTypeMapper.cs
- DocumentSignatureManager.cs
- XmlNode.cs
- PointF.cs
- LookupBindingPropertiesAttribute.cs
- AttributeEmitter.cs
- DataGridViewCellLinkedList.cs
- PersonalizationState.cs
- EntityDataSourceContainerNameItem.cs
- HitTestResult.cs
- ActivityBindForm.cs
- VBIdentifierName.cs
- SqlExpander.cs
- CollectionBase.cs
- DataTableReader.cs
- DataGridRelationshipRow.cs
- ShapingEngine.cs
- StatusInfoItem.cs
- FormsAuthenticationConfiguration.cs
- SessionStateItemCollection.cs
- ResourceProviderFactory.cs
- FloatUtil.cs