2010-03-26 66 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位進程。根據需要,該部分可能與將文件寫入磁盤並從第一個進程(或管道,共享內存,套接字等)讀取它一樣低。