2008-12-15 65 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