我遇到了psapi.dll中定义的Windows系统函数“EnumProcessModules()”的问题。在我们的组件中,我们使用此函数来检索指定进程中的模块。只要我们在32位操作系统上运行程序,此功能就可以正常运行。但是,当我们在64位操作系统(例如W2K8 R2)上运行程序时,此功能会失败。众所周知,我们的目标是在W2K8 R2上使用Clay和Brick。根据MSDN中的以下讨论,这是一个已知问题。在该线程中建议的一个解决方法是将代码编译为64位。对我们来说,这不是一种选择,至少现在还没有。你有什么建议吗?任何指针/建议/想法将不胜感激。
答案 0 :(得分:1)
如果现有代码必须继续编译为32位,则可能会创建一个小型64位可执行文件,通过EnumProcessModulesEx枚举进程。在必要时,32位进程可能会产生64位进程。然后使用某种IPC将信息传回32位进程。根据需要,该部分可能与将文件写入磁盘并从第一个进程(或管道,共享内存,套接字等)读取它一样低技术。