структура _BRB_L2CA_OPEN_ENHANCED_CHANNEL (bthddi.h)

Структура _BRB_L2CA_OPEN_ENHANCED_CHANNEL используется для открытия расширенного канала L2CAP на удаленном устройстве или отправки ответа на принятие или отклонение входящего расширенного запроса на подключение L2CAP, инициированного удаленным устройством.

Синтаксис

struct _BRB_L2CA_OPEN_ENHANCED_CHANNEL {
  BRB_HEADER                              Hdr;
  L2CAP_CHANNEL_HANDLE                    ChannelHandle;
  union {
    struct {
      USHORT Response;
      USHORT ResponseStatus;
    };
    USHORT Psm;
  };
  ULONG                                   ChannelFlags;
  BTH_ADDR                                BtAddress;
  struct {
    ULONG                    Flags;
    L2CAP_CONFIG_VALUE_RANGE Mtu;
    L2CAP_CONFIG_VALUE_RANGE FlushTO;
    L2CAP_FLOWSPEC           Flow;
    USHORT                   LinkTO;
    ULONG                    NumExtraOptions;
    PL2CAP_CONFIG_OPTION     ExtraOptions;
    struct {
      UCHAR ServiceType;
      ULONG Latency;
    } LocalQos;
    struct {
      ULONG                                 Flags;
      L2CAP_RETRANSMISSION_AND_FLOW_CONTROL RetransmissionAndFlow;
    } ModeConfig;
    USHORT                   Fcs;
    L2CAP_EXTENDED_FLOW_SPEC ExtendedFlowSpec;
    USHORT                   ExtendedWindowSize;
  } ConfigOut;
  struct {
    ULONG                    Flags;
    L2CAP_CONFIG_VALUE_RANGE Mtu;
    L2CAP_CONFIG_RANGE       FlushTO;
  } ConfigIn;
  ULONG                                   CallbackFlags;
  PFNBTHPORT_INDICATION_CALLBACK_ENHANCED Callback;
  PVOID                                   CallbackContext;
  PVOID                                   ReferenceObject;
  CHANNEL_CONFIG_RESULTS_ENHANCED         OutResults;
  CHANNEL_CONFIG_RESULTS_ENHANCED         InResults;
  UCHAR                                   IncomingQueueDepth;
  PVOID                                   Reserved;
};

Члены

Hdr

Структура BRB_HEADER , содержащая сведения о текущем BRB.

ChannelHandle

Дескриптор, используемый для идентификации подключения при успешном подключении. При отправке BRB_L2CA_OPEN_CHANNEL оно будет заполнено по завершении BRB. При отправке запроса BRB_L2CA_OPEN_CHANNEL_RESPONSE его должен заполнить сервер перед отправкой BRB. Присвоенное значение должно быть INDICATION_PARAMETERS::ConnectionHandle передано во время IndicationRemoteConnect.

Response

Используется только с BRB_L2CA_OPEN_CHANNEL_RESPONSE. Используется одно из CONNECT_RSP_RESULT_Xxx значений.

Если BRB возвращается с состоянием STATUS_REQUEST_NOT_ACCEPTED, ответ будет содержать отрицательный ответ от удаленного узла.

ResponseStatus

Если значение Response равно CONNECT_RSP_RESULT_PENDING, это поле является допустимым. Используется одно из CONNECT_RSP_STATUS_XXX значений.

Psm

Протокол/сервисный мультиплексор (PSM), используемый каналом для подключения к удаленному устройству. При использовании с запросом BRB_L2CA_OPEN_ENHANCED_CHANNEL этот элемент задается в качестве поля ввода. При использовании с запросом BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE этот элемент используется в качестве поля вывода.

ChannelFlags

Флаги, указывающие требования к каналу, который должен быть открыт. Допустимые значения флагов перечислены в следующей таблице:

Flag Описание
CF_LINK_AUTHENTICATED Ссылка должна пройти проверку подлинности.
CF_LINK_ENCRYPTED Ссылка должна быть зашифрована. Установка этого флага также задает флаг CF_LINK_AUTHENTICATED.
CF_LINK_SUPPRESS_PIN Драйвер профиля указывает на то, что пользователям не предлагается ввести ПИН-код.

BtAddress

Адрес Bluetooth устройства, для которого предназначено подключение.

ConfigOut

Подструктура, содержащая параметры для BRB_L2CA_OPEN_ENHANCED_CHANNEL BRB, отправленного на удаленное устройство.

ConfigOut.Flags

Флаги, указывающие требования к каналу, который должен быть открыт. Допустимые значения флагов перечислены в следующей таблице:

