_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 | 读取作应在 超时 成员中指定的毫秒数后停止。 |
BufferSize
缓冲区的大小(以字节为单位)。
Buffer
指向输入缓冲区的指针。
BufferMDL
指向 MDL 输入缓冲区的指针。
Timeout
取消读取作之前,持续时间(以毫秒为单位),此时使用的任何数据都将丢失。
RemainingBufferSize
BRB 调用后缓冲区中留下的空间量(以字节为单位)。
言论
若要从 L2CAP 通道读取或写入异步数据,配置文件驱动程序应 生成并发送 BRB_L2CA_ACL_TRANSFER 请求。
每个 L2CAP 连接都是双向的,可以同时读取和写入。
如果未指定超时,则与读取请求关联的 BR 将保持挂起状态,直到数据到达或取消它们为止。 配置文件驱动程序可以保留读取请求挂起,以便接受来自远程设备的传入数据。
蓝牙驱动程序堆栈提供传入数据的一些缓冲,因此无需持续检查读取 IRP 是否挂起。 配置文件驱动程序可以指定要在与 BRB_L2CA_OPEN_CHANNEL 请求关联的 IncomingQueueDepth 成员中提供的缓冲量。
如果在 TransferFlags 成员中设置了ACL_TRANSFER_TIMEOUT标志,并且 超时 成员中指定的持续时间将过期,则 BRB_L2CA_ACL_TRANSFER 请求将完成并返回错误。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista 及更高版本中的版本:_Supported。 |
标头 | bthddi.h (包括 Bthddi.h) |