다음을 통해 공유


EnumDependentServicesW 함수(winsvc.h)

지정된 서비스에 종속된 각 서비스의 이름과 상태 검색합니다. 즉, 종속 서비스를 실행하기 전에 지정된 서비스를 실행해야 합니다.

구문

BOOL EnumDependentServicesW(
  [in]            SC_HANDLE              hService,
  [in]            DWORD                  dwServiceState,
  [out, optional] LPENUM_SERVICE_STATUSW lpServices,
  [in]            DWORD                  cbBufSize,
  [out]           LPDWORD                pcbBytesNeeded,
  [out]           LPDWORD                lpServicesReturned
);

매개 변수

[in] hService

서비스에 대한 핸들입니다. 이 핸들은 OpenService 또는 CreateService 함수에서 반환되며 SERVICE_ENUMERATE_DEPENDENTS 액세스 권한이 있어야 합니다. 자세한 내용은 서비스 보안 및 액세스 권한을 참조하세요.

[in] dwServiceState

열거할 서비스의 상태입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
SERVICE_ACTIVE
0x00000001
SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDINGSERVICE_PAUSED 상태의 서비스를 열거합니다.
SERVICE_INACTIVE
0x00000002
SERVICE_STOPPED 상태에 있는 서비스를 열거합니다.
SERVICE_STATE_ALL
0x00000003
SERVICE_ACTIVESERVICE_INACTIVE 상태를 결합합니다.

[out, optional] lpServices

데이터베이스의 각 종속 서비스에 대한 이름 및 서비스 상태 정보를 수신하는 ENUM_SERVICE_STATUS 구조의 배열에 대한 포인터입니다. 버퍼는 구조체와 멤버가 가리키는 문자열을 포함할 수 있을 만큼 커야 합니다.

이 배열의 서비스 순서는 서비스의 시작 순서와 반대입니다. 즉, 배열의 첫 번째 서비스는 마지막으로 시작될 서비스이고 배열의 마지막 서비스는 먼저 시작되는 서비스입니다.

이 배열의 최대 크기는 64,000바이트입니다. 필요한 크기를 확인하려면 이 매개 변수에 NULL 을 지정하고 cbBufSize 매개 변수에 대해 0을 지정합니다. 함수가 실패하고 GetLastErrorERROR_MORE_DATA 반환합니다. pcbBytesNeeded 매개 변수는 필요한 크기를 받습니다.

[in] cbBufSize

lpServices 매개 변수가 가리키는 버퍼의 크기(바이트)입니다.

[out] pcbBytesNeeded

서비스 항목의 배열을 저장하는 데 필요한 바이트 수를 수신하는 변수에 대한 포인터입니다. 변수는 lpServices가 가리키는 버퍼가 너무 작아서 함수 오류 및 ERROR_MORE_DATA 오류로 표시되는 경우에만 이 값을 받습니다. 그렇지 않으면 pcbBytesNeeded의 콘텐츠가 정의되지 않습니다.

[out] lpServicesReturned

반환된 서비스 항목 수를 수신하는 변수에 대한 포인터입니다.

반환 값

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

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

서비스 제어 관리자가 다음 오류 코드를 설정할 수 있습니다. 다른 오류 코드는 서비스 제어 관리자가 호출하는 레지스트리 함수에 의해 설정될 수 있습니다.

반환 코드 설명
ERROR_ACCESS_DENIED
핸들에 SERVICE_ENUMERATE_DEPENDENTS 액세스 권한이 없습니다.
ERROR_INVALID_HANDLE
지정한 핸들이 잘못되었습니다.
ERROR_INVALID_PARAMETER
지정된 매개 변수가 잘못되었습니다.
ERROR_MORE_DATA
lpServices가 가리키는 버퍼가 충분히 크지 않습니다. 함수는 lpServicesRe 가 가리키는 변수를 버퍼에 저장된 실제 서비스 항목 수로 설정합니다. 함수는 pcbBytesNeeded가 가리키는 변수를 모든 서비스 항목을 저장하는 데 필요한 바이트 수로 설정합니다.

설명

반환된 서비스 항목은 그룹 순서를 고려하여 시작 순서의 역순으로 정렬됩니다. 종속 서비스를 중지해야 하는 경우 lpServices 버퍼에 기록된 항목의 순서를 사용하여 종속 서비스를 적절한 순서로 중지할 수 있습니다.

예제

예를 들어 서비스 중지를 참조하세요.

참고

winsvc.h 헤더는 ENumDependentServices를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winsvc.h(Windows.h 포함)
라이브러리 Advapi32.lib
DLL Advapi32.dll

추가 정보

CreateService

ENUM_SERVICE_STATUS

EnumServicesStatusEx

OpenService

서비스 함수

서비스 설치, 제거 및 열거형