Partager via


Fonction EnumDeviceDrivers (psapi.h)

Récupère l’adresse de chargement de chaque pilote de périphérique dans le système.

Syntaxe

BOOL EnumDeviceDrivers(
  [out] LPVOID  *lpImageBase,
  [in]  DWORD   cb,
  [out] LPDWORD lpcbNeeded
);

Paramètres

[out] lpImageBase

Tableau qui reçoit la liste des adresses de chargement pour les pilotes de périphérique.

[in] cb

Taille du tableau lpImageBase , en octets. Si le tableau n’est pas assez grand pour stocker les adresses de chargement, le paramètre lpcbNeeded reçoit la taille requise du tableau.

[out] lpcbNeeded

Nombre d’octets retournés dans le tableau lpImageBase .

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

Pour déterminer le nombre de pilotes de périphérique énumérés par l’appel à EnumDeviceDrivers, divisez la valeur résultante dans le paramètre lpcbNeededed parsizeof(LPVOID).

À compter de Windows 7 et Windows Server 2008 R2, Psapi.h établit les numéros de version pour les fonctions PSAPI. Le numéro de version PSAPI affecte le nom utilisé pour appeler la fonction et la bibliothèque qu’un programme doit charger.

Si PSAPI_VERSION est égal ou supérieur à 2, cette fonction est définie comme K32EnumDeviceDrivers dans Psapi.h et exportée dans Kernel32.lib et Kernel32.dll. Si PSAPI_VERSION a la valeur 1, cette fonction est définie comme EnumDeviceDrivers dans Psapi.h et exportée dans Psapi.lib et Psapi.dll en tant que wrapper qui appelle K32EnumDeviceDrivers.

Les programmes qui doivent s’exécuter sur des versions antérieures de Windows, windows 7 et versions ultérieures doivent toujours appeler cette fonction EnumDeviceDrivers. Pour garantir la résolution correcte des symboles, ajoutez Psapi.lib à la macro TARGETLIBS et compilez le programme avec –DPSAPI_VERSION=1. Pour utiliser la liaison dynamique au moment de l’exécution, chargez Psapi.dll.

À compter de Windows 11 version 24H2, EnumDeviceDrivers nécessite SeDebugPrivilege pour retourner des valeurs ImageBase valides. La fonction réussit toujours si l’appelant n’a pas ce privilège activé, mais le tableau lpImageBase retourné contiendra des adresses qui sont toutes NULL.

Exemples

Pour obtenir un exemple, consultez Énumération de tous les pilotes de périphérique dans le système.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête psapi.h
Bibliothèque Kernel32.lib sur Windows 7 et Windows Server 2008 R2 ; Psapi.lib (si PSAPI_VERSION=1) sur Windows 7 et Windows Server 2008 R2 ; Psapi.lib sur Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP
DLL Kernel32.dll sur Windows 7 et Windows Server 2008 R2 ; Psapi.dll (si PSAPI_VERSION=1) sur Windows 7 et Windows Server 2008 R2 ; Psapi.dll sur Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP

Voir aussi

Informations sur le pilote de périphérique

GetDeviceDriverBaseName

GetDeviceDriverFileName

Fonctions PSAPI