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