private ReadProcessMemory ( |
||
hProcess | ||
lpBaseAddress | ||
buffer | [ | |
size | uint | |
lpNumberOfBytesRead | ||
return | bool |
public void PrintDebugString(OUTPUT_DEBUG_STRING_INFO outputDbgStrInfo) { using (SafeProcessHandle hProcess = Process.OpenProcess(ProcessAccessFlags.VmRead, false, pid)) { if (hProcess.IsInvalid) { throw new ArgumentException(String.Format("Unable to open process {0}, error {x:8}", pid, Marshal.GetLastWin32Error())); } var dbgString = new byte[outputDbgStrInfo.nDebugStringLength]; uint numberOfBytesRead; var result = Process.ReadProcessMemory(hProcess, outputDbgStrInfo.lpDebugStringData, dbgString, outputDbgStrInfo.nDebugStringLength, out numberOfBytesRead); if (result) { if (outputDbgStrInfo.fUnicode == 0) { Console.WriteLine("Debug String: {0}", Encoding.ASCII.GetString(dbgString)); } else { Console.WriteLine("Debug String: {0}", Encoding.Unicode.GetString(dbgString)); } } } }
public void PrintDebugString(OUTPUT_DEBUG_STRING_INFO outputDbgStrInfo) { var dbgString = new byte[outputDbgStrInfo.nDebugStringLength]; uint numberOfBytesRead; var result = ProcessNativeMethod.ReadProcessMemory(hProcess, outputDbgStrInfo.lpDebugStringData, dbgString, outputDbgStrInfo.nDebugStringLength, out numberOfBytesRead); if (result) { if (outputDbgStrInfo.fUnicode == 0) { Console.WriteLine("Debug String: {0}", Encoding.ASCII.GetString(dbgString)); } else { Console.WriteLine("Debug String: {0}", Encoding.Unicode.GetString(dbgString)); } } }