_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_PENDING
festgelegt 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) |