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(서비스 제어 관리자)에 대한 핸들입니다.
서비스에 대한 핸들은 OpenService 및 CreateService 함수에서 반환되며 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 [데스크톱 앱만 해당] |
헤더 |
|
DLL |
|