Поделиться через


Функция EnumProcesses (psapi.h)

Извлекает идентификатор процесса для каждого объекта процесса в системе.

Синтаксис

BOOL EnumProcesses(
  [out] DWORD   *lpidProcess,
  [in]  DWORD   cb,
  [out] LPDWORD lpcbNeeded
);

Параметры

[out] lpidProcess

Указатель на массив, получающий список идентификаторов процесса.

[in] cb

Размер массива pProcessIds в байтах .

[out] lpcbNeeded

Число байтов, возвращаемых в массиве pProcessIds .

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Рекомендуется использовать большой массив, так как трудно предсказать количество процессов во время вызова EnumProcesses.

Чтобы определить, сколько процессов было перечислено, разделите значение lpcbNeeded на sizeof(DWORD). Нет никаких указаний на то, что буфер слишком мал для хранения всех идентификаторов процессов. Поэтому, если значение lpcbNeeded равно cb, попробуйте повторить вызов с большим массивом.

Чтобы получить дескрипторы процессов для процессов, идентификаторы которых вы только что получили, вызовите функцию OpenProcess .

Начиная с Windows 7 и Windows Server 2008 R2, Psapi.h устанавливает номера версий для функций PSAPI. Номер версии PSAPI влияет на имя, используемое для вызова функции, и библиотеку, которую должна загрузить программа.

Если PSAPI_VERSION имеет значение 2 или больше, эта функция определяется как K32EnumProcesses в Psapi.h и экспортируется в Kernel32.lib и Kernel32.dll. Если PSAPI_VERSION равно 1, эта функция определяется как EnumProcesses в Psapi.h и экспортируется в Psapi.lib и Psapi.dll в виде оболочки, которая вызывает K32EnumProcesses.

Программы, которые должны работать в более ранних версиях Windows, а также Windows 7 и более поздних версиях, всегда должны вызывать эту функцию как EnumProcesses. Чтобы обеспечить правильное разрешение символов, добавьте Psapi.lib в макрос TARGETLIBS и скомпилируйте программу с параметром –DPSAPI_VERSION=1. Чтобы использовать динамическое связывание во время выполнения, загрузите Psapi.dll.

Примеры

Пример см. в разделах Перечисление всех процессов или Перечисление всех модулей для процесса.

Требования

   
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа 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

См. также раздел

CreateToolhelp32Snapshot

OpenProcess

Функции PSAPI

Сведения о процессе