首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetupAPI - SetupDiGetDeviceRegistryProperty替代品?

SetupAPI - SetupDiGetDeviceRegistryProperty替代品?
EN

Stack Overflow用户
提问于 2016-05-24 14:28:05
回答 2查看 957关注 0票数 1

我需要在火狐扩展中使用一些SetupAPI函数。我要找回设备友好的名字。我想这可以由SetupDiGetClassDevsSetupDiEnumDeviceInfoSetupDiGetDeviceRegistryPropertySetupDiDestroyDeviceInfoList来完成。

但!我导入了setupapi.dll并声明了其中的三个函数--没问题。然后我发现SetupDiGetDeviceRegistryProperty根本不在DLL中,只能与setupapi.lib静态链接。有什么办法可以替代这个功能吗?

我不能使用WMI。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-25 07:36:29

这个函数确实在SetupAPI.DLL中,正如我使用依赖沃克所确认的那样。只是,它需要一个字符指针(string),它必须有两个变体-一个用于ANSI (A),一个用于Unicode (W)。

  • SetupDiGetDeviceRegistryPropertyA
  • SetupDiGetDeviceRegistryPropertyW

它与任何Windows函数--如果函数以一个或多个字符串作为参数--将有两个变量。

我看你可能在用GetProcAddress来定位它。因此,您需要将实名(而不是宏)传递给它。下面是这个函数的大变体。

代码语言:javascript
复制
GetProcAddress(handleOfDLL, "SetupDiGetDeviceRegistryPropertyW"); // Wide
票数 1
EN

Stack Overflow用户

发布于 2016-05-24 15:15:45

你说得对,没有那个名字的出口。这个名称实际上是在SetupApi头中定义的,就像Windows中大多数具有Unicode & ANSI变体的函数一样。

来自SetupApi.h:

代码语言:javascript
复制
#ifdef UNICODE
#define SetupDiGetDeviceRegistryProperty SetupDiGetDeviceRegistryPropertyW
#else
#define SetupDiGetDeviceRegistryProperty SetupDiGetDeviceRegistryPropertyA
#endif

函数在导出表中作为SetupDiGetDeviceRegistryPropertyW (序数: 373)或SetupDiGetDeviceRegistryPropertyA (序号: 372)。

我发现那些使用dumpbin /exports setupapi.dll的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37416519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档