我正在用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;
}