C++ 使用module32 first/Next从64位进程枚举32位进程模块
代码如下:C++ 使用module32 first/Next从64位进程枚举32位进程模块,c++,winapi,C++,Winapi,代码如下: hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE32, dwPID ); if( hModuleSnap == INVALID_HANDLE_VALUE ) { return( r_mi ); } me32.dwSize = sizeof( MODULEENTRY32 ); if( !Module32First( hModuleSnap, &me32 ) )
hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE32, dwPID );
if( hModuleSnap == INVALID_HANDLE_VALUE )
{
return( r_mi );
}
me32.dwSize = sizeof( MODULEENTRY32 );
if( !Module32First( hModuleSnap, &me32 ) )
{
CloseHandle( hModuleSnap );
return( r_mi );
}
do
{
MessageBoxA(0,me32.szModule,0,0);
} while( Module32Next( hModuleSnap, &me32 ) );
问题是,当尝试从64位进程枚举32位进程的模块时,只列出x64模块
来自TH32CS_SNAPMODULE32的MSDN:
从64位进程调用时,包括快照中th32ProcessID中指定的进程的所有32位模块
但它仍然只列出了x64模块
有人知道这方面的解决方法吗?您必须使用TH32CS\u SNAPMODULE32|TH32CS\u SNAPMODULE
感谢Hans Passant解决了这个问题。您必须使用TH32CS_SNAPMODULE32 | TH32CS_SNAPMODULEWorked。非常感谢@汉斯帕桑:那应该作为一个答案而不是评论发布。