2010-03-26 64 views
1

我在psapi.dll中定义的windows系统函数“EnumProcessModules()”有问题。在我们的组件中,我们使用这个函数来检索指定进程中的模块。只要我们在32位操作系统上运行该程序,此功能运行良好。但是,当我们在64位操作系统(例如W2K8 R2)上运行程序时,此功能失败。众所周知,我们在W2K8 R2上瞄准了Clay和Brick。根据MSDN中的以下讨论,这是一个已知问题。在该线程中提出的一个解决方法是将代码编译为64位。对我们来说这不是一种选择,至少现在还没有。你有什么建议吗?任何指针/建议/想法将不胜感激。W2K8中的Windows系统调用问题

http://social.msdn.microsoft.com/forums/en-US/winserver2008appcompatabilityandcertification/thread/c7d7e3fe-f8e5-49c3-a16f-8e3dec5e8cf8/

回答

1

如果你的现有代码必须继续被编译为32位,一个可能性是创建一个小的64位可执行文件,通过EnumProcessModulesEx枚举过程。 32位进程可以在必要时产生64位进程来完成这项工作。然后使用某种IPC将信息传回32位进程。根据需要,该部分可能与将文件写入磁盘并从第一个进程(或管道,共享内存,套接字等)读取它一样低。