Accès aux informations du service SDP
Une fois qu’un pilote de profil a envoyé un enregistrement SDP (Service Discovery Protocol) pour publier ses services avec SDP, d’autres appareils peuvent découvrir ces services en recherchant spécifiquement l’enregistrement ou en naviguant pour le trouver.
Pour rechercher des enregistrements SDP, un pilote de profil client doit d’abord utiliser IOCTL_BTH_SDP_CONNECT pour se connecter au service SDP de l’appareil distant.
Un pilote de profil peut ensuite utiliser l’un des IOCTL suivants pour effectuer la recherche d’enregistrement SDP réelle :
IOCTL_BTH_SDP_ATTRIBUTE_SEARCH obtient tous les composants d’un enregistrement SDP distant qui appartiennent à une plage d’attributs SDP spécifiée.
IOCTL_BTH_SDP_SERVICE_SEARCH émet une requête SDP à l’appareil distant, en demandant des handles aux enregistrements SDP d’une classe de service ou de classes particulières.
IOCTL_BTH_SDP_SERVICE_ATTRIBUTE_SEARCH combine IOCTL_BTH_SDP_ATTRIBUTE_SEARCH et IOCTL_BTH_SDP_SERVICE_ATTRIBUTE_SEARCH et retourne un flux d’enregistrements SDP utilisable en une seule opération.
Les pilotes de profil peuvent utiliser IOCTL_BTH_SDP_SERVICE_SEARCH et IOCTL_BTH_SDP_ATTRIBUTE_SEARCH pour réduire la quantité de trafic SDP transmis via une liaison Bluetooth et peuvent extraire les informations nécessaires à l’aide d’un petit nombre d’unités de transfert maximales (MTU). Si aucun de ces problèmes n’est très préoccupant, il peut être plus pratique pour les conducteurs de profil d’appeler IOCTL_BTH_SDP_SERVICE_ATTRIBUTE_SEARCH.
Une fois que le pilote de profil a obtenu le multiplexeur de protocole/service dynamique (PSM) pour le service souhaité, il peut se connecter au service distant à l’aide du BRB_L2CA_OPEN_CHANNEL BRB.
Notes
Si le service a un psM fixe, ce que beaucoup font, les pilotes de profil client L2CAP n’ont pas besoin d’utiliser SDP pour obtenir le psM. Toutefois, les pilotes de profil client L2CAP peuvent toujours utiliser SDP pour obtenir les attributs du serveur SDP.
Une fois la recherche terminée, le pilote de profil doit utiliser IOCTL_BTH_SDP_DISCONNECT pour se déconnecter du serveur SDP distant.