Flag Описание
CF_LINK_AUTHENTICATED Ссылка должна пройти проверку подлинности.
CF_LINK_ENCRYPTED Ссылка должна быть зашифрована. Установка этого флага также задает флаг CF_LINK_AUTHENTICATED.
CF_LINK_SUPPRESS_PIN Драйвер профиля указывает на то, что пользователям не предлагается ввести ПИН-код.
CFG_ENHANCED Указывает, что допустимая структура ModeConfig.
CFG_FCS Указывает, что значение Fcs является допустимым.

ConfigOut.Mtu

Диапазон единиц передачи сообщений (MTU), используемый для согласования размера исходящей половины канала.

ConfigOut.FlushTO

Диапазон возможных значений, используемых для истечения времени ожидания очистки для исходящей половины канала.

ConfigOut.Flow

Зарезервировано для последующего использования. Не используйте.

ConfigOut.LinkTO

Время ожидания связи диспетчера ссылок.

ConfigOut.NumExtraOptions

Количество элементов массива, содержащихся в элементе ExtraOptions . Для большинства клиентов это значение должно быть равным нулю.

ConfigOut.ExtraOptions

Дополнительные параметры. Для большинства клиентов это значение должно быть равным нулю.

ConfigOut.LocalQos

Зарезервировано для последующего использования. Не используйте.

ConfigOut.LocalQos.ServiceType

Зарезервировано для последующего использования. Не используйте.

ConfigOut.LocalQos.Latency

Зарезервировано для последующего использования. Не используйте.

ConfigOut.ModeConfig

Указывает тип открываемого канала L2CAP. Эта структура допустима, только если указан флаг CFG_ENHANCED.

ConfigOut.ModeConfig.Flags

Указывает тип запрошенного режима канала L2CAP.

Flag Описание
CM_BASIC Откройте канал в базовом режиме.
CM_RETRANSMISSION_AND_FLOW Откройте расширенный канал режима повторной передачи.
CM_STREAMING Откройте канал режима потоковой передачи.

ConfigOut.ModeConfig.RetransmissionAndFlow

Задает параметры для режимов CM_RETRANSMISSION_AND_FLOW и CM_STREAMING. Эта структура должна быть нулевой, если в элементе Flags указано только CM_BASIC.

Для подмембера Modeпараметра RetransmissionAndFlow должно быть задано значение 0. Используйте подмембер ModeConfigretransmissionAndFlow , чтобы указать тип открываемого канала.

ConfigOut.Fcs

Указывает, следует ли использовать FCS для расширенного канала L2CAP. Это значение допустимо, только если CM_RETRANSMISSION_AND_FLOW или CM_STREAMING флаг указан в элементе Flags .

ConfigOut.ExtendedFlowSpec

Не поддерживается.

ConfigOut.ExtendedWindowSize

Не поддерживается.

ConfigIn

Подструктура, содержащая параметры параметров для проверки входящих BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE BRB, отправляемых с удаленного устройства.

ConfigIn.Flags

Флаги, указывающие требования к каналу, который должен быть открыт. Допустимые значения флагов перечислены в следующей таблице:

Flag Описание
CF_LINK_AUTHENTICATED Ссылка должна пройти проверку подлинности.
CF_LINK_ENCRYPTED Ссылка должна быть зашифрована. Установка этого флага также задает флаг CF_LINK_AUTHENTICATED.
CF_LINK_SUPPRESS_PIN Драйвер профиля указывает на то, что пользователям не предлагается ввести ПИН-код.

ConfigIn.Mtu

Диапазон единиц передачи сообщений (MTU), используемый для согласования размера входящей половины канала.

ConfigIn.FlushTO

Диапазон возможных значений, используемых для истечения времени ожидания очистки для входящей половины канала.

CallbackFlags

Флаг, указывающий, какие события должны создавать подпрограмму обратного вызова для уведомления драйвера профиля о возникновении события. Допустимые значения флагов содержатся в следующей таблице.

