C++ - 向 WBF 发送 IOCTL 命令以获取 Windows 上的传感器属性

Posted

技术标签:

【中文标题】C++ - 向 WBF 发送 IOCTL 命令以获取 Windows 上的传感器属性【英文标题】:C++ - Send IOCTL command to WBF to get sensor attributes on Windows 【发布时间】:2016-09-12 21:37:06 【问题描述】:

我试图了解如何使用 WBF API 检索 WINBIO_SENSOR_ATTRIBUTES 缓冲区。 我找到了这个链接:https://msdn.microsoft.com/en-us/library/windows/hardware/ff536431

它提到了发送 IOCTL 命令,但是,我无法理解如何从 C++ 代码中调用它并接收传感器属性结构。有人可以帮忙吗?或者指出一些类似的示例代码?

【问题讨论】:

【参考方案1】:

首先看一下DeviceIoControl - 这是您必须提供IOCTL_BIOMETRIC_GET_ATTRIBUTES 值作为第二个参数以获取生物特征数据的函数(您包含的链接描述了如何处理输出缓冲区的大小- 首先提供DWORD 大小的缓冲区以获取输出的实际大小,然后分配适当大小的缓冲区并检索实际数据)。但要做到这一点,您还需要一个有效的设备句柄(DeviceIoControl 的第一个参数)。此句柄应通过调用CreateFile 并传递驱动程序的设备名称来获得。如果您不知道 PDO,那么您可以尝试在设备管理器中查看“详细信息”选项卡下是否显示给您,或者您必须使用 SetupDi* 系列函数来枚举生物识别设备类并从那里获取名称.

【讨论】:

以上是关于C++ - 向 WBF 发送 IOCTL 命令以获取 Windows 上的传感器属性的主要内容,如果未能解决你的问题,请参考以下文章

IOCTL 可以用于向驱动程序发送自定义输入吗

如何使用 netlink 库向网络接口发送命令

IOCTL_ATA_PASS_THROUGH 是如何使用的?

如何从驱动程序向另一个驱动程序(不在同一个堆栈中)进行 IOCTL 调用(在 Windows 上)

在 FreeBSD 中实现 ioctl() 命令

向自己发送终止信号