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 |