Übersicht über die Kommunikation mit SDP-Servern
Der Bluetooth-Treiberstapel unterstützt das Dienstermittlungsprotokoll (Service Discovery Protocol, SDP). Mit diesem Protokoll können Profiltreiber nach Diensten suchen oder suchen, die von Bluetooth-Geräten angeboten werden, die sich im Bereich des lokalen Funks befinden. SDP verwendet das Logical Link Control and Adaptation Protocol (L2CAP) als Transportprotokoll und folgt einem Client-Server-Modell.
Ein Dienst ist eine beliebige Entität, die im Namen einer anderen Entität Informationen bereitstellen, eine Aktion ausführen oder eine Ressource steuern kann. Ein Dienst kann als Software, Hardware oder eine Kombination aus Hardware und Software implementiert werden. Der Dienstdatensatz besteht vollständig aus einer Liste von Dienstattributen.
Nachdem sich ein L2CAP-Serverprofiltreiber registriert hat, um eingehende L2CAP-Verbindungsanforderungen zu akzeptieren, kann er seine Dienste mit dem SDP-Protokoll mithilfe von IOCTL_BTH_SDP_SUBMIT_RECORD oder IOCTL_BTH_SDP_SUBMIT_RECORD_WITH_INFO ankündigen. Jeder SDP-Datensatz wird als Stream übermittelt. Wenn der Profiltreiber IOCTL_BTH_SDP_SUBMIT_RECORD_WITH_INFO verwendet, stellt der Profiltreiber dem Rohdatenstrom eine BTH_SDP_RECORD-Struktur voran, die zusätzliche Attribute enthält, die nicht Teil des SDP-Eintrags selbst sind. Dazu gehören Sicherheitsanforderungen für einen anfordernden Client, Veröffentlichungsoptionen für den SDP-Eintrag, CoD-Informationen (Class-of-Device), die Länge des Datensatzes und der Datensatz selbst.
Nachdem der Profiltreiber seine Dienste angekündigt hat, können andere Bluetooth-Geräte nach diesen Diensten suchen oder danach suchen. Weitere Informationen zu SDP-Diensten finden Sie unter Zugreifen auf SDP-Dienstinformationen.
Um die Werbung von Diensten mit SDP zu beenden, verwendet ein Profiltreiber IOCTL_BTH_SDP_REMOVE_RECORD.