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
- DocumentScope.cs
- CustomCredentialPolicy.cs
- Image.cs
- GridViewSortEventArgs.cs
- TypeTypeConverter.cs
- ConfigXmlComment.cs
- validationstate.cs
- PrintPreviewDialog.cs
- ToolStripButton.cs
- ICollection.cs
- DurableEnlistmentState.cs
- CompiledAction.cs
- AsyncOperation.cs
- EventLogLink.cs
- NativeObjectSecurity.cs
- WebPartManagerInternals.cs
- GridViewCancelEditEventArgs.cs
- SchemaHelper.cs
- DataServiceContext.cs
- FormatSelectingMessageInspector.cs
- DetailsViewModeEventArgs.cs
- ArithmeticException.cs
- SqlProvider.cs
- _ProxyChain.cs
- RuntimeConfigLKG.cs
- DependencyPropertyHelper.cs
- ObjectDataSourceWizardForm.cs
- MailHeaderInfo.cs
- Font.cs
- FormsAuthenticationEventArgs.cs
- Focus.cs
- StringWriter.cs
- RelatedEnd.cs
- GridViewCommandEventArgs.cs
- ObjectAnimationUsingKeyFrames.cs
- TagNameToTypeMapper.cs
- _ListenerAsyncResult.cs
- BlobPersonalizationState.cs
- SerialPort.cs
- ColumnMapCopier.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- StrokeFIndices.cs
- dataprotectionpermissionattribute.cs
- ClickablePoint.cs
- XmlText.cs
- AdornerHitTestResult.cs
- EventLogTraceListener.cs
- CompositeKey.cs
- SecurityTokenAuthenticator.cs
- webeventbuffer.cs
- AdvancedBindingEditor.cs
- IIS7WorkerRequest.cs
- EntryIndex.cs
- XmlSchemaAny.cs
- XmlLinkedNode.cs
- precedingsibling.cs
- Vars.cs
- QuestionEventArgs.cs
- CallContext.cs
- ContextMenuAutomationPeer.cs
- UIElementAutomationPeer.cs
- PlainXmlSerializer.cs
- SecurityContextKeyIdentifierClause.cs
- RectAnimationUsingKeyFrames.cs
- XPathPatternParser.cs
- XmlValueConverter.cs
- precedingsibling.cs
- CursorConverter.cs
- XmlSchemaChoice.cs
- ClientBuildManagerCallback.cs
- SimpleApplicationHost.cs
- LoginCancelEventArgs.cs
- ListDesigner.cs
- X509CertificateClaimSet.cs
- UnsafeNativeMethods.cs
- DotExpr.cs
- IfJoinedCondition.cs
- DbDataSourceEnumerator.cs
- FullTextLine.cs
- XmlNodeWriter.cs
- DataError.cs
- EntityStoreSchemaFilterEntry.cs
- SortedDictionary.cs
- SQLDateTimeStorage.cs
- InkPresenterAutomationPeer.cs
- DbProviderFactories.cs
- ServiceBuildProvider.cs
- BamlReader.cs
- GAC.cs
- MoveSizeWinEventHandler.cs
- keycontainerpermission.cs
- TextTreeTextBlock.cs
- HtmlContainerControl.cs
- DesignerResources.cs
- EndPoint.cs
- DomNameTable.cs
- XpsImageSerializationService.cs
- oledbconnectionstring.cs
- TypeToken.cs
- BaseCollection.cs