我正在用 C++ 编写一个基本的调试器。我正在尝试从调试器进程中获取被调试进程的加载模块列表。我的操作系统是 64 位 windows 7,但调试器和被调试对象都是 32 位编译的(在任务管理器中查看时,它们的名称旁边有 *32)。
每当我尝试从调试器调用被调试对象上的 CreateToolhelpSnapshot 时,都会收到 299 错误。MSDN 说只有在从 32 位查询 64 位进程时才会发生这种情况,反之亦然。据我所知,我的两个进程都是 32 位的。
这是我的快照代码:
HANDLE hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE32, pid);
if( hModuleSnap == INVALID_HANDLE_VALUE )
{
std::cout << "CreateToolhelp32Snapshot Error: " << GetLastError() << std::endl;
}