首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么SetupDiCallClassInstaller函数仅限于64位程序?

为什么SetupDiCallClassInstaller函数仅限于64位程序?
EN

Stack Overflow用户
提问于 2011-12-31 07:54:12
回答 2查看 3K关注 0票数 8

在64位Windows上,尝试从以32位模式编译的程序调用SetupDiCallClassInstaller失败。

显然这是故意的,但我想知道原因。

EN

回答 2

Stack Overflow用户

发布于 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位进程才能调用该应用程序接口。

票数 3
EN

Stack Overflow用户

发布于 2014-08-09 00:23:32

如果您从64位操作系统上的32位进程进行该调用,它将失败,因为它必须修改注册表的64位部分中的某些注册表项。否则,如果您从64位操作系统上的64位进程进行该调用,则在32位操作系统上也会同样成功。

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

https://stackoverflow.com/questions/8685183

复制
相关文章

相似问题

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