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


Прием подключений L2CAP в драйвере профиля Bluetooth

Драйвер профиля сервера L2CAP отвечает на входящие запросы на подключение по протоколу L2CAP с удаленных устройств. Например, драйвер профиля сервера L2CAP для PDA будет отвечать на входящий запрос на подключение от PDA.

Получение входящих запросов на подключение L2CAP

  1. Чтобы получать входящие запросы на подключение L2CAP слюбогоудаленного устройства для конкретного PSM, драйверы профилей должны сначала выполнить сборку и отправитьзапрос BRB_L2CA_REGISTER_SERVER , указав значение NULL в элементе BtAddress и 0 в элементе Psm структуры _BRB_L2CA_REGISTER_SERVER запроса. Драйверы профилей также должны зарегистрировать функцию обратного вызова L2CAP в стеке драйверов Bluetooth при отправке запроса BRB_L2CA_REGISTER_SERVER . Это позволяет стеку драйверов Bluetooth уведомлять драйвер профиля о входящих запросах на подключение L2CAP.

    Затем драйверы профилей должны выполнить сборку и отправкузапроса BRB_REGISTER_PSM , чтобы стек драйверов Bluetooth принимал подключения от PSM, зарегистрированного в запросе. В противном случае стек драйверов Bluetooth отклоняет все запросы на подключение с неизвестными (незарегистрированными) запросами на подключение. Дополнительные сведения о PSM см . в _BRB_PSM структуре.

  2. Чтобы получать входящие запросы на подключение L2CAP отопределеннойпары удаленного устройства или PSM, драйверы профилей должны создать и отправитьзапрос BRB_L2CA_REGISTER_SERVER , указав адрес удаленного устройства в члене BtAddress и PSM в члене Psm сопроводительной структуры _BRB_L2CA_REGISTER_SERVER запроса. Драйверы профилей также должны зарегистрировать функцию обратного вызова L2CAP в стеке драйверов Bluetooth при отправке запроса BRB_L2CA_REGISTER_SERVER . Это позволяет стеку драйверов Bluetooth уведомлять драйвер профиля о входящих запросах на подключение L2CAP.

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

  4. Когда стек драйвера Bluetooth получает от удаленного устройства входящий запрос на подключение L2CAP, стек драйверов Bluetooth вызывает функцию обратного вызова L2CAP , зарегистрированную ранее драйвером профиля. Стек драйверов Bluetooth передает значение IndicationRemoteConnect в параметр Indication функции обратного вызова.

  5. Чтобы ответить на входящие запросы на подключение, драйверы профилей должны создать и отправитьзапрос BRB_L2CA_OPEN_CHANNEL_RESPONSE . Драйвер профиля сервера использует значение, переданное из стека драйверов Bluetooth в параметре Parameters функции обратного вызова, для согласования параметров подключения с удаленным устройством. В зависимости от значения элемента Response структуры _BRB_L2CA_OPEN_CHANNEL , переданной с этим запросом, драйвер профиля сервера принимает или отклоняет запрос на подключение.

  6. Если драйвер профиля сервера принимает подключение, стек драйверов Bluetooth может вызвать функцию обратного вызова L2CAP , как указано в элементе callbackструктуры _BRB_L2CA_OPEN_CHANNEL . Стек драйверов Bluetooth использует эту функцию для уведомления драйвера профиля сервера о любых изменениях подключения L2CAP.

Примечание

  • Драйвер одного профиля может зарегистрироваться для получения входящих запросов на подключение L2CAP от нескольких разных пар удаленных устройств и PSM, создавая и отправляя несколько BRB_L2CA_REGISTER_SERVER запросов на регистрацию нескольких серверов L2CAP, указывая уникальный адрес удаленного устройства и пары PSM в членах BtAddress и Psm запросов.
  • Драйвер с одним профилем может зарегистрироваться для получения входящих запросов на подключение L2CAP от любого удаленного устройства для конкретного PSM, а также получения входящих запросов подключения L2CAP от нескольких разных пар удаленных устройств и PSM, сначала регистрируясь для получения входящих запросов подключения L2CAP от любого удаленного устройства для конкретного PSM, а затем регистрируясь для получения входящих запросов подключения L2CAP от определенной пары удаленного устройства/PSM, если зарегистрирован конкретный PSM. на первом шаге больше не регистрируется.
  • Несколько драйверов профилей не могут зарегистрироваться для получения входящих запросов на подключение L2CAP с любого удаленного устройства для одного и того же PSM. Стек драйверов Bluetooth позволяет только одному драйверу профиля получать входящие запросы на подключение L2CAP от любого удаленного устройства для конкретного PSM.

После того как драйвер профиля примет запрос на подключение, он может использовать другие BRB для отправки и получения данных по вновь установленному подключению L2CAP.

Чтобы прекратить получение уведомлений о попытках подключения L2CAP удаленного устройства, драйверы профилей должны создать и отправитьзапрос BRB_L2CA_UNREGISTER_SERVER на отмену регистрации сервера, когда драйвер профиля обрабатывает IRP_MN_REMOVE_DEVICE Plug and Play удалить уведомления.

Дополнительные сведения об уведомлениях и функциях обратного вызова см. в разделе Поддержка уведомлений о событиях Bluetooth.