Функция EnumDeviceDrivers (psapi.h)
Извлекает адрес загрузки для каждого драйвера устройства в системе.
Синтаксис
BOOL EnumDeviceDrivers(
[out] LPVOID *lpImageBase,
[in] DWORD cb,
[out] LPDWORD lpcbNeeded
);
Параметры
[out] lpImageBase
Массив, получающий список адресов загрузки для драйверов устройств.
[in] cb
Размер массива lpImageBase в байтах. Если массив недостаточно велик для хранения адресов нагрузки, параметр lpcbNeeded получает требуемый размер массива.
[out] lpcbNeeded
Число байтов, возвращенных в массиве lpImageBase .
Возвращаемое значение
Если функция выполняется успешно, возвращается ненулевое значение.
Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Чтобы определить, сколько драйверов устройств было перечислено вызовом EnumDeviceDrivers, разделите полученное значение в параметре lpcbNeeded наsizeof(LPVOID)
.
Начиная с Windows 7 и Windows Server 2008 R2, Psapi.h устанавливает номера версий для функций PSAPI. Номер версии PSAPI влияет на имя, используемое для вызова функции, и библиотеку, которую должна загрузить программа.
Если PSAPI_VERSION имеет значение 2 или больше, эта функция определяется как K32EnumDeviceDrivers в Psapi.h и экспортируется в Kernel32.lib и Kernel32.dll. Если PSAPI_VERSION равно 1, эта функция определяется как EnumDeviceDrivers в Psapi.h и экспортируется в Psapi.lib и Psapi.dll в качестве оболочки, которая вызывает K32EnumDeviceDrivers.
Программы, которые должны работать в более ранних версиях Windows, а также Windows 7 и более поздних версиях, всегда должны вызывать эту функцию как EnumDeviceDrivers. Чтобы обеспечить правильное разрешение символов, добавьте Psapi.lib в макрос TARGETLIBS и скомпилируйте программу с параметром –DPSAPI_VERSION=1. Чтобы использовать динамическое связывание во время выполнения, загрузите Psapi.dll.
Начиная с Windows 11 версии 24H2, EnumDeviceDrivers потребует, чтобы SeDebugPrivilege возвращал допустимые значения ImageBase. Функция по-прежнему будет выполнена успешно, если у вызывающего объекта не включена эта привилегия, но возвращенный массив lpImageBase будет содержать адреса со значением NULL.
Примеры
Пример см. в разделе Перечисление всех драйверов устройств в системе.
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | psapi.h |
Библиотека | Kernel32.lib в Windows 7 и Windows Server 2008 R2; Psapi.lib (если PSAPI_VERSION=1) в Windows 7 и Windows Server 2008 R2; Psapi.lib в Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP |
DLL | Kernel32.dll в Windows 7 и Windows Server 2008 R2; Psapi.dll (если PSAPI_VERSION=1) в Windows 7 и Windows Server 2008 R2; Psapi.dll в Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP |