C ++ MiniDumpWriteDump失败

时间:2015-06-12 11:45:17

标签: c++ dump

我正在尝试创建一个简单的C ++控制台应用程序来转储给定进程的内存空间(例如calc.exe)所以我使用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的管理员。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

试试这个,这与你的例子类似。 Usage of MiniDumpWriteDump