共用方式為


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,Data) +257,其中 257 是 2 位元組事件標頭和 255 位元組事件數據的總和。

針對 ACL 數據封包,其為 FIELD_OFFSET(BTHX_HCI_READ_WRITE_CONTEXT,Data) + MaxAclTransferInSize,其中 MaxAclTransferInSize 是BTHX_CAPABILITIES中傳回自具有IOCTL_BTHX_QUERY_CAPABILITIES之傳輸驅動程式的值。

狀態區塊

STATUS_BLOCK 結構 資訊 成員會設定為傳回的數據位元組數。

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

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

言論

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

輸出緩衝區會指向BTHX_HCI_READ_WRITE_CONTEXT結構,其 DataLen 成員會指定 Data 成員中的位元元數目。 類型 成員必須設定為與輸入封包類型相同的 。

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