Freigeben über


_BRB_L2CA_OPEN_CHANNEL Struktur (bthddi.h)

Die _BRB_L2CA_OPEN_CHANNEL-Struktur beschreibt einen L2CAP-Kanal, der für ein Remotegerät geöffnet werden soll, oder eine Antwort des Profiltreibers, die eine eingehende L2CAP-Verbindungsanforderung akzeptiert oder abgelehnt hat, die von einem Remotegerät initiiert wurde.

Syntax

struct _BRB_L2CA_OPEN_CHANNEL {
  BRB_HEADER                     Hdr;
  L2CAP_CHANNEL_HANDLE           ChannelHandle;
  union {
    struct {
      USHORT Response;
      USHORT ResponseStatus;
    };
    USHORT Psm;
  };
  ULONG                          ChannelFlags;
  BTH_ADDR                       BtAddress;
  struct {
    ULONG                    Flags;
    L2CAP_CONFIG_VALUE_RANGE Mtu;
    L2CAP_CONFIG_VALUE_RANGE FlushTO;
    L2CAP_FLOWSPEC           Flow;
    USHORT                   LinkTO;
    ULONG                    NumExtraOptions;
    PL2CAP_CONFIG_OPTION     ExtraOptions;
    struct {
      UCHAR ServiceType;
      ULONG Latency;
    } LocalQos;
  } ConfigOut;
  struct {
    ULONG                    Flags;
    L2CAP_CONFIG_VALUE_RANGE Mtu;
    L2CAP_CONFIG_RANGE       FlushTO;
  } ConfigIn;
  ULONG                          CallbackFlags;
  PFNBTHPORT_INDICATION_CALLBACK Callback;
  PVOID                          CallbackContext;
  PVOID                          ReferenceObject;
  CHANNEL_CONFIG_RESULTS         OutResults;
  CHANNEL_CONFIG_RESULTS         InResults;
  UCHAR                          IncomingQueueDepth;
};

Angehörige

Hdr

Eine BRB_HEADER Struktur, die Informationen zum aktuellen BRB enthält.

ChannelHandle

Handle, das verwendet wird, um die Verbindung bei einer erfolgreichen Verbindung zu identifizieren. Beim Senden einer BRB_L2CA_OPEN_CHANNELwird dies ausgefüllt, wenn der BRB abgeschlossen ist. Beim Senden einer BRB_L2CA_OPEN_CHANNEL_RESPONSEmuss dies vom Server ausgefüllt werden, bevor der BRB gesendet wird. Der zugewiesene Wert sollte INDICATION_PARAMETERS::ConnectionHandle sein, der während der IndicationRemoteConnect übergeben wurde.

Response

Wird nur mit BRB_L2CA_OPEN_CHANNEL_RESPONSEverwendet. Einer der CONNECT_RSP_RESULT_Xxx Werte wird verwendet.

Wenn der BRB den Status STATUS_REQUEST_NOT_ACCEPTED zurückgibt, enthält Antwort- die negative Antwort vom Remotehost.

ResponseStatus

Wenn Antwort- gleich CONNECT_RSP_RESULT_PENDING ist, ist dieses Feld gültig. Einer der CONNECT_RSP_STATUS_XXX Werte wird verwendet.

Psm

Der Protocol/Service Multiplexer (PSM), den der Kanal zum Herstellen einer Verbindung mit dem Remotegerät verwendet. Bei Verwendung mit einer BRB_L2CA_OPEN_CHANNEL Anforderung wird dieses Element als Eingabefeld festgelegt. Bei Verwendung mit einer BRB_L2CA_OPEN_CHANNEL_RESPONSE Anforderung wird dieses Element als Ausgabefeld verwendet.

ChannelFlags

Flags, die die Anforderungen für den zu öffnenden Kanal angeben. Gültige Kennzeichenwerte sind in der folgenden Tabelle aufgeführt:

Flagge Beschreibung
CF_LINK_AUTHENTICATED Der Link muss authentifiziert werden.
CF_LINK_ENCRYPTED Der Link muss verschlüsselt werden. Durch Festlegen dieses Kennzeichens wird auch das CF_LINK_AUTHENTICATED Flag festgelegt.
CF_LINK_SUPPRESS_PIN Der Profiltreiber gibt seine Einstellung an, dass Benutzer nicht zur Eingabe einer PIN aufgefordert werden.

BtAddress

Die Bluetooth-Adresse des Geräts, für das die Verbindung vorgesehen ist.

ConfigOut

Die Unterstruktur, die Parametereinstellungen für ein BRB_L2CA_OPEN_CHANNEL an ein Remotegerät gesendeten BRB enthält.

