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。非常感谢@汉斯帕桑:那应该作为一个答案而不是评论发布。