IOCTL_BTHX_READ_HCI IOCTL (bthxddi.h)
IOCTL_BTHX_READ_HCI用于从传输层读取蓝牙 ACL 数据和事件。
主要代码
输入缓冲区
配置文件驱动程序应使用 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 |