структура _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_HEADER , содержащая сведения о текущем BRB.
BtAddress
Адрес удаленного устройства.
ChannelHandle
Дескриптор канала L2CAP, возвращенный стеком драйверов Bluetooth в ответ на более раннюю BRB_L2CA_OPEN_CHANNEL или BRB_L2CA_OPEN_CHANNEL_RESPONSE запрос.
TransferFlags
Сочетание флагов, задающее базовое поведение интерфейса. Одновременно можно задать несколько флагов. Допустимые значения флагов описаны в следующей таблице:
Flag | Описание |
---|---|
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 или записывать асинхронные данные, драйверы профилей должны создавать и отправлятьзапрос BRB_L2CA_ACL_TRANSFER .
Каждое подключение L2CAP является двунаправленным и может считываться и записываться одновременно.
Если время ожидания не указано, то объекты BRB, связанные с запросом на чтение, будут оставаться в состоянии ожидания до поступления данных или до тех пор, пока они не будут отменены. Драйверы профилей могут оставить запрос на чтение в ожидании, чтобы принимать входящие данные с удаленного устройства.
Стек драйверов Bluetooth обеспечивает некоторую буферизацию входящих данных, поэтому нет необходимости постоянно проверка, находится ли ожидание IRP для чтения. Драйвер профиля может указать объем буферизации для предоставления в члене IncomingQueueDepth , связанном с запросом BRB_L2CA_OPEN_CHANNEL .
Если флаг ACL_TRANSFER_TIMEOUT установлен в элементе TransferFlags и истекает длительность, указанная в элементе Timeout , запрос BRB_L2CA_ACL_TRANSFER завершится и вернет ошибку.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Versions:_Supported в Windows Vista и более поздних версий. |
Верхняя часть | bthddi.h (включая Bthddi.h) |