Freigeben über


Erstellen einer L2CAP-Clientverbindung mit einem Remotegerät

Ein L2CAP-Clientprofiltreiber ist ein Profiltreiber, der eine ACL-Verbindung (Asynchronous Connectionless Link) mit einem Remotegerät anfordert. Wenn das Gerät die Verbindung akzeptiert, wird der L2CAP-Clientprofiltreiber über alle Änderungen an der Verbindung benachrichtigt. Beispielsweise kann ein L2CAP-Clientprofiltreiber eine Verbindung mit einem Remotedrucker anfordern, und nachdem der Drucker die Anforderung angenommen hat, kann der Bluetooth-Treiberstapel den Profiltreiber benachrichtigen, wenn der Drucker ausgeschaltet oder entfernt wird.

Der L2CAP-Clientprofiltreiber muss Über Informationen über das Remotegerät verfügen, z. B. den Protokoll-/Dienstmultixer (PSM), den das Gerät verwendet, um eine Verbindung mit dem Gerät anzufordern. Der Clientprofiltreiber kann diese Informationen über die Dienstermittlungsprotokoll-DDIs (Service Discovery Protocol, SDP) oder über den festen PSM eines Diensts abrufen. Weitere Informationen zum Abrufen dieser Informationen finden Sie unter Zugreifen auf SDP-Dienstinformationen.

Um eine L2CAP-Verbindung mit einem Remotegerät zu initiieren, sollte der Clientprofiltreiber eine BRB_L2CA_OPEN_CHANNEL-Anforderungerstellen und senden, nachdem der Clientprofiltreiber über die erforderlichen Informationen über das Gerät verfügt.

Wenn der Clientprofiltreiber die Anforderung erstellt, stellt er einen Zeiger auf eine _BRB_L2CA_OPEN_CHANNEL-Struktur im Parameters.Others.Argument1-Member des der Anforderung zugeordneten IRP bereit. Diese Struktur enthält die Bluetooth-Adresse für das Remotegerät, das für das Gerät registrierte PSM und zusätzliche Konfigurationsparameter.

Wenn das Remotegerät die Offene Kanalanforderung akzeptiert, enthalten die Elemente OutResults und InResults der _BRB_L2CA_OPEN_CHANNEL-Struktur Informationen zur neu erstellten Verbindung. Das OutResults-Element gibt die Parameter für die ausgehende Hälfte des Kanals an, und der InResults-Member gibt die Parameter für die eingehende Hälfte des Kanals an.

Mehrere der Konfigurationswerte, die in der _BRB_L2CA_OPEN_CHANNEL-Struktur übergeben werden, z. B. der MTU-Member , werden verwendet, um die Verbindung mit dem Remotegerät auszuhandeln. Clientprofiltreiber sollten eine so große Bandbreite wie möglich bieten, um die Chancen auf eine erfolgreiche Kanalverhandlung zu erhöhen. Die Angabe einer mtu-Mindestgröße (Message Transfer Units), die größer als die grundlegende Mindestgröße der Bluetooth-MTU ist, sollte nur bei absoluter Notwendigkeit angegeben werden. Wenn die Aushandlung fehlschlägt, schlägt die Verbindung fehl.

Das IncomingQueueDepth-Element der _BRB_L2CA_OPEN_CHANNEL-Struktur gibt die maximale Anzahl von MTUs an, die der Bluetooth-Treiberstapel empfängt und die Verbindung in die Warteschlange stellt, bevor der Bluetooth-Treiberstapel sie verwirft. Wenn Sie diesen Wert auf eine sehr kleine Zahl festlegen, erhöht sich die Wahrscheinlichkeit eines Datenverlusts, während die Festlegung auf eine sehr große Zahl den Arbeitsspeicherbedarf erhöht. Microsoft empfiehlt, dieses Mitglied auf 10 festzulegen.

Wenn der Profiltreiber die L2CAP-Verbindung mit dem Remotegerät nicht mehr benötigt, sollte er eine BRB_L2CA_CLOSE_CHANNEL-Anforderungerstellen und senden.