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值時,應用程式必須確認變更的內容。
回呼函式不得封鎖執行。 如果您預期回呼函式的執行需要一段時間,請將您在回呼函式中執行的工作卸載至個別執行緒,方法是將工作專案排入執行緒集區中的執行緒。 某些可讓回呼函式需要時間的工作類型包括執行檔案 I/O、等候事件,以及進行外部遠端程序呼叫。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows 8 [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows Server 2012 [僅限傳統型應用程式] |
標頭 |
|
DLL |
|