1
我想創建一個簡單的C++控制檯應用程序,它轉儲給定進程的內存空間(例如的calc.exe)於是我就用MiniDumpWriteDump功能C++ MiniDumpWriteDump失敗
下面是代碼:
DWORD procID = 1150;
char* procName = "calc.exe";
// opens the dump file
HANDLE hFile = CreateFile("calc.dmp", GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile)
{
// opens the process
HANDLE hProcToDump = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, procID);
if(hProcToDump)
{
// dumps via the API
BOOL rv = MiniDumpWriteDump(hProcToDump, GetProcessId(hProcToDump), hFile, MiniDumpNormal, NULL, NULL, NULL);
HRESULT hr = GetLastError();
if(!rv)
printf("MiniDumpWriteDump failed.");
else
printf("Minidump OK!");
CloseHandle(hFile);
CloseHandle(hProcToDump);
}
}
但我得到的錯誤: GetLastError函數()= HRESULT 0x8007012b只有ReadProcessMemory或WriteProcessMemory的請求的一部分已完成
爲什麼? 注意:我是Win 7 x64的管理員。
謝謝你的幫助。
當您調用'MiniDumpWriteDump'以獲取有關錯誤的更多詳細信息時,您是否嘗試提供'* MINIDUMP_EXCEPTION_INFORMATION'對象而不是第一個'NULL'參數? – CristiFati
是的,但我不知道爲「ThreadId:拋出異常的線程的標識符」設置了什麼。我沒有任何例外。 – Jeremy