_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

蓝牙驱动程序堆栈为响应早期 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)

另请参阅

BRB_HEADER

BRB_L2CA_ACL_TRANSFER

BRB_L2CA_OPEN_CHANNEL

BRB_L2CA_OPEN_CHANNEL_RESPONSE