Partager via


Acceptation des connexions L2CAP dans un pilote de profil Bluetooth

Un pilote de profil de serveur L2CAP répond aux demandes de connexion entrantes du protocole L2CAP (Logical Link Control and Adaptation Protocol) provenant d’appareils distants. Par exemple, un pilote de profil de serveur L2CAP pour un PDA répond à une demande de connexion entrante de l’assistant principal.

Pour recevoir les demandes de connexion L2CAP entrantes

  1. Pour recevoir des demandes de connexion L2CAPentrantes à partir d’un appareil distant pour un PSM particulier, les pilotes de profil doivent d’abord générer et envoyer une requête BRB_L2CA_REGISTER_SERVER, en spécifiant NULL dans le membre BtAddress et 0 dans le membre Psm de la structure _BRB_L2CA_REGISTER_SERVER de la requête. Les pilotes de profil doivent également inscrire une fonction de rappel L2CAP auprès de la pile de pilotes Bluetooth lors de l’envoi de la demande de BRB_L2CA_REGISTER_SERVER . Cela permet à la pile de pilotes Bluetooth de notifier le pilote de profil des demandes de connexion L2CAP entrantes.

    Ensuite, les pilotes de profil doivent générer et envoyer une demande de BRB_REGISTER_PSM afin que la pile de pilotes Bluetooth accepte les connexions à partir du module PSM inscrit par la demande. Sinon, la pile de pilotes Bluetooth rejette toutes les demandes de connexion qui ont des demandes de connexion inconnues (non enregistrées). Pour plus d’informations sur les modules PSM, consultez la structure _BRB_PSM .

  2. Pour recevoir des demandes de connexion L2CAP entrantes à partir d’une paire appareil distant/PSMspécifique, les pilotes de profil doivent générer et envoyer une demande de BRB_L2CA_REGISTER_SERVER, en spécifiant l’adresse de l’appareil distant dans le membre BtAddress et psM dans le membre Psm, de la structure de _BRB_L2CA_REGISTER_SERVER associée à la demande. Les pilotes de profil doivent également inscrire une fonction de rappel L2CAP auprès de la pile de pilotes Bluetooth lors de l’envoi de la demande de BRB_L2CA_REGISTER_SERVER . Cela permet à la pile de pilotes Bluetooth de notifier le pilote de profil des demandes de connexion L2CAP entrantes.

  3. Le pilote de profil doit émettre un IOCTL_BTH_SDP_SUBMIT_RECORD. Le pilote de profil peut ensuite inscrire un enregistrement SDP qui décrit le service pris en charge par le pilote de profil, afin que les systèmes distants puissent découvrir le nouveau service à l’aide de SDP.

  4. Lorsque la pile de pilotes Bluetooth reçoit une demande de connexion L2CAP entrante à partir d’un périphérique distant, la pile de pilotes Bluetooth appelle la fonction de rappel L2CAP inscrite précédemment par le pilote de profil. La pile de pilotes Bluetooth transmet la valeur IndicationRemoteConnect au paramètre Indication de la fonction de rappel.

  5. Pour répondre aux demandes de connexion entrantes, les pilotes de profil doivent générer et envoyer une demande de BRB_L2CA_OPEN_CHANNEL_RESPONSE . Le pilote de profil de serveur utilise la valeur transmise à partir de la pile de pilotes Bluetooth dans le paramètre Parameters de la fonction de rappel pour négocier les paramètres de connexion avec l’appareil distant. En fonction de la valeur du membre Response de la structure _BRB_L2CA_OPEN_CHANNEL passée avec cette demande, le pilote de profil serveur accepte ou rejette la demande de connexion.

  6. Si le pilote de profil serveur accepte la connexion, la pile de pilotes Bluetooth peut ensuite appeler la fonction de rappel L2CAP comme spécifié dans le membre Rappel de la structure _BRB_L2CA_OPEN_CHANNEL . La pile de pilotes Bluetooth utilise cette fonction pour informer le pilote de profil serveur de toute modification apportée à la connexion L2CAP.

Notes

  • Un pilote de profil unique peut s’inscrire pour recevoir des demandes de connexion L2CAP entrantes à partir de plusieurs paires d’appareils distants/PSM différentes en créant et en envoyant plusieurs demandes de BRB_L2CA_REGISTER_SERVER pour inscrire plusieurs serveurs L2CAP, en spécifiant des paires adresse de périphérique distante et PSM uniques dans les membres BtAddress et Psm des requêtes.
  • Un pilote de profil unique peut s’inscrire pour recevoir des demandes de connexion L2CAP entrantes à partir de n’importe quel appareil distant pour un PSM particulier, ainsi que recevoir des demandes de connexion L2CAP entrantes de plusieurs paires appareil distant/PSM différentes, en s’inscrivant d’abord pour recevoir les demandes de connexion L2CAP entrantes de n’importe quel appareil distant pour un PSM particulier, puis en s’inscrivant pour recevoir les demandes de connexion L2CAP entrantes d’une paire périphérique distant/PSM spécifique tant que le PSM particulier inscrit dans la première étape n’est pas inscrit à nouveau.
  • Plusieurs pilotes de profil ne peuvent pas s’inscrire pour recevoir les demandes de connexion L2CAP entrantes à partir d’un appareil distant pour le même psM. La pile de pilotes Bluetooth n’autorise qu’un seul pilote de profil à recevoir les demandes de connexion L2CAP entrantes à partir d’un appareil distant pour un psM particulier.

Une fois que le pilote de profil a accepté une demande de connexion, il peut utiliser d’autres BBR pour envoyer et recevoir des données via la connexion L2CAP nouvellement établie.

Pour cesser de recevoir des notifications de tentatives de connexion L2CAP d’appareil distant, les pilotes de profil doivent générer et envoyer une demande de BRB_L2CA_UNREGISTER_SERVER pour annuler l’inscription d’un serveur lorsque le pilote de profil traite IRP_MN_REMOVE_DEVICE Plug-and-Play supprimer des notifications.

Pour plus d’informations sur les notifications et les fonctions de rappel, consultez Prise en charge des notifications d’événements Bluetooth.