Akzeptieren von L2CAP-Verbindungen in einem Bluetooth-Profiltreiber
Ein L2CAP-Serverprofiltreiber reagiert auf eingehende L2CAP-Verbindungsanforderungen (Logical Link Control and Adaptation Protocol) von Remotegeräten. Beispielsweise würde ein L2CAP-Serverprofiltreiber für einen PDA auf eine eingehende Verbindungsanforderung vom PDA reagieren.
So empfangen Sie eingehende L2CAP-Verbindungsanforderungen
Um eingehende L2CAP-Verbindungsanforderungen voneinem Remotegerätfür einen bestimmten PSM zu empfangen, sollten Profiltreiber zunächst eine BRB_L2CA_REGISTER_SERVER-Anforderungerstellen und senden, wobei NULL im BtAddress-Member und 0 im Psm-Element der _BRB_L2CA_REGISTER_SERVER-Struktur der Anforderung angegeben wird. Profiltreiber müssen beim Senden der BRB_L2CA_REGISTER_SERVER-Anforderung auch eine L2CAP-Rückruffunktion beim Bluetooth-Treiberstapel registrieren. Dadurch kann der Bluetooth-Treiberstapel den Profiltreiber über eingehende L2CAP-Verbindungsanforderungen benachrichtigen.
Dann sollten Profiltreiber eine BRB_REGISTER_PSM-Anforderungerstellen und senden, damit der Bluetooth-Treiberstapel Verbindungen von dem PSM akzeptiert, der von der Anforderung registriert wurde. Andernfalls lehnt der Bluetooth-Treiberstapel alle Verbindungsanforderungen ab, die unbekannte (nicht registrierte) Verbindungsanforderungen aufweisen. Weitere Informationen zu PSMs finden Sie in der _BRB_PSM-Struktur .
Um eingehende L2CAP-Verbindungsanforderungen von einembestimmtenRemotegerät/PSM-Paar zu empfangen, sollten Profiltreiber eine BRB_L2CA_REGISTER_SERVER-Anforderungerstellen und senden, wobei die Adresse des Remotegeräts im BtAddress-Member und PSM im Psm-Member der begleitenden _BRB_L2CA_REGISTER_SERVER-Struktur der Anforderung angegeben wird. Profiltreiber müssen beim Senden der BRB_L2CA_REGISTER_SERVER-Anforderung auch eine L2CAP-Rückruffunktion beim Bluetooth-Treiberstapel registrieren. Dadurch kann der Bluetooth-Treiberstapel den Profiltreiber über eingehende L2CAP-Verbindungsanforderungen benachrichtigen.
Der Profiltreiber sollte eine IOCTL_BTH_SDP_SUBMIT_RECORD ausstellen. Der Profiltreiber kann dann einen SDP-Eintrag registrieren, der den Dienst beschreibt, den der Profiltreiber unterstützt, damit Remotesysteme den neuen Dienst mithilfe von SDP ermitteln können.
Wenn der Bluetooth-Treiberstapel eine eingehende L2CAP-Verbindungsanforderung von einem Remotegerät empfängt, ruft der Bluetooth-Treiberstapel die L2CAP-Rückruffunktion auf , die zuvor vom Profiltreiber registriert wurde. Der Bluetooth-Treiberstapel übergibt den Wert IndicationRemoteConnect an den Parameter Indication der Rückruffunktion.
Um auf eingehende Verbindungsanforderungen zu reagieren, sollten Profiltreiber eine BRB_L2CA_OPEN_CHANNEL_RESPONSE-Anforderungerstellen und senden. Der Serverprofiltreiber verwendet den Wert, der vom Bluetooth-Treiberstapel im Parameter Parameters der Rückruffunktion übergeben wird, um die Verbindungseinstellungen mit dem Remotegerät auszuhandeln. Basierend auf dem Wert des Response-Members der _BRB_L2CA_OPEN_CHANNEL Struktur, die mit dieser Anforderung übergeben wird, akzeptiert oder lehnt der Serverprofiltreiber die Verbindungsanforderung ab.
Wenn der Serverprofiltreiber die Verbindung akzeptiert, kann der Bluetooth-Treiberstapel die L2CAP-Rückruffunktion aufrufen, wie im Rückrufelement der _BRB_L2CA_OPEN_CHANNEL-Struktur angegeben. Der Bluetooth-Treiberstapel verwendet diese Funktion, um den Serverprofiltreiber über alle Änderungen an der L2CAP-Verbindung zu benachrichtigen.
Hinweis
- Ein einzelner Profiltreiber kann sich registrieren, um eingehende L2CAP-Verbindungsanforderungen von mehreren, unterschiedlichen Remotegeräte-/PSM-Paaren zu empfangen, indem er mehrere BRB_L2CA_REGISTER_SERVER Anforderungen erstellt und sendet, um mehrere L2CAP-Server zu registrieren, wobei eindeutige Remotegeräteadresse und PSM-Paare in den BtAddress - und Psm-Mitgliedern der Anforderungen angegeben werden.
- Ein einzelner Profiltreiber kann sich registrieren, um eingehende L2CAP-Verbindungsanforderungen von jedem Remotegerät für ein bestimmtes PSM zu empfangen und eingehende L2CAP-Verbindungsanforderungen von mehreren, unterschiedlichen Remotegerät/PSM-Paaren zu empfangen, indem er sich zuerst registriert, um eingehende L2CAP-Verbindungsanforderungen von einem beliebigen Remotegerät für ein bestimmtes PSM zu empfangen, und dann registriert, um eingehende L2CAP-Verbindungsanforderungen von einem bestimmten Remotegerät/PSM-Paar zu empfangen, solange der jeweilige PSM registriert ist. im ersten Schritt wird nicht erneut registriert.
- Mehrere Profiltreiber können sich nicht registrieren, um eingehende L2CAP-Verbindungsanforderungen von einem Remotegerät für dasselbe PSM zu empfangen. Der Bluetooth-Treiberstapel erlaubt nur einem Profiltreiber, eingehende L2CAP-Verbindungsanforderungen von einem Remotegerät für einen bestimmten PSM zu empfangen.
Nachdem der Profiltreiber eine Verbindungsanforderung akzeptiert hat, kann er andere BRBs verwenden, um Daten über die neu eingerichtete L2CAP-Verbindung zu senden und zu empfangen.
Um Benachrichtigungen über L2CAP-Verbindungsversuche des Remotegeräts zu beenden, sollten Profiltreiber eine BRB_L2CA_UNREGISTER_SERVER-Anforderungerstellen und senden, um die Registrierung eines Servers aufzuheben, wenn der Profiltreiber Benachrichtigungen IRP_MN_REMOVE_DEVICE Plug & Play entfernen.
Weitere Informationen zu Benachrichtigungen und Rückruffunktionen finden Sie unter Unterstützen von Bluetooth-Ereignisbenachrichtigungen.