C++ で基本的なデバッガーを作成しています。デバッガ プロセスから、デバッグされたプロセスのロード済みモジュールのリストを取得しようとしています。私のOSは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;
}