4

为 32 位编译时在 64 位计算机上调用 SetupDiCallClassInstaller 返回 false。

GetLastError() == ERROR_IN_WOW64

所有其他函数调用在 32 位下都可以正常工作,只是这个给我带来了问题。

我想知道是否有人知道我在这里做错了什么。

4

1 回答 1

2

正如 Hans Passant 作为对该问题的评论所指出的那样,您不能在 64 位 Windows 平台上从 32 位进程调用该函数。无论如何,当您尝试这样做时,您会得到一个 ERROR_IN_WOW64。您不能这样做的原因是您的 32 位进程调用了 32 位版本的 API。在 64 位平台上,此 API 在 WoW64 windows 子系统 ( https://en.wikipedia.org/wiki/WoW64 ) 中运行。像 SetupDiCallClassInstaller 这样的一些方法在这个子系统中不可用。当您尝试调用它们时,会发生 ERROR_IN_WOW64。应用程序应该直接调用 64 位版本的 API。实现此目的的一种方法是重新编译针对 64 位平台的应用程序。

于 2017-05-12T11:54:32.283 回答