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
- ValueChangedEventManager.cs
- TableColumn.cs
- FloaterBaseParagraph.cs
- ErrorTableItemStyle.cs
- WebPartCatalogCloseVerb.cs
- Profiler.cs
- EventDescriptorCollection.cs
- ProtocolReflector.cs
- DataBindingHandlerAttribute.cs
- ContentDesigner.cs
- StringPropertyBuilder.cs
- DataGridViewCellStyleBuilderDialog.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- VectorCollectionConverter.cs
- StateElementCollection.cs
- Utils.cs
- NetSectionGroup.cs
- CompilationUnit.cs
- AuthenticatedStream.cs
- TabPageDesigner.cs
- ServiceModelConfigurationSectionGroup.cs
- TextLine.cs
- OletxTransactionHeader.cs
- ListViewTableRow.cs
- Style.cs
- PLINQETWProvider.cs
- ConfigXmlReader.cs
- CommandLibraryHelper.cs
- SqlDataSourceTableQuery.cs
- _WebProxyDataBuilder.cs
- TouchEventArgs.cs
- ObjectViewListener.cs
- XmlWriterSettings.cs
- RenderData.cs
- WindowsIdentity.cs
- ChtmlPageAdapter.cs
- EncoderNLS.cs
- DispatcherEventArgs.cs
- ScrollItemPatternIdentifiers.cs
- Assert.cs
- Clock.cs
- WebConfigurationHostFileChange.cs
- ProfilePropertyNameValidator.cs
- WorkflowRuntime.cs
- SoapAttributeOverrides.cs
- DrawingBrush.cs
- PointCollectionValueSerializer.cs
- XamlTypeMapper.cs
- MDIClient.cs
- InstanceValue.cs
- ListViewItemSelectionChangedEvent.cs
- SoapAttributes.cs
- FormViewPagerRow.cs
- DataGridView.cs
- DataSourceDescriptorCollection.cs
- ManagementObjectCollection.cs
- RightsManagementPermission.cs
- XmlReflectionMember.cs
- HashMembershipCondition.cs
- DictionaryKeyPropertyAttribute.cs
- RoleManagerModule.cs
- LabelInfo.cs
- NavigationPropertyEmitter.cs
- SettingsSavedEventArgs.cs
- RemoteWebConfigurationHostStream.cs
- ObjectListDataBindEventArgs.cs
- QilChoice.cs
- DirectoryNotFoundException.cs
- CompilationUnit.cs
- EventSetter.cs
- RsaKeyIdentifierClause.cs
- XComponentModel.cs
- WebPartChrome.cs
- DesignerAutoFormatCollection.cs
- SqlUtils.cs
- StylusTip.cs
- DynamicMethod.cs
- Stopwatch.cs
- SystemIcons.cs
- SurrogateSelector.cs
- BmpBitmapDecoder.cs
- TypeConverter.cs
- PseudoWebRequest.cs
- ContextProperty.cs
- WebControlsSection.cs
- DeferrableContent.cs
- ImageAttributes.cs
- SendAgentStatusRequest.cs
- StructuralObject.cs
- TypeUsage.cs
- NativeObjectSecurity.cs
- DataColumnPropertyDescriptor.cs
- DecimalStorage.cs
- MaskDescriptors.cs
- DescendentsWalker.cs
- updatecommandorderer.cs
- FontStretches.cs
- DoubleLink.cs
- HyperLinkStyle.cs
- NotificationContext.cs