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 之间的小差距可能会导致数据丢失。
如果 Buffer 和 BufferMDL 都包含非 NULL 值,则 BufferMDL 优先。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 版本:Windows Vista 及更高版本中_Supported。 |
标头 | bthddi.h (包括 Bthddi.h) |