Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- StringArrayConverter.cs
- ComEventsSink.cs
- HtmlForm.cs
- DoubleAnimationClockResource.cs
- BitmapEffectDrawingContent.cs
- SapiGrammar.cs
- TabControl.cs
- FixedTextView.cs
- DESCryptoServiceProvider.cs
- SiteMap.cs
- WebPartTransformerCollection.cs
- Pkcs7Signer.cs
- OutOfProcStateClientManager.cs
- ButtonChrome.cs
- MetadataUtilsSmi.cs
- DependencyPropertyValueSerializer.cs
- SystemIPGlobalStatistics.cs
- PriorityBindingExpression.cs
- AppLevelCompilationSectionCache.cs
- HttpApplication.cs
- XmlArrayAttribute.cs
- ValueTypePropertyReference.cs
- TrustSection.cs
- DirectoryNotFoundException.cs
- SqlMethodAttribute.cs
- MessageHeaderDescriptionCollection.cs
- XmlSchemaValidationException.cs
- CommonGetThemePartSize.cs
- ObjectQueryState.cs
- CompatibleComparer.cs
- ExpressionEditorAttribute.cs
- DataTablePropertyDescriptor.cs
- GridViewColumnCollection.cs
- VisualStyleTypesAndProperties.cs
- CurrentTimeZone.cs
- MonitorWrapper.cs
- ImageCodecInfo.cs
- DialogResultConverter.cs
- ComAdminWrapper.cs
- GroupBoxDesigner.cs
- PropertyGridCommands.cs
- PropertyRecord.cs
- MetadataCache.cs
- ParameterCollection.cs
- DrawingContextDrawingContextWalker.cs
- Set.cs
- DbCommandTree.cs
- CodeDefaultValueExpression.cs
- InternalDispatchObject.cs
- MouseEventArgs.cs
- RenderData.cs
- XslAst.cs
- HealthMonitoringSectionHelper.cs
- CancelAsyncOperationRequest.cs
- arclist.cs
- ADMembershipProvider.cs
- TagPrefixInfo.cs
- PropertyGridView.cs
- OciEnlistContext.cs
- ChangesetResponse.cs
- RichTextBoxAutomationPeer.cs
- Debug.cs
- WebBrowserContainer.cs
- TextTreeInsertUndoUnit.cs
- EncryptRequest.cs
- XPathSelfQuery.cs
- FederatedMessageSecurityOverHttp.cs
- UIElementAutomationPeer.cs
- ConnectionInterfaceCollection.cs
- OracleConnectionStringBuilder.cs
- DeploymentSectionCache.cs
- CultureSpecificStringDictionary.cs
- ConstructorExpr.cs
- DataContractAttribute.cs
- XamlFrame.cs
- PersonalizationStateInfoCollection.cs
- AssemblyCollection.cs
- IndexedString.cs
- SafeArrayRankMismatchException.cs
- DataSvcMapFile.cs
- Convert.cs
- GroupItemAutomationPeer.cs
- CodeDelegateCreateExpression.cs
- CacheAxisQuery.cs
- relpropertyhelper.cs
- DispatchWrapper.cs
- ObjectDataSourceMethodEventArgs.cs
- ViewManager.cs
- DataGridViewCellPaintingEventArgs.cs
- ConditionalBranch.cs
- State.cs
- ImageIndexConverter.cs
- ColorAnimation.cs
- GenericsInstances.cs
- userdatakeys.cs
- XmlTextAttribute.cs
- ModelVisual3D.cs
- SchemaElementLookUpTable.cs
- ChtmlTextWriter.cs
- HttpPostClientProtocol.cs