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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ReliabilityContractAttribute.cs
- ClientConvert.cs
- X509CertificateStore.cs
- GradientBrush.cs
- DiscoveryCallbackBehavior.cs
- ToolboxItemFilterAttribute.cs
- TraceData.cs
- RegexWriter.cs
- RecordsAffectedEventArgs.cs
- AutoResetEvent.cs
- SqlPersonalizationProvider.cs
- HtmlControlAdapter.cs
- ComboBoxItem.cs
- SchemaCompiler.cs
- Module.cs
- PointAnimationUsingPath.cs
- CompiledRegexRunner.cs
- WindowsImpersonationContext.cs
- UIElement3D.cs
- OleDbSchemaGuid.cs
- BoundsDrawingContextWalker.cs
- MdImport.cs
- HostExecutionContextManager.cs
- DataControlImageButton.cs
- ClientUtils.cs
- MessageSmuggler.cs
- SqlTransaction.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- EDesignUtil.cs
- RefreshPropertiesAttribute.cs
- SerializationInfo.cs
- TagMapInfo.cs
- WinInet.cs
- ThemeInfoAttribute.cs
- SerialPinChanges.cs
- WebDisplayNameAttribute.cs
- ProviderCollection.cs
- SelectedDatesCollection.cs
- SoapServerProtocol.cs
- ExpressionBinding.cs
- HttpHandler.cs
- ErrorTableItemStyle.cs
- _UriSyntax.cs
- hebrewshape.cs
- Pens.cs
- HierarchicalDataSourceDesigner.cs
- TextElement.cs
- ClientRolePrincipal.cs
- ValueChangedEventManager.cs
- CodePageUtils.cs
- SecurityTokenProvider.cs
- XamlInt32CollectionSerializer.cs
- XmlSecureResolver.cs
- DisposableCollectionWrapper.cs
- ThousandthOfEmRealDoubles.cs
- StorageFunctionMapping.cs
- SystemColors.cs
- SystemIPInterfaceProperties.cs
- UserThread.cs
- SupportsEventValidationAttribute.cs
- FormsAuthenticationEventArgs.cs
- SqlUDTStorage.cs
- CollectionBuilder.cs
- RunInstallerAttribute.cs
- SqlGatherProducedAliases.cs
- XPathDescendantIterator.cs
- SmtpReplyReaderFactory.cs
- FullTextBreakpoint.cs
- VirtualPathData.cs
- objectquery_tresulttype.cs
- BrushMappingModeValidation.cs
- PointCollectionConverter.cs
- EdmSchemaAttribute.cs
- TransactionScopeDesigner.cs
- Rect3D.cs
- ContainerUIElement3D.cs
- _IPv4Address.cs
- Rect3DConverter.cs
- TemplateKey.cs
- TextServicesPropertyRanges.cs
- CacheVirtualItemsEvent.cs
- TextDecorationUnitValidation.cs
- _AcceptOverlappedAsyncResult.cs
- Control.cs
- GlobalAclOperationRequirement.cs
- TaskFormBase.cs
- ThrowOnMultipleAssignment.cs
- XmlLinkedNode.cs
- UTF7Encoding.cs
- StateManagedCollection.cs
- OdbcConnectionFactory.cs
- StartFileNameEditor.cs
- FormViewCommandEventArgs.cs
- RoleManagerSection.cs
- ReferencedCategoriesDocument.cs
- DbCommandDefinition.cs
- PriorityQueue.cs
- InternalBase.cs
- ReferenceAssemblyAttribute.cs
- XmlNamespaceDeclarationsAttribute.cs