共用方式為


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 結構 的信息成員會 設定為傳回的數據位元組數目。

Status 成員會設定為下表中的其中一個值。

狀態值 描述
STATUS_SUCCESS IOCTL 成功完成。
STATUS_CANCELLED IOCTL 已取消。

備註

輸入緩衝區會指向正在讀取的封包類型。

輸出緩衝區會指向 DataLen 成員指定 Data 成員中位元組數的BTHX_HCI_READ_WRITE_CONTEXT結構。 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