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
- ButtonFieldBase.cs
- SplitContainer.cs
- ControlAdapter.cs
- ReachSerializationCacheItems.cs
- InstanceDataCollectionCollection.cs
- XmlSerializerAssemblyAttribute.cs
- BaseAddressElement.cs
- QilVisitor.cs
- PointLightBase.cs
- AutomationProperties.cs
- MenuItemAutomationPeer.cs
- RegistrySecurity.cs
- StandardOleMarshalObject.cs
- WebPartVerb.cs
- VirtualizingStackPanel.cs
- NotFiniteNumberException.cs
- WinFormsSecurity.cs
- StructuredTypeEmitter.cs
- MembershipSection.cs
- StringDictionaryEditor.cs
- HostProtectionException.cs
- LayoutEditorPart.cs
- PopupEventArgs.cs
- TemplateColumn.cs
- StatusBarItem.cs
- ScrollItemProviderWrapper.cs
- ListCollectionView.cs
- ScrollContentPresenter.cs
- GiveFeedbackEventArgs.cs
- NullExtension.cs
- DrawingContextWalker.cs
- DataBinder.cs
- ByteAnimationBase.cs
- MetaModel.cs
- VerticalAlignConverter.cs
- CharacterString.cs
- ReferenceEqualityComparer.cs
- FixedStringLookup.cs
- XmlSchemaNotation.cs
- WebUtil.cs
- SubpageParagraph.cs
- GeometryConverter.cs
- XmlSchemaCompilationSettings.cs
- Rotation3D.cs
- XmlSchemaInfo.cs
- CodeAttributeArgument.cs
- MultiSelector.cs
- CoreSwitches.cs
- MemoryMappedView.cs
- TransactionFlowOption.cs
- XmlnsCache.cs
- CompilerError.cs
- DragStartedEventArgs.cs
- SystemIcmpV6Statistics.cs
- AliasExpr.cs
- ApplicationDirectoryMembershipCondition.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- XmlValidatingReaderImpl.cs
- XmlDataContract.cs
- FillBehavior.cs
- PropertyToken.cs
- Mouse.cs
- SiteMapDataSource.cs
- QuotedStringFormatReader.cs
- FileVersionInfo.cs
- GridViewSortEventArgs.cs
- CodeBinaryOperatorExpression.cs
- ProcessRequestArgs.cs
- ObjectPersistData.cs
- CommandBindingCollection.cs
- InternalControlCollection.cs
- TemplateControlParser.cs
- DynamicResourceExtension.cs
- Utilities.cs
- TemplateAction.cs
- DataTable.cs
- OrderedDictionary.cs
- XmlAttributeAttribute.cs
- FusionWrap.cs
- DocumentGridPage.cs
- AdRotator.cs
- GenericUriParser.cs
- OleDbReferenceCollection.cs
- ReachVisualSerializer.cs
- XPathBinder.cs
- SmiEventSink_Default.cs
- UTF32Encoding.cs
- ViewLoader.cs
- SchemaMerger.cs
- Rectangle.cs
- InitializeCorrelation.cs
- HtmlTitle.cs
- RemotingConfiguration.cs
- EventMappingSettingsCollection.cs
- JsonByteArrayDataContract.cs
- ByteAnimationUsingKeyFrames.cs
- CounterSetInstanceCounterDataSet.cs
- OrderedDictionaryStateHelper.cs
- EncoderNLS.cs
- XmlSortKey.cs