ConfigOut.Flags

Flags, die die Anforderungen für den zu öffnenden Kanal angeben. Gültige Kennzeichenwerte sind in der folgenden Tabelle aufgeführt:

Flagge Beschreibung
CF_LINK_AUTHENTICATED Der Link muss authentifiziert werden.
CF_LINK_ENCRYPTED Der Link muss verschlüsselt werden. Durch Festlegen dieses Kennzeichens wird auch das CF_LINK_AUTHENTICATED Flag festgelegt.
CF_LINK_SUPPRESS_PIN Der Profiltreiber gibt seine Einstellung an, dass Benutzer nicht zur Eingabe einer PIN aufgefordert werden.

ConfigOut.Mtu

Der Bereich der Nachrichtenübertragungseinheiten (MTUs), der zum Aushandeln der Größe der ausgehenden Hälfte des Kanals verwendet wird.

ConfigOut.FlushTO

Der Bereich der möglichen Werte, die für das Flush-Timeout für die ausgehende Hälfte des Kanals verwendet werden sollen.

ConfigOut.Flow

Reserviert für die zukünftige Verwendung. Nicht verwenden.

ConfigOut.LinkTO

Timeout des Verknüpfungs-Managers.

ConfigOut.NumExtraOptions

Die Anzahl der Arrayelemente, die im ExtraOptions Member enthalten sind. Dieser Wert sollte für die meisten Clients null sein.

ConfigOut.ExtraOptions

Die Anzahl der Arrayelemente, die im ExtraOptions Member enthalten sind. Dieser Wert sollte für die meisten Clients null sein.

ConfigOut.LocalQos

Reserviert für die zukünftige Verwendung. Nicht verwenden.

ConfigOut.LocalQos.ServiceType

Reserviert für die zukünftige Verwendung. Nicht verwenden.

ConfigOut.LocalQos.Latency

Reserviert für die zukünftige Verwendung. Nicht verwenden.

ConfigIn

Die Unterstruktur, die Parametereinstellungen enthält, um eingehende BRB_L2CA_OPEN_CHANNEL_RESPONSE BRBs zu überprüfen, die von einem Remotegerät gesendet werden.

ConfigIn.Flags

Flags, die die Anforderungen für den zu öffnenden Kanal angeben. Gültige Kennzeichenwerte sind in der folgenden Tabelle aufgeführt:

Flagge Beschreibung
CF_LINK_AUTHENTICATED Der Link muss authentifiziert werden.
CF_LINK_ENCRYPTED Der Link muss verschlüsselt werden. Durch Festlegen dieses Kennzeichens wird auch das CF_LINK_AUTHENTICATED Flag festgelegt.
CF_LINK_SUPPRESS_PIN Der Profiltreiber gibt seine Einstellung an, dass Benutzer nicht zur Eingabe einer PIN aufgefordert werden.

ConfigIn.Mtu

Der Bereich der Nachrichtenübertragungseinheiten (MTUs), der zum Aushandeln der Größe der ausgehenden Hälfte des Kanals verwendet wird.

ConfigIn.FlushTO

Der Bereich der möglichen Werte, die für das Flush-Timeout für die ausgehende Hälfte des Kanals verwendet werden sollen.

CallbackFlags

Ein Flag, das angibt, welche Ereignisse eine Rückrufroutine generieren sollen, um den Profiltreiber darüber zu benachrichtigen, dass das Ereignis aufgetreten ist. Gültige Flagwerte sind in der folgenden Tabelle enthalten.

Flagge Beschreibung
CALLBACK_CONFIG_EXTRA_IN Bei Festlegung wird die Rückrufroutine aufgerufen, wenn die Konfigurationsanforderung für das Remotegerät zusätzliche Optionen enthält. Wenn nicht festgelegt, werden die zusätzlichen Konfigurationsoptionen als unbekannte Optionen abgelehnt. Dieses Kennzeichen wird mit BRB_L2CA_OPEN_CHANNEL_RESPONSE BRBs verwendet.
CALLBACK_CONFIG_EXTRA_OUT Bei Festlegung wird die Rückrufroutine aufgerufen, wenn das Remotegerät eine zusätzliche Konfigurationsoption von einer BRB_L2CA_OPEN_CHANNEL Anforderung ablehnt. Wenn sie nicht festgelegt ist und das Remotegerät die Konfigurationsanforderung aufgrund einer zusätzlichen Option ablehnt, wird die Verbindung geschlossen.
CALLBACK_CONFIG_QOS Bei Festlegung wird die Rückrufroutine aufgerufen, wenn ein Remotegerät eine Konfigurationsanforderung sendet, die einen QOS-Wert enthält. Wenn dieses Flag nicht festgelegt ist und das Remotegerät QOS-Parameter in einer Konfigurationsanforderung sendet oder die angeforderten QOS-Parameter des Profiltreibers ablehnt, wird die Verbindung getrennt.
CALLBACK_DISCONNECT Bei Festlegung wird die Rückrufroutine aufgerufen, wenn ein Remotegerät vom L2CAP-Kanal getrennt wird.
CALLBACK_RECV_PACKET Bei Festlegung wird die Rückrufroutine aufgerufen, wenn der Profiltreiber ein eingehendes L2CAP-Paket empfängt.

