问题标签 [setupapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
310 浏览

c - 枚举为特定 PnP 枚举器获取的设备信息集中的接口

我正在尝试通过SetupDiEnumDeviceInterfaces()与特定 PnP 枚举器相对应的所有设备获取设备接口数据。考虑以下示例(仅适用于索引为 0 的接口):

(此处提供了此示例的更完整版本。)

运行时SetupDiEnumDeviceInterfaces()失败并GetLastError()返回错误 259 ( ERROR_NO_MORE_ITEMS),好像没有任何接口可用于设置设备信息。这似乎是为设备设置类而不是设备接口类获得的所有设备信息集的行为。

但是,当我将DIGCF_DEVICEINTERFACE标志添加到SetupDiGetClassDevsA()调用的最后一个参数时,以便为接口类获取集合时,后者失败并出现错误 13 ( ERROR_INVALID_DATA)。当指定的 PnP 枚举器未在系统中注册时,在设备设置类的情况下通常会发生相同的错误。确实,当我将枚举器参数替换为 时NULL,就成功获取了接口。根据 MSDN,指定DIGCF_DEVICEINTERFACE标志允许使用设备实例 ID 代替枚举器参数,但在我看来,上述设备实例 ID是调用的枚举器参数NULL的唯一选项,当它具有标志时,实际枚举器在这种情况下无法选择。SetupDiGetClassDevs()DIGCF_DEVICEINTERFACE

你能解释一下吗,这里到底发生了什么?我不熟悉 SetupAPI 语义,因此我不知道与device interface classes相比,为device setup classes设置 device info 会施加什么限制。另外,这里可能有一些特定于版本的行为吗?上面的代码在 Windows 7 x64 系统上进行了测试,但它本身被编译成 32 位可执行文件。我需要特别知道为此提出的任何特定解决方案是否也适用于良好的 Windows XP。

PS与使用 SetupDiEnumDeviceInfo 枚举设备时获取 CreateFile 的设备路径不重复,尽管基本目的相似。;)

0 投票
0 回答
1098 浏览

c++ - 如何使用 setupapi 获取 USB 设备的 com 端口?

我需要确定调制解调器 com 端口的数量。调制解调器是 USB 设备。

为了做到这一点,我需要

  1. 检测连接的调制解调器

    /li>

2.对于附加的调制解调器,列出它模拟的所有 com 端口。但是如何访问有关子设备和相关通信端口号的信息。下面来自 USB 树视图的日志,其中包含有关我需要的 com 端口的信息。

0 投票
0 回答
233 浏览

c# - c#-调用SetupDiGetDriverInfoDetail API获取驱动信息但弹出错误

我在 c# 中使用 setup.api。除了 SetupDiGetDriverInfoDetail,所有工作都成功。当程序执行此行时,会弹出异常信息

SetupDiGetDriverInfoDetail' 使堆栈不平衡。这可能是因为托管 PInvoke 签名与非托管目标签名不匹配。检查 PInvoke 签名的调用约定和参数是否与目标匹配。

我认为错误是由于声明签名:

我使用以下代码:

请帮我解决这个问题,我真的很感激。

0 投票
1 回答
1119 浏览

c# - 使用 C# 在 Windows 中启用/禁用硬件设备

我正在做一个项目,该项目需要我检查 Windows 中的禁用设备,如果发现该设备被禁用,程序应该启用它。

我一直在使用先前答案中的以下解决方案..

如何以编程方式禁用系统设备?

虽然我在运行它时收到以下错误...

在此处输入图像描述

我正在调用链接帖子中显示的程序,并在我的程序如图所示启动后立即运行它,

在我用于测试的系统上,我已经禁用了设备(我希望启用它)。我尝试在不同的构建配置(x86、AnyCPU)上构建,并在 Windows XP 和 Windows 7 上进行了测试,但遇到了同样的问题。

有什么建议么?

0 投票
1 回答
7784 浏览

windows - SetupAPI(setupdi 函数)不链接

我想要一个函数来枚举 Windows 上的串行 (COM) 端口。为此,我主要从http://www.codeguru.com/cpp/wp/system/hardwareinformation/article.php/c5721/Determining-What-Serial-Ports-Are-Available-on-a-Windows-复制代码机器.htm

