WinUsb_Initialize, fonction (winusb.h)
La fonction WinUsb_Initialize crée un handle WinUSB pour l’appareil spécifié par un handle de fichier.
Syntaxe
BOOL WinUsb_Initialize(
[in] HANDLE DeviceHandle,
[out] PWINUSB_INTERFACE_HANDLE InterfaceHandle
);
Paramètres
[in] DeviceHandle
Handle de l’appareil retourné par CreateFile . WinUSB utilise des E/S qui se chevauchent. Par conséquent, FILE_FLAG_OVERLAPPED doivent être spécifiés dans le paramètre dwFlagsAndAttributes de l’appel CreateFile pour que DeviceHandle ait les caractéristiques nécessaires au bon fonctionnement de WinUsb_Initialize .
[out] InterfaceHandle
Reçoit un handle opaque à la première interface (par défaut) de l’appareil. Ce handle est requis par d’autres routines WinUSB qui effectuent des opérations sur l’interface par défaut. Pour libérer le handle, appelez la fonction WinUSB_Free .
Valeur retournée
WinUsb_Initialize retourne TRUE si l’opération réussit. Sinon, cette routine retourne FALSE et l’appelant peut récupérer l’erreur journalisée en appelant GetLastError.
GetLastError peut retourner le code d’erreur suivant.
Code de retour | Description |
---|---|
|
L’appelant a passé null ou un handle non valide dans le paramètre DeviceHandle ; FILE_FLAG_OVERLAPPED n’a pas été défini dans le handle de fichier. |
|
Indique que la mémoire est insuffisante pour effectuer l’opération. |
|
Indique que le descripteur d’interface par défaut est introuvable pour l’appareil. |
Remarques
Lorsque WinUsb_Initialize est appelé, les paramètres de stratégie de l’interface sont réinitialisés aux valeurs par défaut.
L’appel WinUsb_Initialize interroge la pile USB sous-jacente pour rechercher différents descripteurs et alloue suffisamment de mémoire pour stocker les données de descripteur récupérées.
WinUsb_Initialize récupère d’abord le descripteur d’appareil, puis obtient le descripteur de configuration associé. À partir du descripteur de configuration, l’appel dérive les descripteurs d’interface associés et les stocke dans un tableau. Les interfaces dans le tableau sont identifiées par des index de base zéro. Une valeur d’index de 0 indique la première interface (l’interface par défaut), la valeur 1 indique la deuxième interface associée, et ainsi de suite. WinUsb_Initialize analyse le descripteur d’interface par défaut pour les descripteurs de point de terminaison et met en cache des informations telles que les canaux associés ou les données spécifiques à l’état. Le handle reçu dans le paramètre InterfaceHandle est un pointeur vers le bloc de mémoire alloué pour la première interface du tableau.
Si une application souhaite utiliser une autre interface sur l’appareil, elle doit appeler WinUsb_GetAssociatedInterface, spécifier l’index de l’interface et récupérer un handle dans le bloc de mémoire alloué pour l’interface spécifiée.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | winusb.h (inclure Winusb.h) |
Bibliothèque | Winusb.lib |
DLL | Winusb.dll |