Callback

Die vom Profiltreiber implementierte L2CAP-Rückruffunktion, dass der Bluetooth-Treiberstapel aufgerufen werden soll, um den Profiltreiber über Änderungen an der L2CAP-Verbindung zu benachrichtigen.

CallbackContext

Der Kontext, der an die rückruffunktion übergeben werden soll, die im Callback Member angegeben ist. Der Profiltreiber definiert diesen Wert.

ReferenceObject

Ein Zeiger auf ein Objekt, das an ObReferenceObject übergeben werden soll, und ObDereferenceObject-, für die eine Referenzanzahl beibehalten werden soll.

OutResults

Eine CHANNEL_CONFIG_RESULTS Struktur, die Konfigurationsparameter für die ausgehende Anforderung enthält.

InResults

Eine CHANNEL_CONFIG_RESULTS Struktur, die Konfigurationsparameter für die eingehende Anforderung enthält.

IncomingQueueDepth

Gibt die Länge der eingehenden Warteschlange in Nachrichtenübertragungseinheiten (MTUs) an.

Antwort

Dieses Element wird als Eingabeparameter für eine BRB_L2CA_OPEN_CHANNEL_RESPONSE Anforderung und einen Ausgabeparameter für die BRB_L2CA_OPEN_CHANNEL-Anforderung verwendet.

Bei einer BRB_L2CA_OPEN_CHANNEL_RESPONSE Anforderung enthält dieses Mitglied ein Kennzeichen, das die Antwort des Profiltreibers auf das Remotegerät angibt. Gültige Flagwerte sind in der folgenden Tabelle enthalten.

Flagge Beschreibung
CONNECT_RSP_RESULT_NO_RESOURCES Der Profiltreiber lehnte die Verbindung aufgrund fehlender Ressourcen ab.
CONNECT_RSP_RESULT_PENDING Der Profiltreiber ist aktuell ausgelastet und kann die Verbindung nicht akzeptieren. Versuchen Sie es später erneut.
CONNECT_RSP_RESULT_PSM_NEG Der Profiltreiber hat die Verbindung verweigert, da die PSM nicht unterstützt wird.
CONNECT_RSP_RESULT_SECURITY_BLOCK Der Profiltreiber lehnte die Verbindung aus Sicherheitsgründen ab.
CONNECT_RSP_RESULT_SUCCESS Der Profiltreiber hat die Verbindung akzeptiert.

Für den BRB_L2CA_OPEN_CHANNEL BRB enthält dieses Mitglied die Antwort des Remotegeräts, mit dem der Profiltreiber versucht hat, eine Verbindung herzustellen. Gültige Flagwerte sind in der folgenden Tabelle enthalten.

Flagge Beschreibung
CONNECT_RSP_RESULT_NO_RESOURCES Das Remotegerät lehnte die Verbindung aufgrund fehlender Ressourcen ab.
CONNECT_RSP_RESULT_PSM_NEG Das Remotegerät hat die Verbindung verweigert.
CONNECT_RSP_RESULT_SECURITY_BLOCK Das Remotegerät lehnte die Verbindung aus Sicherheitsgründen ab.
CONNECT_RSP_RESULT_SUCCESS Das Remotegerät hat die Verbindung akzeptiert.

ResponseStatus

Wenn während eines Aufrufs des BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB das Response Member auf CONNECT_RSP_RESULT_PENDINGfestgelegt ist, ist dieses Element gültig und enthält einen der folgenden Werte:

  • CONNECT_RSP_STATUS_AUTHENTICATION_PENDING
  • CONNECT_RSP_STATUS_AUTHORIZATION_PENDING
  • CONNECT_RSP_STATUS_NO_INFORMATION

Bemerkungen

Um einen L2CAP-Kanal zu öffnen, sollten Profiltreiber erstellen und eine BRB_L2CA_OPEN_CHANNEL Anforderung senden.

Profiltreiber, die als Clients fungieren, geben eine Zieladresse, eine PSM und eine Vielzahl von Konfigurationsparametern an.

