Share via


EnumProcesses 함수(psapi.h)

시스템의 각 프로세스 개체에 대한 프로세스 식별자를 검색합니다.

구문

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

매개 변수

[out] lpidProcess

프로세스 식별자 목록을 수신하는 배열에 대한 포인터입니다.

[in] cb

pProcessIds 배열의 크기(바이트)입니다.

[out] lpcbNeeded

pProcessIds 배열에 반환된 바이트 수입니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

EnumProcesses를 호출할 때 얼마나 많은 프로세스가 있을지 예측하기 어렵기 때문에 큰 배열을 사용하는 것이 좋습니다.

열거된 프로세스 수를 확인하려면 lpcbNeeded 값을 sizeof(DWORD)로 나눕니다. 버퍼가 너무 작아서 모든 프로세스 식별자를 저장할 수 없다는 표시가 없습니다. 따라서 lpcbNeeded가cb와 같으면 더 큰 배열로 호출을 다시 시도하는 것이 좋습니다.

방금 얻은 식별자를 가진 프로세스에 대한 프로세스 핸들을 가져오려면 OpenProcess 함수를 호출합니다.

Windows 7 및 Windows Server 2008 R2부터 Psapi.h는 PSAPI 함수에 대한 버전 번호를 설정합니다. PSAPI 버전 번호는 함수를 호출하는 데 사용되는 이름과 프로그램이 로드해야 하는 라이브러리에 영향을 줍니다.

PSAPI_VERSION 2 이상인 경우 이 함수는 Psapi.h에서 K32EnumProcesses 로 정의되고 Kernel32.lib 및 Kernel32.dll 내보냅니다. PSAPI_VERSION 1이면 이 함수는 Psapi.h에서 EnumProcesses 로 정의되고 Psapi.lib에서 내보내고 K32EnumProcesses를 호출하는 래퍼로 Psapi.dll.

이전 버전의 Windows 및 Windows 7 이상 버전에서 실행해야 하는 프로그램은 항상 이 함수를 EnumProcesses로 호출해야 합니다. 기호를 올바르게 확인하려면 TARGETLIBS 매크로에 Psapi.lib를 추가하고 –DPSAPI_VERSION=1을 사용하여 프로그램을 컴파일합니다. 런타임 동적 연결을 사용하려면 Psapi.dll 로드합니다.

예제

예를 들어 모든 프로세스 열거 또는 프로세스에 대한 모든 모듈 열거를 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 psapi.h
라이브러리 Windows 7 및 Windows Server 2008 R2의 Kernel32.lib; Windows 7 및 Windows Server 2008 R2의 Psapi.lib(PSAPI_VERSION=1인 경우) Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP의 Psapi.lib
DLL Windows 7 및 Windows Server 2008 R2의 Kernel32.dll Windows 7 및 Windows Server 2008 R2의 Psapi.dll(PSAPI_VERSION=1인 경우) Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP의 Psapi.dll

추가 정보

CreateToolhelp32Snapshot

OpenProcess

PSAPI 함수

프로세스 정보