Поделиться через


структура _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)

См. также

BRB_HEADER

BRB_L2CA_ACL_TRANSFER

BRB_L2CA_OPEN_CHANNEL

BRB_L2CA_OPEN_CHANNEL_RESPONSE