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
ERROR_INVALID_HANDLE
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.
ERROR_NOT_ENOUGH_MEMORY
Indique que la mémoire est insuffisante pour effectuer l’opération.
ERROR_BAD_DEVICE
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

Voir aussi

WinUSB

Fonctions WinUSB

WinUSB_Free