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,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 |