Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / Win32Providers / MS / Internal / AutomationProxies / SafeProcessHandle.cs / 1305600 / 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
- ButtonPopupAdapter.cs
- DriveNotFoundException.cs
- GridItem.cs
- MenuBase.cs
- ProxyWebPartConnectionCollection.cs
- precedingsibling.cs
- DbReferenceCollection.cs
- TextInfo.cs
- CodeFieldReferenceExpression.cs
- SchemaTableOptionalColumn.cs
- PeerTransportElement.cs
- Debugger.cs
- JpegBitmapDecoder.cs
- OutOfProcStateClientManager.cs
- WindowsAuthenticationModule.cs
- SerializationSectionGroup.cs
- ISAPIRuntime.cs
- XmlReaderSettings.cs
- TextLineBreak.cs
- XPathPatternParser.cs
- SiteMapPathDesigner.cs
- MultilineStringConverter.cs
- PageBuildProvider.cs
- DbModificationClause.cs
- RNGCryptoServiceProvider.cs
- LockedHandleGlyph.cs
- XmlWrappingReader.cs
- CroppedBitmap.cs
- PropertyDescriptorCollection.cs
- ResolvedKeyFrameEntry.cs
- WebRequestModuleElementCollection.cs
- ConstantProjectedSlot.cs
- TrackBar.cs
- XmlText.cs
- TypeLibConverter.cs
- PublisherMembershipCondition.cs
- Highlights.cs
- ObjectListCommand.cs
- Trace.cs
- Vector3DCollection.cs
- SoapReflectionImporter.cs
- EventProviderWriter.cs
- MatrixKeyFrameCollection.cs
- Aggregates.cs
- ViewGenResults.cs
- MultiPropertyDescriptorGridEntry.cs
- TreeViewImageKeyConverter.cs
- PanningMessageFilter.cs
- SvcMapFileLoader.cs
- TimerEventSubscription.cs
- MemberBinding.cs
- SqlDataSourceCommandEventArgs.cs
- OleDbConnection.cs
- ThousandthOfEmRealPoints.cs
- SystemParameters.cs
- FontCacheLogic.cs
- ListenerElementsCollection.cs
- XpsThumbnail.cs
- Splitter.cs
- VisualBasicSettingsConverter.cs
- HeaderUtility.cs
- TextModifierScope.cs
- AuthenticationSection.cs
- Section.cs
- EmissiveMaterial.cs
- ParseChildrenAsPropertiesAttribute.cs
- ValidationPropertyAttribute.cs
- Attributes.cs
- CommandValueSerializer.cs
- XpsDocumentEvent.cs
- ErrorWrapper.cs
- FilterQuery.cs
- ColorTranslator.cs
- WebPartConnectionsConnectVerb.cs
- X509IssuerSerialKeyIdentifierClause.cs
- Hex.cs
- AdRotatorDesigner.cs
- TemplatedAdorner.cs
- ResXDataNode.cs
- TaiwanLunisolarCalendar.cs
- ListComponentEditor.cs
- ActivityMarkupSerializer.cs
- MtomMessageEncodingElement.cs
- X509CertificateCollection.cs
- ListViewItem.cs
- _StreamFramer.cs
- DecoderFallbackWithFailureFlag.cs
- COM2Enum.cs
- WorkflowEventArgs.cs
- KeySplineConverter.cs
- RootBrowserWindow.cs
- DataList.cs
- XmlILModule.cs
- ManipulationStartingEventArgs.cs
- GridViewCommandEventArgs.cs
- ImageListStreamer.cs
- MemoryRecordBuffer.cs
- PropertyGrid.cs
- CacheChildrenQuery.cs
- MD5.cs