windows - 通过 GUID 打开设备

标签 windows file-io driver guid

我正在尝试使用供应商提供的软件包访问物理设备。

在早期版本的软件包中,他们让用户通过 DOS 符号名称打开设备:

hDevice= CreateFile("\\\\.\\DevName", 
    GENERIC_READ | GENERIC_WRITE, 
    0, NULL, OPEN_ExiSTING, 0, NULL);

但是,他们发布了一个新版本,要求通过 GUID 打开设备,并且在他们的 header 中包含一个 DEFINE_GUID。此更新还禁用了打开设备的旧方法。

他们没有更新他们的文档来展示如何通过 GUID 打开设备,我也没有找到任何对我的 google-fu 有帮助的东西。

肯定在某处有一个示例显示如何使用 GUID 打开设备?

最佳答案

供应商很可能给了您一个“设备接口(interface) GUID”。 要获得可用于 CreateFile() 的名称,您必须枚举具有该 GUID 的所有设备。这是通过使用标志 DIGCF_DEVICEINTERFACE 调用 SetupDiGetClassDevs() 来完成的。结果列表由设备信息集 (HDEVINFO) 的句柄表示。然后将该句柄输入到 SetupDiEnumDeviceInterfaces() 的重复调用中以遍历列表。然后,对于每个列表项,您必须调用 SetupDiGetDeviceInterfaceDetail() 以接收相应的设备路径。

关于windows - 通过 GUID 打开设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144918/

相关文章:

c - 文件处理 C 程序可以读取的格式

c++ - 如何只修改时间码而不修改文本文件中的其他数字或字母?

php - 使用 http ://location broken 加载数据本地 infile

mysql - golang mysql 驱动程序在参数替换时失败

windows - 您需要 "Myself"的权限才能删除文件夹 - 如何修复

c++ - 我的程序有一个保存配置文件的GUI,如何双击该配置文件直接用配置数据加载GUI?

windows - 如何在 VS 未显示时将 Visual Studio 2017 更新到最新版本?

linux - Cuda 驱动程序调用返回错误 1 ​​(cudaErrorMissingConfiguration)

c++ - 微过滤器:通过通知阻止应用程序

windows - 适用于 Apache 2.4 和 Windows Server 2008 r2 的 mod_pagespeed