다음을 통해 공유


SubscribeServiceChangeNotifications 함수

콜백 함수를 사용하여 서비스 상태 변경 알림을 구독합니다.

구문

DWORD WINAPI SubscribeServiceChangeNotifications(
  _In_     SC_HANDLE                     hService,
  _In_     SC_EVENT_TYPE                 eEventType,
  _In_     PSC_NOTIFICATION_CALLBACK     pCallback,
  _In_opt_ PVOID                         pCallbackContext,
  _Out_    PSC_NOTIFICATION_REGISTRATION *pSubscription
);

매개 변수

hService [in]

서비스에 대한 핸들 또는 변경 내용을 모니터링할 SCM(서비스 제어 관리자)에 대한 핸들입니다.

서비스에 대한 핸들은 OpenServiceCreateService 함수에서 반환되며 SERVICE_QUERY_STATUS 액세스 권한이 있어야 합니다. 서비스 제어 관리자에 대한 핸들은 OpenSCManager 함수에 의해 반환되며 SC_MANAGER_ENUMERATE_SERVICE 액세스 권한이 있어야 합니다.

eEventType [in]

보고해야 하는 상태 변경의 유형을 지정합니다. 이 매개 변수는 SC_EVENT_TYPE 지정된 값 중 하나로 설정됩니다. 이 함수의 동작은 다음과 같이 이벤트 유형에 따라 다릅니다.

의미
SC_EVENT_DATABASE_CHANGE
0
서비스가 추가되거나 삭제되었습니다. hService 매개 변수는 SCM에 대한 핸들이어야 합니다.
SC_EVENT_PROPERTY_CHANGE
1
하나 이상의 서비스 속성이 업데이트되었습니다. hService 매개 변수는 서비스에 대한 핸들이어야 합니다.
SC_EVENT_STATUS_CHANGE
2
서비스의 상태 변경되었습니다. hService 매개 변수는 서비스에 대한 핸들이어야 합니다.

pCallback [in]

콜백 함수를 지정합니다. 콜백은 SC_NOTIFICATION_CALLBACK 형식을 갖는 것으로 정의되어야 합니다. 자세한 내용은 설명 부분을 참조하세요.

pCallbackContext [in, optional]

이 알림 콜백의 컨텍스트를 나타내는 포인터입니다.

pSubscription [out]

알림 콜백 등록에서 생성된 구독에 대한 포인터를 반환합니다. 호출자는 UnsubscribeServiceChangeNotifications 를 호출하여 알림 수신을 중지합니다.

반환 값

함수가 성공하면 반환 값이 ERROR_SUCCESS.

함수가 실패하면 반환 값은 시스템 오류 코드 중 하나입니다.

설명

콜백 함수는 다음과 같이 선언됩니다.

typedef VOID CALLBACK SC_NOTIFICATION_CALLBACK(
    _In_    DWORD                   dwNotify,
    _In_    PVOID                   pCallbackContext
);
typedef SC_NOTIFICATION_CALLBACK* PSC_NOTIFICATION_CALLBACK;

콜백 함수는 호출자가 제공하는 컨텍스트에 대한 포인터를 받습니다. 콜백은 서비스 상태 변경 이벤트의 결과로 호출됩니다. 콜백이 호출되면 서비스 유형이 변경될 상태 나타내는 SERVICE_NOTIFY_XXX 값의 비트 마스크가 제공됩니다. 콜백이 유효한 SERVICE_NOTIFY_XXX 값 대신 0으로 제공되면 애플리케이션은 변경된 내용을 확인해야 합니다.

콜백 함수는 실행을 차단해서는 안됩니다. 콜백 함수를 실행하는 데 시간이 걸릴 것으로 예상되는 경우 작업 항목을 스레드 풀의 스레드에 큐에 대기하여 콜백 함수에서 수행하는 작업을 별도의 스레드로 오프로드합니다. 콜백 함수에 시간이 걸릴 수 있는 작업 유형으로는 파일 I/O 수행, 이벤트 대기, 외부 원격 프로시저 호출 등이 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows 8 [데스크톱 앱만 해당]
지원되는 최소 서버
Windows Server 2012 [데스크톱 앱만 해당]
헤더
Winsvcp.h
DLL
SecHost.dll

추가 정보

CreateService

OpenService

OpenSCManager

UnsubscribeServiceChangeNotifications

QueryServiceDynamicInformation