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
- CodeRemoveEventStatement.cs
- QueueProcessor.cs
- MsmqProcessProtocolHandler.cs
- ContentElementAutomationPeer.cs
- RecognitionResult.cs
- BaseCollection.cs
- SafeThreadHandle.cs
- AppDomainProtocolHandler.cs
- TextTrailingCharacterEllipsis.cs
- ZipFileInfoCollection.cs
- FixedSchema.cs
- DbProviderServices.cs
- _emptywebproxy.cs
- Matrix.cs
- InstanceKeyCollisionException.cs
- ProcessHostMapPath.cs
- AccessDataSource.cs
- BooleanFunctions.cs
- Cast.cs
- EarlyBoundInfo.cs
- HttpStreamMessageEncoderFactory.cs
- DoubleConverter.cs
- XsdCachingReader.cs
- SecurityPolicySection.cs
- HttpResponse.cs
- DataDocumentXPathNavigator.cs
- XmlLanguage.cs
- WindowsGraphics2.cs
- CngAlgorithm.cs
- ExpressionWriter.cs
- TreeNodeConverter.cs
- SafeHandle.cs
- RowParagraph.cs
- RSAOAEPKeyExchangeDeformatter.cs
- DesignerLoader.cs
- ObjectFullSpanRewriter.cs
- DelegateSerializationHolder.cs
- EdmType.cs
- TableHeaderCell.cs
- XslException.cs
- URLIdentityPermission.cs
- ExpandCollapseProviderWrapper.cs
- InputMethod.cs
- IsolatedStorage.cs
- CorrelationQueryBehavior.cs
- AsyncOperationContext.cs
- BeginEvent.cs
- XmlDataCollection.cs
- ItemContainerPattern.cs
- BufferedGraphicsManager.cs
- ExtensionQuery.cs
- GPPOINT.cs
- TextDpi.cs
- HttpContext.cs
- QualifierSet.cs
- PersonalizationProvider.cs
- OletxVolatileEnlistment.cs
- LongValidatorAttribute.cs
- IteratorDescriptor.cs
- X509ChainPolicy.cs
- PartialClassGenerationTask.cs
- UnsafeNativeMethods.cs
- CollectionViewGroupRoot.cs
- GlyphsSerializer.cs
- DataBinding.cs
- ProfileSection.cs
- LinearQuaternionKeyFrame.cs
- HttpFileCollection.cs
- MenuEventArgs.cs
- OLEDB_Util.cs
- StylusPointPropertyId.cs
- DigitShape.cs
- XmlTextReaderImpl.cs
- HtmlWindowCollection.cs
- AllMembershipCondition.cs
- BitmapFrame.cs
- DataComponentGenerator.cs
- CqlParser.cs
- WebServicesInteroperability.cs
- SqlMetaData.cs
- MenuItemBindingCollection.cs
- OrthographicCamera.cs
- TimelineClockCollection.cs
- InProcStateClientManager.cs
- safex509handles.cs
- ComponentEditorForm.cs
- shaperfactoryquerycacheentry.cs
- DynamicRendererThreadManager.cs
- ReadOnlyNameValueCollection.cs
- SmiRecordBuffer.cs
- EntityDataSourceQueryBuilder.cs
- TraceProvider.cs
- MatrixTransform3D.cs
- XPathQueryGenerator.cs
- NotImplementedException.cs
- BooleanProjectedSlot.cs
- AvTraceDetails.cs
- PasswordDeriveBytes.cs
- ExceptionHandlersDesigner.cs
- LabelEditEvent.cs