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