Wenn die BRB_L2CA_OPEN_CHANNEL Anforderung erfolgreich abgeschlossen wird, stehen in den OutResults- und InResults--Membern eine Vielzahl von Informationen zur neu erstellten Verbindung zur Verfügung. OutResults- gibt die Parameter für die ausgehende Hälfte des Kanals an, und InResults- gibt die Parameter für die eingehende Hälfte des Kanals an.

Einige der in dieser Struktur übergebenen Konfigurationsparameter, z. B. die Mtu Member, sind Bereiche, die für die Aushandlung mit dem Remotefunk verwendet werden. Kunden sollten so breit wie möglich sein, um die Chancen einer erfolgreichen Kanalverhandlung zu erhöhen. Die Angabe einer mindesten MTU-Größe, die größer als die grundlegende Bluetooth-Mindest-MTU-Größe ist, sollte nur dann erfolgen, wenn dies unbedingt erforderlich ist. Wenn die Aushandlung fehlschlägt, schlägt die Verbindung fehl.

Profiltreiber müssen den Speicher zuweisen, um das Array zu speichern, das im ExtraOptions Member gespeichert ist und diesen Speicher erst freigeben sollte, wenn die im Callback- Member definierte Rückruffunktion mit einer IndicationFreeExtraOptions- Benachrichtigung INDICATION_CODE Wert zurückgegeben wird, der in seinem Indication Parameter übergeben wurde.

Der IncomingQueueDepth- Member der _BRB_L2CA_OPEN_CHANNEL-Struktur gibt die maximale Anzahl von MTUs an, die der Bluetooth-Treiberstapel empfängt und in der Warteschlange auf der Verbindung steht, bevor es beginnt, sie zu verwerfen. Das Festlegen dieses Werts auf eine sehr kleine Zahl erhöht die Wahrscheinlichkeit eines Datenverlusts, während das Festlegen auf eine sehr große Zahl die Arbeitsspeicherauslastung erhöhen kann. Das Festlegen dieses Mitglieds auf 10 ist eine effektive Kompromittierung.

Um eine eingehende L2CAP-Verbindungsanforderung zu akzeptieren oder abzulehnen, die von einem Remotegerät initiiert wird, sollten Profiltreiber Erstellen und Senden einer BRB_L2CA_OPEN_CHANNEL_RESPONSE Anforderung.

Ein Profiltreiber sollte eine BRB_L2CA_OPEN_CHANNEL_RESPONSE Anforderung erstellen und senden, wenn der Bluetooth-Treiberstapel die L2CAP-Rückruffunktion des Profiltreibers aufruft und IndicationRemoteConnect- im Parameter Indication der Rückruffunktion übergibt.

Basierend auf dem Wert des Response Member dieser Struktur akzeptiert oder abgelehnt der Bluetooth-Treiberstapel die Verbindungsanforderung.

Der Profiltreiber gibt an, ob die Verbindung akzeptiert werden soll, indem ein entsprechender Wert im Response Member dieser Struktur gespeichert wird.

Beim Empfang der CONNECT_RSP_RESULT_PENDING Antwort sollte der Verbindungsclient den Verbindungstimer zurücksetzen und auf eine aktualisierte Verbindungsantwortnachricht warten. Profiltreiber, die den BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB aufrufen, bei dem das Response Mitglied auf CONNECT_RSP_RESULT_PENDING festgelegt ist, sollten umgehend einen zusätzlichen BRB_L2CA_OPEN_CHANNEL_RESPONSE BRB mit einem aktualisierten Verbindungswert ausgeben. Der aktualisierte Wert kann eine der statuscodes sein, die im Response Member beschrieben werden, einschließlich des erneuten Sendens eines CONNECT_RSP_RESULT_PENDING Werts.

Profiltreiber müssen den Speicher zuweisen, um das Array zu speichern, das im ExtraOptions Member gespeichert ist, und diesen Speicher erst freigeben, wenn die Rückruffunktion, die im Callback-Element definiert ist, mit einer IndicationFreeExtraOptions- Benachrichtigung zurückgibt, INDICATION_CODE Wert in seinem Indication Parameter übergeben wird.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Versionen:_Supported in Windows Vista und höher.
Header- bthddi.h (include Bthddi.h)

Siehe auch

BRB_HEADER

BRB_L2CA_OPEN_CHANNEL

BRB_L2CA_OPEN_CHANNEL_RESPONSE

BRB_L2CA_REGISTER_SERVER

CHANNEL_CONFIG_RESULTS

INDICATION_CODE

INDICATION_PARAMETERS

L2CAP Callback Function

L2CAP_CONFIG_OPTION

ObDereferenceObject

ObReferenceObject-