_BRB_L2CA_ACL_TRANSFER 結構 (bthddi.h)
_BRB_L2CA_ACL_TRANSFER結構描述讀取異步數據的緩衝區,或將異步數據寫入 L2CAP 通道。
語法
struct _BRB_L2CA_ACL_TRANSFER {
BRB_HEADER Hdr;
BTH_ADDR BtAddress;
L2CAP_CHANNEL_HANDLE ChannelHandle;
ULONG TransferFlags;
ULONG BufferSize;
PVOID Buffer;
PMDL BufferMDL;
LONGLONG Timeout;
ULONG RemainingBufferSize;
};
成員
Hdr
包含目前 BRB 相關信息 的BRB_HEADER 結構。
BtAddress
遠端裝置的位址。
ChannelHandle
藍牙驅動程式堆疊所傳回的 L2CAP 通道句柄,以回應先前 的 BRB_L2CA_OPEN_CHANNEL 或 BRB_L2CA_OPEN_CHANNEL_RESPONSE 要求。
TransferFlags
旗標的組合,指定介面的基本行為。 可以同時設定多個旗標。 下表說明有效的旗標值:
旗標 | 描述 |
---|---|
ACL_SHORT_TRANSFER_OK | 如果設定此位,讀取作業可以在緩衝區滿前完成。 這隻能與ACL_TRANSFER_DIRECTION_IN一起設定。 |
ACL_TRANSFER_DIRECTION_IN | 如果設定此位,則會從遠端裝置接收數據。 此旗標無法與ACL_TRANSFER_DIRECTION_OUT搭配設定。 |
ACL_TRANSFER_DIRECTION_OUT | 如果設定此位,數據會傳送至遠端裝置。 此旗標無法與ACL_TRANSFER_DIRECTION_IN搭配設定。 |
ACL_TRANSFER_TIMEOUT | 讀取作業應該在 Timeout 成員中指定的毫秒數之後停止。 |
BufferSize
緩衝區的大小 (以位元組為單位)。
Buffer
輸入緩衝區的指標。
BufferMDL
MDL 輸入緩衝區的指標。
Timeout
讀取動作取消之前,以毫秒為單位的持續時間,且任何耗用到此點的數據都將遺失。
RemainingBufferSize
BRB 呼叫之後緩衝區中剩餘的空間量,以位元組為單位。
備註
若要從 L2CAP 通道讀取異步數據,或將異步數據寫入 L2CAP 通道,配置檔驅動程式應該建置並傳送BRB_L2CA_ACL_TRANSFER要求。
每個 L2CAP 連線都是雙向的,而且可以同時讀取和寫入。
如果未指定逾時,與讀取要求相關聯的 BRB 會維持擱置狀態,直到數據送達或取消為止。 配置文件驅動程式可以將讀取要求保留擱置中,以便接受來自遠端裝置的連入數據。
藍牙驅動程式堆疊會提供一些傳入數據的緩衝處理,因此不需要持續檢查讀取 IRP 是否擱置中。 配置文件驅動程式可以指定要在與BRB_L2CA_OPEN_CHANNEL要求相關聯的 IncomingQueueDepth 成員中提供的緩衝量。
如果在 TransferFlags 成員中設定ACL_TRANSFER_TIMEOUT旗標,且 Timeout 成員中指定的持續時間到期, 則BRB_L2CA_ACL_TRANSFER 要求將會完成並傳回錯誤。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista 和更新版本中的版本:_Supported。 |
標頭 | bthddi.h (包含 Bthddi.h) |