bthddi.h) (_BRB_SCO_TRANSFER 结构

_BRB_SCO_TRANSFER 结构描述一个缓冲区,用于从中读取常时等量数据或将常时等量数据写入 SCO 通道。

语法

struct _BRB_SCO_TRANSFER {
  BRB_HEADER         Hdr;
  BTH_ADDR           BtAddress;
  SCO_CHANNEL_HANDLE ChannelHandle;
  ULONG              TransferFlags;
  ULONG              BufferSize;
  PVOID              Buffer;
  PMDL               BufferMDL;
  ULONGLONG          DataTag;
};

成员

Hdr

包含当前 BRB 相关信息的 BRB_HEADER 结构。

BtAddress

远程设备的蓝牙地址。

ChannelHandle

蓝牙驱动程序堆栈为响应早期 BRB_SCO_OPEN_CHANNEL 或BRB_SCO_OPEN_CHANNEL_RESPONSE请求而返回 SCO 通道句柄。

TransferFlags

指定 BRB 的基本行为的标志。 下表列出了有效的标志值。

标志 描述
SCO_TRANSFER_DIRECTION_IN 如果设置了此位,BRB 将通过 SCO 通道从远程设备读取常时等量数据。
SCO_TRANSFER_DIRECTION_OUT 如果设置了此位,BRB 将通过 SCO 通道将常时常量数据写入远程设备。

BufferSize

此结构的 Buffer 成员描述的输入缓冲区的大小(以字节为单位)。

Buffer

指向输入缓冲区的指针。 如果未使用 Buffer 成员,此值应为 NULL

BufferMDL

指向 MDL 输入缓冲区的指针。 如果未使用 BufferMDL 成员,此值应为 NULL

DataTag

SCO 写入

注解

若要从 SCO 连接读取常时常量数据或将常时等量数据写入 SCO 连接,配置文件驱动程序应生成并发送BRB_SCO_TRANSFER请求。

每个 SCO 连接都是双向的,可以同时读取和写入。

读取 BRB 将保持挂起状态,直到数据到达或配置文件驱动程序刷新它们。 建议更高级别的驱动程序随时打开至少两个挂起的读取 BRB,以接受来自远程设备的传入数据。

蓝牙驱动程序堆栈不为传入的常时等量数据提供任何缓冲。 因此,完成一次读取 IRP 与提交下一个 IRP 之间的小差距可能会导致数据丢失。

如果 BufferBufferMDL 都包含非 NULL 值,则 BufferMDL 优先。

要求

要求
最低受支持的客户端 版本:Windows Vista 及更高版本中_Supported。
标头 bthddi.h (包括 Bthddi.h)

另请参阅

BRB_HEADER

BRB_SCO_OPEN_CHANNEL

BRB_SCO_OPEN_CHANNEL_RESPONSE

BRB_SCO_TRANSFER