Funzione SubscribeServiceChangeNotifications
Sottoscrive le notifiche di modifica dello stato del servizio usando una funzione di callback.
Sintassi
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
);
Parametri
-
hService [in]
-
Handle per il servizio o un handle per il gestore del controllo del servizio per monitorare le modifiche.
Gli handle ai servizi vengono restituiti dalla funzione OpenService e CreateService e devono avere il diritto di accesso SERVICE_QUERY_STATUS. Gli handle al gestore del controllo del servizio vengono restituiti dalla funzione OpenSCManager e devono avere il diritto di accesso SC_MANAGER_ENUMERATE_SERVICE .
-
eEventType [in]
-
Specifica il tipo di modifiche di stato che devono essere segnalate. Questo parametro è impostato su uno dei valori specificati in SC_EVENT_TYPE. Il comportamento per questa funzione è diverso a seconda del tipo di evento come indicato di seguito.
Valore Significato - SC_EVENT_DATABASE_CHANGE
- 0
È stato aggiunto o eliminato un servizio. Il parametro hService deve essere un handle per SCM. - SC_EVENT_PROPERTY_CHANGE
- 1
Sono state aggiornate una o più proprietà del servizio. Il parametro hService deve essere un handle per il servizio. - SC_EVENT_STATUS_CHANGE
- 2
Lo stato di un servizio è cambiato. Il parametro hService deve essere un handle per il servizio. -
pCallback [in]
-
Specifica la funzione di callback. Il callback deve essere definito come avere un tipo di SC_NOTIFICATION_CALLBACK. Per altre informazioni, vedere la sezione Osservazioni.
-
pCallbackContext [in, facoltativo]
-
Puntatore che rappresenta il contesto per questo callback di notifica.
-
pSubscription [out]
-
Restituisce un puntatore alla sottoscrizione risultante dalla registrazione di callback di notifica. Il chiamante è responsabile della chiamata a UnsubscribeServiceChangeNotifications per interrompere la ricezione delle notifiche.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è ERROR_SUCCESS.
Se la funzione ha esito negativo, il valore restituito è uno dei codici di errore di sistema.
Commenti
La funzione di callback viene dichiarata come segue:
typedef VOID CALLBACK SC_NOTIFICATION_CALLBACK(
_In_ DWORD dwNotify,
_In_ PVOID pCallbackContext
);
typedef SC_NOTIFICATION_CALLBACK* PSC_NOTIFICATION_CALLBACK;
La funzione di callback riceve un puntatore al contesto fornito dal chiamante. Il callback viene richiamato come risultato dell'evento di modifica dello stato del servizio. Quando viene richiamato il callback, viene fornito con una maschera bit di valori SERVICE_NOTIFY_XXX che indicano il tipo di modifica dello stato del servizio. Quando il callback viene fornito con zero anziché un valore SERVICE_NOTIFY_XXX valido, l'applicazione deve verificare cosa è stato modificato.
La funzione di callback non deve bloccare l'esecuzione. Se si prevede che l'esecuzione della funzione di callback richiede tempo, scaricare il lavoro eseguito nella funzione di callback in un thread separato accodando un elemento di lavoro a un thread in un pool di thread. Alcuni tipi di lavoro che possono richiedere tempo alla funzione di callback includono l'esecuzione di operazioni di I/O del file, in attesa di un evento e l'esecuzione di chiamate di routine remote esterne.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows 8 [solo app desktop] |
Server minimo supportato |
Windows Server 2012 [solo app desktop] |
Intestazione |
|
DLL |
|