使用Module32First / Next从64位进程枚举32位过程模块

时间:2015-06-28 18:18:00

标签: c++ winapi

以下是代码:

 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模块。

从MSDN获取TH32CS_SNAPMODULE32: 包括从64位进程调用时快照中th32ProcessID中指定的进程的所有32位模块。

但是,它仍然只列出了x64模块

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您必须使用 TH32CS_SNAPMODULE32 | TH32CS_SNAPMODULE 感谢 Hans Passant 弄清楚了这一点。