_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旗標,且 逾時 成員中指定的持續時間到期,則 BRB_L2CA_ACL_TRANSFER 要求將會完成並傳回錯誤。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista 和更新版本中的版本:_Supported。 |
標頭 | bthddi.h (包括 Bthddi.h) |