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
ERROR_INVALID_HANDLE
Il chiamante ha passato NULL o un handle non valido nel parametro DeviceHandle ; FILE_FLAG_OVERLAPPED non è stato impostato nell'handle di file.
ERROR_NOT_ENOUGH_MEMORY
Indica che la memoria non è sufficiente per eseguire l'operazione.
ERROR_BAD_DEVICE
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

Vedi anche

WinUSB

Funzioni WinUSB

WinUSB_Free