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
- XPathDescendantIterator.cs
- AddValidationError.cs
- EntryIndex.cs
- _AcceptOverlappedAsyncResult.cs
- DATA_BLOB.cs
- Application.cs
- HtmlFormParameterReader.cs
- XmlSchemaDatatype.cs
- TextRangeSerialization.cs
- ContextStack.cs
- UshortList2.cs
- BaseCodeDomTreeGenerator.cs
- TTSVoice.cs
- BookmarkInfo.cs
- SchemaInfo.cs
- TypeLoadException.cs
- SpotLight.cs
- DrawingDrawingContext.cs
- ScrollChrome.cs
- SrgsText.cs
- DeferredSelectedIndexReference.cs
- EmptyStringExpandableObjectConverter.cs
- PatternMatcher.cs
- QueryExpr.cs
- ExpandCollapseProviderWrapper.cs
- MatrixTransform.cs
- OracleDateTime.cs
- DataException.cs
- WindowsStatusBar.cs
- Memoizer.cs
- manifestimages.cs
- UrlMappingsSection.cs
- ResourceDictionaryCollection.cs
- InvalidWMPVersionException.cs
- XamlBrushSerializer.cs
- SystemWebSectionGroup.cs
- DictionarySurrogate.cs
- ApplicationServicesHostFactory.cs
- RawStylusActions.cs
- PropertyPath.cs
- NotificationContext.cs
- safemediahandle.cs
- AspNetPartialTrustHelpers.cs
- CqlWriter.cs
- XmlSchemaInferenceException.cs
- BindingMAnagerBase.cs
- TransformGroup.cs
- RelationshipConverter.cs
- DataRowView.cs
- NotSupportedException.cs
- Binding.cs
- OperationSelectorBehavior.cs
- Int64Animation.cs
- ConfigurationPermission.cs
- ImageSourceValueSerializer.cs
- precedingsibling.cs
- TemplateEditingVerb.cs
- Int64Converter.cs
- UpDownEvent.cs
- TabletDeviceInfo.cs
- DBConnection.cs
- RoutingService.cs
- ConditionedDesigner.cs
- EntityDataSourceSelectingEventArgs.cs
- XPathSelfQuery.cs
- QilSortKey.cs
- XmlUrlResolver.cs
- PageHandlerFactory.cs
- ArraySet.cs
- InProcStateClientManager.cs
- FormViewPageEventArgs.cs
- WebPartMinimizeVerb.cs
- SamlNameIdentifierClaimResource.cs
- ProtectedUri.cs
- SerialPinChanges.cs
- WebPartConnectionsCancelEventArgs.cs
- IriParsingElement.cs
- TabControl.cs
- OledbConnectionStringbuilder.cs
- HandlerWithFactory.cs
- MimeMapping.cs
- Keywords.cs
- WebSysDescriptionAttribute.cs
- PasswordDeriveBytes.cs
- UpDownEvent.cs
- Hyperlink.cs
- Buffer.cs
- DataGridViewTopLeftHeaderCell.cs
- TreeSet.cs
- PropertyItem.cs
- ServiceOperationUIEditor.cs
- WebPartCancelEventArgs.cs
- DocumentReference.cs
- KeyedHashAlgorithm.cs
- _KerberosClient.cs
- ComplexPropertyEntry.cs
- StaticFileHandler.cs
- PermissionToken.cs
- assertwrapper.cs
- InfiniteIntConverter.cs