IOCTL_BTHX_READ_HCI IOCTL (bthxddi.h)

IOCTL_BTHX_READ_HCI用于从传输层读取蓝牙 ACL 数据和事件。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

配置文件驱动程序应使用 KMDF 及其 WdfRequestRetrieveInputMemory 方法检索输入参数。 例如,若要获取输出缓冲区::

Status = WdfRequestRetrieveInputMemory(_Request, &ReqInMemory);

有关详细信息,请参阅 WDK 蓝牙示例。

输入缓冲区长度

缓冲区描述表示读取类型的 UCHAR。 缓冲区的长度是 UCHAR 的大小。

输出缓冲区

配置文件驱动程序应使用 KMDF 及其 WdfRequestRetrieveOutputMemory 方法来检索输入参数。 例如,若要获取输出缓冲区::

Status = WdfRequestRetrieveOutputMemory(_Request, &ReqOutMemory);

有关详细信息,请参阅 WDK 蓝牙示例。

输出缓冲区长度

AssociatedIrp.SystemBuffer 成员指向一个缓冲区,该缓冲区保存BTHX_HCI_READ_WRITE_CONTEXT结构和与读取关联的其他数据。 缓冲区必须足够大,以容纳最大的事件或 ACL 数据包,具体取决于其数据包类型。

对于事件数据包,它FIELD_OFFSET (BTHX_HCI_READ_WRITE_CONTEXT,数据) +257,其中 257 是 2 字节事件标头和 255 字节事件数据的总和。

对于 ACL 数据包,它FIELD_OFFSET (BTHX_HCI_READ_WRITE_CONTEXT data) + MaxAclTransferInSize,其中 MaxAclTransferInSize 是使用 IOCTL_BTHX_QUERY_CAPABILITIES 从传输驱动程序返回的 BTHX_CAPABILITIES 中的值。

状态块

STATUS_BLOCK 结构的 Information 成员设置为返回的数据的字节数。

Status 成员设置为下表中的值之一。

状态值 说明
STATUS_SUCCESS IOCTL 已成功完成。
STATUS_CANCELLED IOCTL 已取消。

注解

输入缓冲区指向正在读取的数据包的类型。

输出缓冲区指向BTHX_HCI_READ_WRITE_CONTEXT结构,其 DataLen 成员指定 Data 成员中的字节数。 Type 成员必须设置为与输入数据包类型相同的 。

STATUS_BLOCK的信息成员应设置为 FIELD_OFFSET (BTHX_HCI_READ_WRITE_CONTEXT Data) + DataLen

ACL 读取 的数据 成员的最大大小由在 BTHX_CAPABILITIES 结构中指定的 MaxAclTransferInSize 确定。 事件 的数据 成员的最大大小为 255。

此 IOCTL 应仅在正常操作下返回STATUS_SUCCESS。 不应返回特定于传输的错误。 仅当此 IOCTL 已取消时,IOCTL 才应返回STATUS_CANCELLED。

要求

要求
最低受支持的客户端 从 Windows 8 开始支持。
标头 bthxddi.h
IRQL <= PASSIVE_LEVEL