Création d’une connexion cliente L2CAP à un appareil distant
Un pilote de profil client L2CAP est un pilote de profil qui demande une connexion asynchrone sans connexion (ACL) à un appareil distant. Si l’appareil accepte la connexion, le pilote de profil client L2CAP est averti de toute modification apportée à la connexion. Par exemple, un pilote de profil client L2CAP peut demander une connexion à une imprimante distante, et une fois que l’imprimante a accepté la demande, la pile de pilotes Bluetooth peut avertir le pilote de profil lorsque l’imprimante est désactivée ou supprimée.
Le pilote de profil client L2CAP doit avoir des informations sur l’appareil distant, telles que le multiplexeur de protocole/service (PSM) utilisé par l’appareil, afin de demander une connexion à l’appareil. Le pilote de profil client peut obtenir ces informations via les DDIs SDP (Service Discovery Protocol) ou via le psM fixe d’un service. Pour plus d’informations sur la façon d’obtenir ces informations, consultez Accès aux informations du service SDP.
Pour lancer une connexion L2CAP à un appareil distant, une fois que le pilote de profil client dispose des informations requises sur l’appareil, il doit générer et envoyer une demande BRB_L2CA_OPEN_CHANNEL .
Lorsque le pilote de profil client génère la requête, il fournit un pointeur vers une structure _BRB_L2CA_OPEN_CHANNEL dans le membre Parameters.Others.Argument1 de l’IRP associé à la demande. Cette structure contient l’adresse Bluetooth de l’appareil distant, le PSM inscrit pour l’appareil et des paramètres de configuration supplémentaires.
Si l’appareil distant accepte la demande de canal ouvert, les membres OutResults et InResults de la structure _BRB_L2CA_OPEN_CHANNEL contiennent des informations sur la connexion nouvellement créée. Le membre OutResults spécifie les paramètres de la moitié sortante du canal et le membre InResults spécifie les paramètres de la moitié entrante du canal.
Plusieurs valeurs de configuration transmises dans la structure _BRB_L2CA_OPEN_CHANNEL, telles que le membre Mtu , sont utilisées pour négocier la connexion avec l’appareil distant. Les pilotes de profil client doivent fournir une plage aussi large que possible pour augmenter les chances de réussite de la négociation de canal. La spécification d’une taille minimale d’unités de transfert de messages (MTU) supérieure à la taille minimale MTU Bluetooth de base ne doit être effectuée que si cela est absolument nécessaire. Si la négociation échoue, la connexion échoue.
Le membre IncomingQueueDepth de la structure _BRB_L2CA_OPEN_CHANNEL spécifie le nombre maximal de MTU que la pile de pilotes Bluetooth recevra et la file d’attente sur la connexion avant que la pile de pilotes Bluetooth ne commence à les ignorer. La définition de cette valeur sur un très petit nombre augmente les risques de perte de données, tandis que sa définition sur un très grand nombre augmente les besoins en mémoire. Microsoft recommande de définir ce membre sur 10.
Lorsque le pilote de profil n’a plus besoin de la connexion L2CAP à l’appareil distant, il doit générer et envoyer une requête BRB_L2CA_CLOSE_CHANNEL .