funzione WinUsb_Initialize (winusb.h)
La funzione WinUsb_Initialize crea un handle WinUSB per il dispositivo specificato da un handle di file.
Sintassi
BOOL WinUsb_Initialize(
[in] HANDLE DeviceHandle,
[out] PWINUSB_INTERFACE_HANDLE InterfaceHandle
);
Parametri
[in] DeviceHandle
Handle per il dispositivo restituito da CreateFile . WinUSB usa operazioni di I/O sovrapposte, quindi FILE_FLAG_OVERLAPPED deve essere specificato nel parametro dwFlagsAndAttributes della chiamata CreateFile per DeviceHandle in modo che le caratteristiche necessarie per WinUsb_Initialize funzionino correttamente.
[out] InterfaceHandle
Riceve un handle opaco per la prima interfaccia (predefinita) nel dispositivo. Questo handle è richiesto da altre routine WinUSB che eseguono operazioni sull'interfaccia predefinita. Per rilasciare l'handle, chiamare la funzione WinUSB_Free .
Valore restituito
WinUsb_Initialize restituisceTRUE se l'operazione ha esito positivo. In caso contrario, questa routine restituisce FALSE e il chiamante può recuperare l'errore registrato chiamando GetLastError.
GetLastError può restituire il codice di errore seguente.
Codice restituito | Descrizione |
---|---|
|
Il chiamante ha passato NULL o un handle non valido nel parametro DeviceHandle ; FILE_FLAG_OVERLAPPED non è stato impostato nell'handle di file. |
|
Indica che la memoria non è sufficiente per eseguire l'operazione. |
|
Indica che non è stato possibile trovare il descrittore di interfaccia predefinito per il dispositivo. |
Commenti
Quando viene chiamato WinUsb_Initialize , le impostazioni dei criteri dell'interfaccia vengono reimpostate sui valori predefiniti.
La chiamata WinUsb_Initialize esegue una query sullo stack USB sottostante per vari descrittori e alloca memoria sufficiente per archiviare i dati del descrittore recuperati.
WinUsb_Initialize recupera prima il descrittore del dispositivo e quindi ottiene il descrittore di configurazione associato. Dal descrittore di configurazione, la chiamata deriva i descrittori di interfaccia associati e li archivia in una matrice. Le interfacce nella matrice sono identificate da indici in base zero. Un valore di indice pari a 0 indica la prima interfaccia (interfaccia predefinita), il valore 1 indica la seconda interfaccia associata e così via. WinUsb_Initialize analizza il descrittore di interfaccia predefinito per i descrittori di endpoint e memorizza nella cache informazioni quali le pipe associate o i dati specifici dello stato. L'handle ricevuto nel parametro InterfaceHandle è un puntatore al blocco di memoria allocato per la prima interfaccia nella matrice.
Se un'applicazione vuole usare un'altra interfaccia nel dispositivo, deve chiamare WinUsb_GetAssociatedInterface, specificare l'indice dell'interfaccia e recuperare un handle per il blocco di memoria allocato per l'interfaccia specificata.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | winusb.h (include Winusb.h) |
Libreria | Winusb.lib |
DLL | Winusb.dll |