Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- IEnumerable.cs
- Trace.cs
- ImageSourceValueSerializer.cs
- Form.cs
- CacheRequest.cs
- SmiEventSink.cs
- SmtpNegotiateAuthenticationModule.cs
- MsmqIntegrationInputMessage.cs
- AccessDataSourceView.cs
- SizeF.cs
- UserControl.cs
- CustomLineCap.cs
- TerminateDesigner.cs
- RelOps.cs
- StaticDataManager.cs
- ObjectDataSource.cs
- DataConnectionHelper.cs
- DockingAttribute.cs
- InkCanvasInnerCanvas.cs
- BridgeDataRecord.cs
- OdbcEnvironmentHandle.cs
- DataControlFieldHeaderCell.cs
- Listbox.cs
- StructuralCache.cs
- CommonRemoteMemoryBlock.cs
- ResourceManagerWrapper.cs
- DirectoryInfo.cs
- ApplicationServiceManager.cs
- SchemaTypeEmitter.cs
- Clock.cs
- _ScatterGatherBuffers.cs
- CollectionConverter.cs
- NavigationPropertyEmitter.cs
- DynamicRendererThreadManager.cs
- HwndHostAutomationPeer.cs
- DataSourceView.cs
- TopClause.cs
- GradientSpreadMethodValidation.cs
- SmuggledIUnknown.cs
- TableRowCollection.cs
- FloaterBaseParagraph.cs
- NativeMethods.cs
- ProfilePropertySettingsCollection.cs
- SQLByteStorage.cs
- CfgParser.cs
- ClientSettingsProvider.cs
- lengthconverter.cs
- MDIClient.cs
- _FixedSizeReader.cs
- StrokeCollectionDefaultValueFactory.cs
- LayoutTable.cs
- InlineUIContainer.cs
- XmlValueConverter.cs
- HtmlTableRowCollection.cs
- Color.cs
- AnnotationStore.cs
- SplashScreenNativeMethods.cs
- InertiaExpansionBehavior.cs
- TextRange.cs
- Events.cs
- FormatConvertedBitmap.cs
- OperationValidationEventArgs.cs
- XamlGridLengthSerializer.cs
- login.cs
- NamespaceInfo.cs
- UnsafeNativeMethods.cs
- ManagedFilter.cs
- UrlAuthFailureHandler.cs
- MulticastOption.cs
- TextWriter.cs
- ProfilePropertyNameValidator.cs
- DiffuseMaterial.cs
- CapiNative.cs
- TextLineResult.cs
- ColumnHeaderConverter.cs
- XmlSchemaImporter.cs
- SymLanguageType.cs
- UiaCoreApi.cs
- StyleHelper.cs
- cookiecollection.cs
- RemotingConfigParser.cs
- TrackBarRenderer.cs
- OraclePermissionAttribute.cs
- SelectionEditingBehavior.cs
- ChooseAction.cs
- KoreanLunisolarCalendar.cs
- UnsafeNativeMethodsTablet.cs
- MarkupCompilePass1.cs
- DataExpression.cs
- XmlReturnReader.cs
- DataStorage.cs
- ConnectionManagementElementCollection.cs
- ContentTextAutomationPeer.cs
- CustomPopupPlacement.cs
- CompressionTransform.cs
- SqlConnectionPoolGroupProviderInfo.cs
- Pen.cs
- BitmapPalette.cs
- XmlCountingReader.cs
- TimeSpanStorage.cs