| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| using Microsoft.Win32.SafeHandles; |
| using System; |
| using System.Collections.Generic; |
| using System.Linq; |
| using System.Runtime.InteropServices; |
| using System.Text; |
| using System.Threading.Tasks; |
| |
| namespace ChromeDebug.LowLevel { |
| public static class NativeMethods { |
| [DllImport("kernel32.dll", SetLastError = true)] |
| [return: MarshalAs(UnmanagedType.Bool)] |
| public static extern bool ReadProcessMemory(IntPtr hProcess, |
| IntPtr lpBaseAddress, |
| IntPtr lpBuffer, |
| int dwSize, |
| out int lpNumberOfBytesRead); |
| |
| [DllImport("ntdll.dll", SetLastError = true)] |
| public static extern LowLevelTypes.NTSTATUS NtQueryInformationProcess( |
| IntPtr hProcess, |
| LowLevelTypes.PROCESSINFOCLASS pic, |
| ref LowLevelTypes.PROCESS_BASIC_INFORMATION pbi, |
| int cb, |
| out int pSize); |
| |
| [DllImport("shell32.dll", SetLastError = true)] |
| public static extern IntPtr CommandLineToArgvW( |
| [MarshalAs(UnmanagedType.LPWStr)] string lpCmdLine, |
| out int pNumArgs); |
| |
| [DllImport("kernel32.dll", SetLastError = true)] |
| public static extern IntPtr LocalFree(IntPtr hMem); |
| |
| [DllImport("kernel32.dll", SetLastError = true)] |
| public static extern IntPtr OpenProcess( |
| LowLevelTypes.ProcessAccessFlags dwDesiredAccess, |
| [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, |
| int dwProcessId); |
| |
| [DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.StdCall, |
| CharSet = CharSet.Unicode)] |
| public static extern uint QueryFullProcessImageName( |
| IntPtr hProcess, |
| [MarshalAs(UnmanagedType.U4)] LowLevelTypes.ProcessQueryImageNameMode flags, |
| [Out] StringBuilder lpImageName, ref int size); |
| |
| [DllImport("kernel32.dll", SetLastError = true)] |
| [return: MarshalAs(UnmanagedType.Bool)] |
| public static extern bool CloseHandle(IntPtr hObject); |
| |
| [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] |
| public static extern SafeFileHandle CreateFile(string lpFileName, |
| LowLevelTypes.FileAccessFlags dwDesiredAccess, |
| LowLevelTypes.FileShareFlags dwShareMode, |
| IntPtr lpSecurityAttributes, |
| LowLevelTypes.FileCreationDisposition dwDisp, |
| LowLevelTypes.FileFlagsAndAttributes dwFlags, |
| IntPtr hTemplateFile); |
| |
| [DllImport("shell32.dll", CharSet = CharSet.Unicode)] |
| public static extern IntPtr SHGetFileInfo(string pszPath, |
| uint dwFileAttributes, |
| ref LowLevelTypes.SHFILEINFO psfi, |
| uint cbFileInfo, |
| uint uFlags); |
| } |
| } |