2008-12-15 62 views
0

我有一些調用DBGHELP.DLL的P/Invoke代碼。稍後我會將簽名添加到pinvoke.net。P /調用Win32 DLL的正確版本?

隨Windows 2003一起提供的DBGHELP.DLL版本太舊了,而且我的代碼需要隨「Debugging Tools for Windows」版本6.9一起提供的DBGHELP.DLL版本。

如何執行以下操作之一?

  • 確保DllImport需要最低版本。
  • 找出哪個DLL將被加載,然後得到它的版本號。我需要使用FileVersionInfo,但是如何找到P/Invoke將使用的搜索順序?

那麼說:有沒有人有健壯的代碼,使用FileVersionInfo檢查最低版本信息?

回答

1

P /用你想要的DBGHELP的顯式路徑調用LoadLibrary,這樣當你去做實際的P/Invoke調用時,該DLL已經被加載。

+0

不是一個壞主意,但我不想指定DLL的完整路徑,因爲這需要配置。我只想驗證我即將加載的那個是否足夠新。 – 2008-12-16 10:10:53

0

導入(但不是調用)僅存在於DbgHelp.DLL版本6.9和更高版本中的函數會不會更容易?

+0

我想要調用的函數存在於所有版本的DbgHelp.DLL中。這是採用可變尺寸結構的那種。當給定的結構太大時,它會以「無效參數」失敗。 – 2008-12-16 14:46:50