Flag Описание
CALLBACK_CONFIG_EXTRA_IN Если задано значение , подпрограмма обратного вызова будет вызываться, когда запрос конфигурации для удаленного устройства содержит дополнительные параметры. Если значение не задано, дополнительные параметры конфигурации будут отклонены как неизвестные. Этот флаг используется с BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE BRB.
CALLBACK_CONFIG_EXTRA_OUT Если этот параметр задан, подпрограмма обратного вызова будет вызываться, когда удаленное устройство отклоняет дополнительный параметр конфигурации из запроса BRB_L2CA_OPEN_ENHANCED_CHANNEL . Если значение не задано и удаленное устройство отклоняет запрос конфигурации из-за дополнительного параметра, подключение будет закрыто.
CALLBACK_CONFIG_QOS Если этот параметр задан, подпрограмма обратного вызова будет вызываться, когда удаленное устройство отправляет запрос конфигурации, содержащий значение QOS. Если этот флаг не установлен и удаленное устройство отправляет параметры QOS в запросе конфигурации или отклоняет запрошенные драйвером профиля параметры QOS, подключение отключается.
CALLBACK_DISCONNECT Если этот параметр задан, подпрограмма обратного вызова будет вызываться при отключении удаленного устройства от расширенного канала L2CAP.
CALLBACK_RECV_PACKET Если этот параметр задан, подпрограмма обратного вызова будет вызываться, когда драйвер профиля получает входящий расширенный пакет L2CAP.

Callback

Функция обратного вызова Enhanced L2CAP, реализованная драйвером профиля, которую должен вызывать стек драйверов Bluetooth, чтобы уведомить драйвер профиля о любых изменениях в расширенном подключении L2CAP.

CallbackContext

Контекст для передачи функции обратного вызова, указанной в элементе Callback . Это значение определяется драйвером профиля.

ReferenceObject

Указатель на объект, передаваемый в ObReferenceObject и ObDereferenceObject , для которых требуется сохранить счетчик ссылок.

OutResults

Структура CHANNEL_CONFIG_RESULTS_ENHANCED , содержащая параметры конфигурации, согласованные для исходящего запроса.

InResults

Структура CHANNEL_CONFIG_RESULTS_ENHANCED, содержащая параметры конфигурации, согласованные для входящего запроса.

IncomingQueueDepth

Указывает длину входящей очереди в единицах передачи сообщений (MTU).

Reserved

Зарезервированный элемент. Не используйте.

Ответ

Этот элемент используется в качестве входного параметра для запроса BRB_L2CA_OPEN_ENHANCED_CHANNEL и выходного параметра для запроса BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE .

Для запроса BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE этот участник содержит флаг, указывающий ответ драйвера профиля на удаленное устройство. Допустимые значения флагов содержатся в следующей таблице.

Flag Описание
CONNECT_RSP_RESULT_NO_RESOURCES Драйвер профиля отказал в подключении из-за нехватки ресурсов.
CONNECT_RSP_RESULT_PENDING Драйвер профиля в настоящее время занят и не может принять подключение. Повторите попытку позже.
CONNECT_RSP_RESULT_PSM_NEG Драйвер профиля отказал в подключении, так как PSM не поддерживается.
CONNECT_RSP_RESULT_SECURITY_BLOCK Драйвер профиля отказал в подключении по соображениям безопасности.
CONNECT_RSP_RESULT_SUCCESS Драйвер профиля принял подключение.

Для BRB_L2CA_OPEN_ENHANCED_CHANNEL BRB этот элемент содержит ответ от удаленного устройства, к которому драйвер профиля пытался подключиться. Допустимые значения флагов содержатся в следующей таблице.

Flag Описание
CONNECT_RSP_RESULT_NO_RESOURCES Удаленное устройство отказало в подключении из-за нехватки ресурсов.
CONNECT_RSP_RESULT_PSM_NEG Удаленное устройство отказало в подключении.
CONNECT_RSP_RESULT_SECURITY_BLOCK Удаленное устройство отказало в подключении по соображениям безопасности.
CONNECT_RSP_RESULT_SUCCESS Удаленное устройство приняло подключение.

ResponseStatus

Если во время вызова BRB_L2CA_OPEN_ENHANCED_CHANNEL_RESPONSE BRB для элемента Response задано значение CONNECT_RSP_RESULT_PENDING, этот элемент является допустимым и содержит одно из следующих значений:

  • CONNECT_RSP_STATUS_AUTHENTICATION_PENDING
  • CONNECT_RSP_STATUS_AUTHORIZATION_PENDING
  • CONNECT_RSP_STATUS_NO_INFORMATION

Комментарии

Драйверы профилей могут использовать CM_BASIC | CM_RETRANSMISSION_AND_FLOWрежимы , или CM_BASIC | CM_STREAMING для элемента Flags . Это означает, что нужно открыть расширенный режим повторной передачи или канал режима потоковой передачи, если это возможно, и, если нет, вернуться к каналу базового режима. Значение CM_RETRANSMISSION_AND_FLOW | CM_STREAMING не поддерживается.

Требования

Требование Значение
Минимальная версия клиента Версии:_Supported в Windows 8 и более поздних версиях Windows
Верхняя часть bthddi.h (включая Bthddi.h)