在头文件中:

执行:

这段代码是 filne,但如果我尝试像这样使用它

错误 LNK2019:函数 __catch$?enumerateSerialPorts@SerialConnection@@SAX_N@Z$0 中引用的未解析的外部符号 __imp__SetupDiDestroyDeviceInfoList@4

错误 LNK2019:未解析的外部符号 __imp__SetupDiEnumDeviceInterfaces@20 在函数“public: static void __cdecl SerialConnection::enumerateSerialPorts(bool)”(?enumerateSerialPorts@SerialConnection@@SAX_N@Z) 中引用

错误 LNK2019:未解析的外部符号 __imp__SetupDiGetDeviceInterfaceDetailW@24 在函数“public: static void __cdecl SerialConnection::enumerateSerialPorts(bool)”(?enumerateSerialPorts@SerialConnection@@SAX_N@Z) 中引用

错误 LNK2019:未解析的外部符号 __imp__SetupDiGetClassDevsW@16 在函数“public: static void __cdecl SerialConnection::enumerateSerialPorts(bool)”(?enumerateSerialPorts@SerialConnection@@SAX_N@Z) 中引用

错误 LNK2019:函数“public: static void __cdecl SerialConnection::enumerateSerialPorts(bool)”(?enumerateSerialPorts@SerialConnection@@SAX_N@Z) 中引用了未解析的外部符号 __imp__SetupDiGetDeviceRegistryPropertyW@28

我错过了什么?我使用 MVS 2013

0 投票
1 回答
242 浏览

c++ - SCardGetReaderDeviceInstanceId 的实现

微软SCardGetReaderDeviceInstanceId在 Windows8 及更高版本上的 winscard.dll 中实现。我真的很想知道这个功能的实现。我试图反编译它,但不擅长反编译,我什么也没得到。我之所以问,是因为我需要将智能卡读卡器名称与 DeviceInstanceId 相关联,所以我认为我可以根据它在 Windows8 上的实现在 Windows7 甚至更早的版本上实现它。那么各位,有什么帮助吗?

0 投票
2 回答
656 浏览

c++ - CM_Get_DevNode_Property_Keys 有没有办法获取键的名称

我能够获取 devnode 的属性键(DEVPROPKEY)。但是,我没有找到获取这些键的名称和/或描述的方法。也可以使用 CM_Get_DevNode_PropertyW 获取这些属性键的值。

如果我使用 LOOP 来获取键和值,我会得到除键名之外的所有信息吗?

编辑键是在 devpkey.h 中预定义的,例如;

目前我认为唯一的方法是将函数中的键与预定义的键进行比较。使用 Delphi,我必须将所有这些键从 C++ 代码转换为 Delphi 代码。我仍然认为应该有一种方法可以通过来自 cfgmgr.dll 或 setupapi.dll 的函数调用来获取名称?

0 投票
0 回答
190 浏览

windows - 获取特定卷 ID 的物理设备对象

我想查询特定卷的不同标志。输入应该是卷 ID,例如:

\\?\Volume{b1a245f3-0000-0000-0000-100000000000}\,

然后检查一些标志,输出为真/假,具体取决于是否设置了所需的标志。

问题是:如何检索特定卷 ID 的物理设备对象?是否存在一种将卷 ID 作为输入的方法,或者我是否必须枚举所有设备对象?

0 投票
2 回答
1586 浏览

c++ - 如何在 Windows 上检测 USB 速度

我使用 setup API 函数查找 USB 设备,然后使用 createfile 与其通信。即使用SetupDiGetClassDevs、SetupDiEnumDeviceInterfaces、SetupDiGetDeviceInterfaceDetail等。

我希望能够确定设备是以 USB2 速度还是 USB3 速度连接的,即。超速与否

如何通过 Windows API 做到这一点?

0 投票
2 回答
877 浏览

winapi - SetupAPI - SetupDiGetDeviceRegistryProperty 替代品?

我需要在 firefox 扩展中使用一些 SetupAPI 函数。我需要检索设备的友好名称。我认为它可以通过SetupDiGetClassDevs,SetupDiEnumDeviceInfoSetupDiGetDeviceRegistryProperty来完成SetupDiDestroyDeviceInfoList

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

我无法使用 WMI。