Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die IOCTL_BTH_HCI_VENDOR_COMMAND-Anforderung ermöglicht Bluetooth-Anwendungen das Senden von anbieterspezifischen Befehlen an Funkgeräte.
Hauptcode
Eingabepuffer
Der AssociatedIrp.SystemBuffer Member verweist auf eine BTH_VENDOR_SPECIFIC_COMMAND Struktur. Die Struktur enthält einen Herstellerbezeichner, eine LMP-Version (Link Management Protocol), einen HCI-Befehlsheader und die zugehörigen Befehlsdaten des Anbieters, die optionale Musterdaten enthalten, die einem Ereignis mit dem Befehl entsprechen.
Eingabepufferlänge
Die Länge einer BTH_VENDOR_SPECIFIC_COMMAND Struktur.
Ausgabepuffer
Der AssociatedIrp.SystemBuffer Member verweist auf einen Puffer, der die vom Funk zurückgegebenen Ereignisdaten enthält. Die Daten sind im EventInfo Member der BTH_VENDOR_EVENT_INFO Struktur verfügbar.
typedef struct _BTH_VENDOR_EVENT_INFO {
BTH_ADDR BthAddress;
ULONG EventSize;
UCHAR EventInfo[1];
} BTH_VENDOR_EVENT_INFO, *PBTH_VENDOR_EVENT_INFO;
Das EventSize Member stellt die Größe der anbieterspezifischen Ereignisdaten bereit, die vom Radio zurückgegeben werden.
Länge des Ausgabepuffers
Die Länge einer BTH_VENDOR_EVENT_INFO Struktur.
Statusblock
Wenn die Anforderung erfolgreich ist, wird das Information Member der STATUS_BLOCK Struktur auf die Größe des Puffers festgelegt, der die Befehlsantwort enthält.
Der Status Member wird auf einen der Werte in der folgenden Tabelle festgelegt.
| Statuswert | Beschreibung |
|---|---|
| STATUS_SUCCESS | Die IOCTL wurde erfolgreich abgeschlossen. |
| STATUS_BUFFER_TOO_SMALL | Der übergebene Eingabepuffer war zu klein. |
| STATUS_INVALID_PARAMETER | Der übergebene Eingabepuffer war ungültig. |
| STATUS_PRIVILEGE_NOT_HELD | Der Aufrufer verfügt nicht über die erforderlichen Berechtigungen. |
| STATUS_INSUFFICIENT_RESOURCES | Für die Verarbeitung der Anforderung ist nicht genügend Arbeitsspeicher verfügbar. |
Bemerkungen
Die IOCTL_BTH_HCI_VENDOR_COMMAND-Anforderung stellt einen Mechanismus bereit, mit dem Anbieter Befehle erstellen können, die für ihre Bluetooth-Funkgeräte spezifisch sind.
Die Werte der Hersteller-ID und des LMP-Versionsprotokolls (Link Management Protocol), die sich im BTH_VENDOR_SPECIFIC_COMMAND Struktur hilft, das Senden von anbieterspezifischen Befehlen an das falsche Radio zu verhindern. Die LMP-Version ermöglicht es den Anbietern, anbieterspezifische Befehle an Funkgeräte zu senden, die über eine entsprechende LMP-Version verfügen. Wenn die LMP-Version null ist, erhalten alle Funkgeräte dieses Anbieters den anbieterspezifischen Befehl.
Muster sind erforderlich, wenn ein anbieterspezifischer Befehl nicht der standardmäßigen HCI-Flusssteuerung folgt und ein herstellerspezifisches Ereignis als Reaktion auf den anbieterspezifischen Befehl generiert wird.
Wenn Muster erforderlich sind, sollte auf den Befehl BTH_VENDOR_PATTERN Strukturen für Muster folgen, die im Ereignis vorhanden sind. Diese Muster ermöglichen es dem Bluetooth-Treiberstapel, anbieterspezifische Ereignisse mit den entsprechenden anbieterspezifischen Befehlen abzugleichen.
Die BTH_VENDOR_PATTERN Struktur gibt solche Muster an, die den anbieterspezifischen Befehlsdaten folgen, die im Data Member der BTH_VENDOR_SPECIFIC_COMMAND Struktur angegeben sind. Die maximale Gesamtgröße aller Muster, die dem Befehl folgen, sollte nicht größer als 255 sein.
HANDLE procToken;
LUID luid;
TOKEN_PRIVILEGES tp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &procToken);
LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, &luid);
Tp.PrivilegeCount = 1;
Tp.privileges[0].Luid = luid;
Tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(procToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES) NULL, (PDWORD)NULL);
Das Ereignis, das aufgrund dieses Befehls generiert wird, wird in den Ausgabepuffer kopiert (einschließlich des Ereignisheaders).
Anforderungen
| Anforderung | Wert |
|---|---|
| mindestens unterstützte Client- | Versionen:_Available unter Microsoft Windows Vista SP2 und höheren Betriebssystemversionen. |
| Header- | bthioctl.h (include Bthioctl.h) |
| IRQL- | <= PASSIVE_LEVEL |