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
- Form.cs
- RadioButtonStandardAdapter.cs
- DataRecordInternal.cs
- SizeConverter.cs
- PieceDirectory.cs
- DataSet.cs
- DSASignatureDeformatter.cs
- SocketException.cs
- SwitchElementsCollection.cs
- BufferedGraphicsManager.cs
- controlskin.cs
- IProvider.cs
- VisualTreeUtils.cs
- SeverityFilter.cs
- CodeRemoveEventStatement.cs
- UriWriter.cs
- invalidudtexception.cs
- TraceContextRecord.cs
- SchemaName.cs
- DrawingContextWalker.cs
- AdornerDecorator.cs
- Matrix3DConverter.cs
- OleDbErrorCollection.cs
- Form.cs
- GridViewDeleteEventArgs.cs
- ListViewDeleteEventArgs.cs
- RequestResponse.cs
- MaskedTextBoxTextEditor.cs
- DoubleIndependentAnimationStorage.cs
- UpdatePanelTriggerCollection.cs
- BitmapPalette.cs
- ExceptionHandlers.cs
- OdbcException.cs
- PreDigestedSignedInfo.cs
- SmiEventSink_Default.cs
- RowCache.cs
- InitializingNewItemEventArgs.cs
- UIElement3D.cs
- XPathNode.cs
- SqlDeflator.cs
- Font.cs
- ChtmlPageAdapter.cs
- ExpressionTextBox.xaml.cs
- PerfCounters.cs
- IQueryable.cs
- SlotInfo.cs
- Debug.cs
- StorageComplexPropertyMapping.cs
- loginstatus.cs
- CancellationToken.cs
- WebControlAdapter.cs
- TextParentUndoUnit.cs
- UpdateCompiler.cs
- WeakReferenceKey.cs
- TextDecorations.cs
- GridViewDeletedEventArgs.cs
- ProviderSettings.cs
- TemplateManager.cs
- DataSourceHelper.cs
- WebHttpDispatchOperationSelector.cs
- MonthChangedEventArgs.cs
- ModelFunctionTypeElement.cs
- ProfileSection.cs
- MetadataCacheItem.cs
- SqlMetaData.cs
- OracleLob.cs
- CipherData.cs
- DataGridViewColumnEventArgs.cs
- RoutedPropertyChangedEventArgs.cs
- Geometry.cs
- PropertyIDSet.cs
- ContextMenu.cs
- XPathExpr.cs
- InkSerializer.cs
- metadatamappinghashervisitor.cs
- ProfileProvider.cs
- ListViewItemEventArgs.cs
- ParameterToken.cs
- ScriptRegistrationManager.cs
- CanExecuteRoutedEventArgs.cs
- MarshalDirectiveException.cs
- ForceCopyBuildProvider.cs
- datacache.cs
- SizeAnimation.cs
- EntityCommand.cs
- DecoderFallbackWithFailureFlag.cs
- AnimationClockResource.cs
- AssociatedControlConverter.cs
- XPathSelfQuery.cs
- RightNameExpirationInfoPair.cs
- Int64KeyFrameCollection.cs
- ExtensibleClassFactory.cs
- CanExecuteRoutedEventArgs.cs
- ToolStripPanelRow.cs
- WorkflowInlining.cs
- HelpProvider.cs
- EncodedStreamFactory.cs
- ReflectionHelper.cs
- TreeNodeCollection.cs
- CommandValueSerializer.cs