Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- ValidationSummary.cs
- TableLayoutCellPaintEventArgs.cs
- QilParameter.cs
- ArgumentOutOfRangeException.cs
- ExtenderProvidedPropertyAttribute.cs
- xml.cs
- GraphicsPathIterator.cs
- _ContextAwareResult.cs
- StatusBarPanelClickEvent.cs
- TextRunTypographyProperties.cs
- SqlInternalConnectionTds.cs
- NameValuePermission.cs
- CompositeScriptReference.cs
- Logging.cs
- InternalControlCollection.cs
- TextEditorSelection.cs
- FixedNode.cs
- DataGridViewToolTip.cs
- VolatileResourceManager.cs
- ExpressionBuilderContext.cs
- Brush.cs
- SHA1Managed.cs
- FunctionNode.cs
- _UncName.cs
- MenuItemCollection.cs
- DEREncoding.cs
- ItemType.cs
- AudioFormatConverter.cs
- WebPartVerb.cs
- ProviderConnectionPointCollection.cs
- HtmlSelect.cs
- PerspectiveCamera.cs
- CompiledELinqQueryState.cs
- TimeEnumHelper.cs
- SortKey.cs
- ManipulationInertiaStartingEventArgs.cs
- DataGridSortCommandEventArgs.cs
- StorageMappingItemLoader.cs
- SafeHGlobalHandleCritical.cs
- Metafile.cs
- DesignerListAdapter.cs
- AppLevelCompilationSectionCache.cs
- DecimalConverter.cs
- Polygon.cs
- BuildResult.cs
- MetaModel.cs
- ListSortDescription.cs
- SqlMethodCallConverter.cs
- SelectionUIService.cs
- Token.cs
- CodeEntryPointMethod.cs
- WebEventTraceProvider.cs
- XhtmlBasicValidatorAdapter.cs
- RemoteWebConfigurationHostServer.cs
- GridViewColumnHeader.cs
- Encoder.cs
- WindowsMenu.cs
- DbConnectionPool.cs
- FrameworkContentElementAutomationPeer.cs
- SessionSwitchEventArgs.cs
- Soap.cs
- ConstraintEnumerator.cs
- COM2ColorConverter.cs
- DiffuseMaterial.cs
- SerializableAuthorizationContext.cs
- Help.cs
- ToolStripGripRenderEventArgs.cs
- NetSectionGroup.cs
- CodeConstructor.cs
- ServerValidateEventArgs.cs
- HashCodeCombiner.cs
- DocumentPaginator.cs
- EventKeyword.cs
- ValidatedMobileControlConverter.cs
- controlskin.cs
- Typography.cs
- Model3DCollection.cs
- PageCatalogPart.cs
- BuilderInfo.cs
- ClientData.cs
- ObjectDataSourceDisposingEventArgs.cs
- ServiceNameCollection.cs
- PipeStream.cs
- SizeF.cs
- LogWriteRestartAreaAsyncResult.cs
- StreamInfo.cs
- ToolStripSettings.cs
- LineGeometry.cs
- HostedHttpTransportManager.cs
- TypeTypeConverter.cs
- OdbcEnvironmentHandle.cs
- DoubleLinkList.cs
- SystemIcmpV4Statistics.cs
- UIElementHelper.cs
- WebAdminConfigurationHelper.cs
- ConcurrencyBehavior.cs
- PowerEase.cs
- FileLogRecordHeader.cs
- DataGridViewTopRowAccessibleObject.cs
- PeerName.cs