在64位Windows上,尝试从以32位模式编译的程序调用SetupDiCallClassInstaller失败。
显然这是故意的,但我想知道原因。
发布于 2014-08-09 01:50:15
根据MSDN的说法:
Device Installations on 64-Bit Systems
应用程序的32位版本必须检查UpdateDriverForPlugAndPlayDevices返回的值。如果返回值为ERROR_IN_WOW64,则32位应用程序在64位平台上执行,无法更新收件箱驱动程序。相反,它必须调用CreateProcess (在Windows SDK文档中描述)来启动应用程序的64位版本。然后,64位版本可以通过指定标识所有文件的64位版本位置的FullInfPath参数来调用UpdateDriverForPlugAndPlayDevices。
因此,看起来任何旨在报告ERROR_IN_WOW64
的应用程序接口都是专门不能在WOW64中工作的,32位进程必须调用64位进程才能调用该应用程序接口。
发布于 2014-08-09 00:23:32
如果您从64位操作系统上的32位进程进行该调用,它将失败,因为它必须修改注册表的64位部分中的某些注册表项。否则,如果您从64位操作系统上的64位进程进行该调用,则在32位操作系统上也会同样成功。
https://stackoverflow.com/questions/8685183
复制相似问题