Condividi tramite


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
Winsvcp.h
DLL
SecHost.dll

Vedi anche

CreateService

Openservice

OpenSCManager

UnsubscribeServiceChangeNotifications

QueryServiceDynamicInformation