IOCTL_BTH_HCI_VENDOR_COMMAND IOCTL (bthioctl.h)
La richiesta di IOCTL_BTH_HCI_VENDOR_COMMAND consente alle applicazioni Bluetooth di inviare comandi specifici del fornitore alle radio.
Codice principale
Buffer di input
Il membro AssociatedIrp.SystemBuffer punta a una struttura BTH_VENDOR_SPECIFIC_COMMAND . La struttura contiene un identificatore del produttore, una versione LMP (Link Management Protocol), un'intestazione di comando HCI e i dati dei comandi del fornitore associati che includono dati di modello facoltativi per corrispondere a un evento al comando.
Lunghezza del buffer di input
Lunghezza di una struttura BTH_VENDOR_SPECIFIC_COMMAND .
Buffer di output
Il membro AssociatedIrp.SystemBuffer punta a un buffer che contiene i dati dell'evento restituiti dalla radio. I dati sono disponibili nel membro EventInfo della struttura BTH_VENDOR_EVENT_INFO .
typedef struct _BTH_VENDOR_EVENT_INFO {
BTH_ADDR BthAddress;
ULONG EventSize;
UCHAR EventInfo[1];
} BTH_VENDOR_EVENT_INFO, *PBTH_VENDOR_EVENT_INFO;
Il membro EventSize fornisce le dimensioni dei dati dell'evento specifici del fornitore restituiti dalla radio.
Lunghezza del buffer di output
Lunghezza di una struttura di BTH_VENDOR_EVENT_INFO .
Blocco dello stato
Se la richiesta ha esito positivo, il membro Informazioni della struttura STATUS_BLOCK è impostato sulle dimensioni, in byte, del buffer che contiene la risposta al comando.
Il membro Status è impostato su uno dei valori della tabella seguente.
Valore di stato | Descrizione |
---|---|
STATUS_SUCCESS | L'IOCTL è stato completato correttamente. |
STATUS_BUFFER_TOO_SMALL | Il buffer di input passato era troppo piccolo. |
STATUS_INVALID_PARAMETER | Il buffer di input passato non è valido. |
STATUS_PRIVILEGE_NOT_HELD | Il chiamante non dispone dei privilegi necessari. |
STATUS_INSUFFICIENT_RESOURCES | Memoria insufficiente disponibile per elaborare la richiesta. |
Commenti
La richiesta di IOCTL_BTH_HCI_VENDOR_COMMAND fornisce un meccanismo che consente ai fornitori di creare comandi specifici per le loro radio Bluetooth.
I valori della versione del protocollo di gestione dei collegamenti e dell'ID produttore (LMP) presenti nell'oggetto BTH_VENDOR_SPECIFIC_COMMAND struttura aiutano a impedire l'invio di comandi specifici del fornitore alla radio sbagliata. La versione LMP consente ai fornitori di inviare comandi specifici del fornitore alle radio con una versione LMP corrispondente. Se la versione LMP è zero, tutte le radio del fornitore riceveranno il comando specifico del fornitore.
I modelli sono necessari se un comando specifico del fornitore non segue il controllo del flusso HCI standard e viene generato un evento specifico del fornitore in risposta al comando specifico del fornitore.
Se sono necessari modelli, il comando deve essere seguito da BTH_VENDOR_PATTERN strutture per i modelli presenti nell'evento. Questi modelli consentono allo stack di driver Bluetooth di corrispondere agli eventi specifici del fornitore con i comandi specifici del fornitore corrispondenti.
La struttura BTH_VENDOR_PATTERN specifica tali modelli che seguono i dati dei comandi specifici del fornitore specificati nel membro dati della struttura BTH_VENDOR_SPECIFIC_COMMAND. La dimensione totale massima di tutti i modelli che seguono il comando non deve essere maggiore di 255.
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);
L'evento generato a causa di questo comando viene copiato nel buffer di output (inclusa l'intestazione dell'evento).
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Versioni:_Available in Microsoft Windows Vista SP2 e versioni successive del sistema operativo. |
Intestazione | bthioctl.h (include Bthioctl.h) |
IRQL | <= PASSIVE_LEVEL |