Compartir a través de


Función EnumDeviceDrivers (psapi.h)

Recupera la dirección de carga de cada controlador de dispositivo del sistema.

Sintaxis

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

Parámetros

[out] lpImageBase

Matriz que recibe la lista de direcciones de carga de los controladores de dispositivo.

[in] cb

Tamaño de la matriz lpImageBase , en bytes. Si la matriz no es lo suficientemente grande como para almacenar las direcciones de carga, el parámetro lpcbNeeded recibe el tamaño necesario de la matriz.

[out] lpcbNeeded

Número de bytes devueltos en la matriz lpImageBase .

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Para determinar cuántos controladores de dispositivo se enumeraron mediante la llamada a EnumDeviceDrivers, divida el valor resultante en el parámetro lpcbNeeded por sizeof(LPVOID).

A partir de Windows 7 y Windows Server 2008 R2, Psapi.h establece números de versión para las funciones psapi. El número de versión de PSAPI afecta al nombre usado para llamar a la función y la biblioteca que debe cargar un programa.

Si PSAPI_VERSION es 2 o superior, esta función se define como K32EnumDeviceDrivers en Psapi.h y exportada en Kernel32.lib y Kernel32.dll. Si PSAPI_VERSION es 1, esta función se define como EnumDeviceDrivers en Psapi.h y exportada en Psapi.lib y Psapi.dll como contenedor que llama a K32EnumDeviceDrivers.

Los programas que deben ejecutarse en versiones anteriores de Windows, así como Windows 7 y versiones posteriores siempre deben llamar a esta función como EnumDeviceDrivers. Para garantizar la resolución correcta de símbolos, agregue Psapi.lib a la macro TARGETLIBS y compile el programa con –DPSAPI_VERSION=1. Para usar la vinculación dinámica en tiempo de ejecución, cargue Psapi.dll.

A partir de Windows 11 versión 24H2, EnumDeviceDrivers requerirá SeDebugPrivilege para devolver valores válidos de ImageBase. La función seguirá funcionando correctamente si el autor de la llamada no tiene este privilegio habilitado, pero la matriz lpImageBase devuelta contendrá direcciones que son todas NULL.

Ejemplos

Para obtener un ejemplo, vea Enumerar todos los controladores de dispositivo en el sistema.

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado psapi.h
Library Kernel32.lib en Windows 7 y Windows Server 2008 R2; Psapi.lib (si PSAPI_VERSION=1) en Windows 7 y Windows Server 2008 R2; Psapi.lib en Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP
Archivo DLL Kernel32.dll en Windows 7 y Windows Server 2008 R2; Psapi.dll (si PSAPI_VERSION=1) en Windows 7 y Windows Server 2008 R2; Psapi.dll en Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP

Consulte también

Información del controlador de dispositivo

GetDeviceDriverBaseName

GetDeviceDriverFileName

Funciones de PSAPI