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
- RMEnrollmentPage3.cs
- SecurityProtocolFactory.cs
- WebPartChrome.cs
- DataFormats.cs
- TextProviderWrapper.cs
- PictureBox.cs
- RoleGroup.cs
- AutoCompleteStringCollection.cs
- HwndMouseInputProvider.cs
- MessageQueuePermissionEntry.cs
- ErrorHandler.cs
- StoreItemCollection.cs
- SafeEventLogReadHandle.cs
- BasicExpandProvider.cs
- MembershipValidatePasswordEventArgs.cs
- SafeNativeMethods.cs
- StreamSecurityUpgradeProvider.cs
- RSAOAEPKeyExchangeDeformatter.cs
- SqlProfileProvider.cs
- EntityViewContainer.cs
- StylusPlugInCollection.cs
- EventMap.cs
- NativeMethods.cs
- EventPropertyMap.cs
- HostingEnvironmentSection.cs
- DesignTimeXamlWriter.cs
- CryptoProvider.cs
- ResolveResponse.cs
- DataControlButton.cs
- ConfigsHelper.cs
- SiteMapProvider.cs
- Module.cs
- MissingMemberException.cs
- sqlser.cs
- MarkupExtensionParser.cs
- UpDownBase.cs
- DocumentPageTextView.cs
- ContentElementAutomationPeer.cs
- AuthenticationConfig.cs
- ResourcePart.cs
- QuaternionKeyFrameCollection.cs
- IgnoreSectionHandler.cs
- NotImplementedException.cs
- CategoryAttribute.cs
- Rectangle.cs
- AuthorizationSection.cs
- StateDesigner.CommentLayoutGlyph.cs
- XmlTypeAttribute.cs
- HtmlInputSubmit.cs
- SystemColors.cs
- OrderToken.cs
- DetailsViewDeletedEventArgs.cs
- RegexInterpreter.cs
- BitmapCacheBrush.cs
- ResourceCategoryAttribute.cs
- RepeaterCommandEventArgs.cs
- FontWeights.cs
- Switch.cs
- HMACSHA1.cs
- DisplayInformation.cs
- IncomingWebResponseContext.cs
- DataGridViewTextBoxCell.cs
- SecurityPolicySection.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- HtmlFormParameterReader.cs
- DesignSurface.cs
- PageContent.cs
- SiteMapPath.cs
- SqlException.cs
- ColorInterpolationModeValidation.cs
- SessionPageStateSection.cs
- RichTextBox.cs
- SQLDoubleStorage.cs
- OpenFileDialog.cs
- SqlUtils.cs
- ImageButton.cs
- DataColumnPropertyDescriptor.cs
- BaseCodeDomTreeGenerator.cs
- ApplicationTrust.cs
- TextPenaltyModule.cs
- PointAnimationUsingKeyFrames.cs
- DistinctQueryOperator.cs
- InputScopeNameConverter.cs
- SQLInt16Storage.cs
- SqlClientPermission.cs
- CodeTypeMemberCollection.cs
- CryptoStream.cs
- ModelProperty.cs
- ResourceDisplayNameAttribute.cs
- OperandQuery.cs
- ButtonPopupAdapter.cs
- SQLDecimal.cs
- InstallerTypeAttribute.cs
- JournalEntry.cs
- XmlSchemaValidator.cs
- DataViewListener.cs
- Button.cs
- SchemaImporterExtensionsSection.cs
- UncommonField.cs
- DataStorage.cs