EnumServicesStatusA 함수(winsvc.h)
지정된 서비스 제어 관리자 데이터베이스에서 서비스를 열거합니다. 각 서비스의 이름과 상태가 제공됩니다.
이 함수는 EnumServicesStatusEx 함수로 대체되었습니다. EnumServicesStatus 반환할
통사론
BOOL EnumServicesStatusA(
[in] SC_HANDLE hSCManager,
[in] DWORD dwServiceType,
[in] DWORD dwServiceState,
[out, optional] LPENUM_SERVICE_STATUSA lpServices,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded,
[out] LPDWORD lpServicesReturned,
[in, out, optional] LPDWORD lpResumeHandle
);
매개 변수
[in] hSCManager
서비스 제어 관리자 데이터베이스에 대한 핸들입니다. 이 핸들은 OpenSCManager 함수에서 반환되며 SC_MANAGER_ENUMERATE_SERVICE 액세스 권한이 있어야 합니다. 자세한 내용은 Service Security and Access Rights참조하세요.
[in] dwServiceType
열거할 서비스 유형입니다. 이 매개 변수는 다음 값 중 하나 이상일 수 있습니다.
값 | 의미 |
---|---|
|
형식 SERVICE_KERNEL_DRIVER 및 SERVICE_FILE_SYSTEM_DRIVER 서비스입니다. |
|
파일 시스템 드라이버 서비스. |
|
드라이버 서비스. |
|
SERVICE_WIN32_OWN_PROCESS 및 SERVICE_WIN32_SHARE_PROCESS 유형의 서비스입니다. |
|
자체 프로세스에서 실행되는 서비스입니다. |
|
하나 이상의 다른 서비스와 프로세스를 공유하는 서비스입니다. 자세한 내용은 서비스 프로그램참조하세요. |
[in] dwServiceState
열거할 서비스의 상태입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.
[out, optional] lpServices
데이터베이스의 각 서비스에 대한 이름 및 서비스 상태 정보를 수신하는 ENUM_SERVICE_STATUS 구조의 배열을 포함하는 버퍼에 대한 포인터입니다. 버퍼는 구조체와 멤버가 가리키는 문자열을 포함할 수 있을 만큼 커야 합니다.
이 배열의 최대 크기는 256K바이트입니다. 필요한 크기를 확인하려면 이 매개 변수에 대해 NULL을 지정하고 cbBufSize 매개 변수에 대해 0을 지정합니다. 함수가 실패하고 GetLastError
Windows Server 2003 및 Windows XP: 이 배열의 최대 크기는 64K바이트입니다. 이 제한은 SP1이 있는 Windows Server 2003 및 WINDOWS XP SP2를 사용하여 증가했습니다.
[in] cbBufSize
lpServices 매개 변수가 가리키는 버퍼의 크기(바이트)입니다.
[out] pcbBytesNeeded
버퍼가 너무 작은 경우 나머지 서비스 항목을 반환하는 데 필요한 바이트 수를 받는 변수에 대한 포인터입니다.
[out] lpServicesReturned
반환되는 서비스 항목 수를 받는 변수에 대한 포인터입니다.
[in, out, optional] lpResumeHandle
입력 시 열거형의 시작점을 지정하는 변수에 대한 포인터입니다. 이 함수가 처음 호출되면 이 값을 0으로 설정해야 합니다. 출력에서 함수가 성공하면 이 값은 0입니다. 그러나 함수가 0을 반환하고 GetLastError 함수가 ERROR_MORE_DATA 반환하는 경우 이 값은 함수를 호출하여 추가 데이터를 검색할 때 읽을 다음 서비스 항목을 나타내는 데 사용됩니다.
반환 값
함수가 성공하면 반환 값은 0이 아닌 값입니다.
함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 얻으려면 GetLastError호출합니다.
서비스 제어 관리자에서 다음 오류 코드를 설정할 수 있습니다. 다른 오류 코드는 서비스 제어 관리자가 호출하는 레지스트리 함수에서 설정할 수 있습니다.
반환 코드 | 묘사 |
---|---|
|
핸들에 SC_MANAGER_ENUMERATE_SERVICE 액세스 권한이 없습니다. |
|
지정한 핸들이 잘못되었습니다. |
|
지정한 매개 변수가 잘못되었습니다. |
|
lpServices 버퍼에 맞는 것보다 더 많은 서비스 항목이 있습니다. lpServices 기록된 실제 서비스 항목 수는 lpServicesRe가 매개 변수로 반환됩니다. 나머지 항목을 가져오는 데 필요한 바이트 수는 pcbBytesNeeded 매개 변수에 반환됩니다. 나머지 서비스는 읽을 다음 서비스를 나타내는 lpResumeHandle 매개 변수를 사용하여 EnumServicesStatus 대한 추가 호출로 열거할 수 있습니다. |
발언
메모
winsvc.h 헤더는 ENumServicesStatus를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winsvc.h(Windows.h 포함) |
라이브러리 | Advapi32.lib |
DLL | Advapi32.dll |
참고 항목
OpenSCManager