Partager via


SubscribeServiceChangeNotifications, fonction

S’abonne aux notifications de modification status de service à l’aide d’une fonction de rappel.

Syntaxe

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
);

Paramètres

hService [in]

Un handle pour le service ou un handle pour le gestionnaire de contrôle de service (SCM) pour surveiller les modifications.

Les descripteurs aux services sont retournés par les fonctions OpenService et CreateService et doivent avoir le droit d’accès SERVICE_QUERY_STATUS . Les descripteurs au gestionnaire de contrôle de service sont retournés par la fonction OpenSCManager et doivent avoir le droit d’accès SC_MANAGER_ENUMERATE_SERVICE .

eEventType [in]

Spécifie le type de modifications status qui doivent être signalées. Ce paramètre est défini sur l’une des valeurs spécifiées dans SC_EVENT_TYPE. Le comportement de cette fonction est différent selon le type d’événement, comme suit.

Valeur Signification
SC_EVENT_DATABASE_CHANGE
0
Un service a été ajouté ou supprimé. Le paramètre hService doit être un handle pour le SCM.
SC_EVENT_PROPERTY_CHANGE
1
Une ou plusieurs propriétés de service ont été mises à jour. Le paramètre hService doit être un handle pour le service.
SC_EVENT_STATUS_CHANGE
2
La status d’un service a changé. Le paramètre hService doit être un handle pour le service.

pCallback [in]

Spécifie la fonction de rappel. Le rappel doit être défini comme ayant un type de SC_NOTIFICATION_CALLBACK. Pour plus d'informations, consultez la section Notes.

pCallbackContext [in, facultatif]

Pointeur représentant le contexte de ce rappel de notification.

pSubscription [out]

Retourne un pointeur vers l’abonnement résultant de l’inscription de rappel de notification. L’appelant est chargé d’appeler UnsubscribeServiceChangeNotifications pour cesser de recevoir des notifications.

Valeur retournée

Si la fonction réussit, la valeur de retour est ERROR_SUCCESS.

Si la fonction échoue, la valeur de retour est l’un des codes d’erreur système.

Notes

La fonction de rappel est déclarée comme suit :

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

La fonction de rappel reçoit un pointeur vers le contexte fourni par l’appelant. Le rappel est appelé à la suite de l’événement de modification status service. Lorsque le rappel est appelé, il est fourni avec un masque de bits de valeurs SERVICE_NOTIFY_XXX qui indiquent le type de service status modification. Lorsque le rappel est fourni avec zéro au lieu d’une valeur SERVICE_NOTIFY_XXX valide, l’application doit vérifier ce qui a été modifié.

La fonction de rappel ne doit pas bloquer l’exécution. Si vous vous attendez à ce que l’exécution de la fonction de rappel prenne du temps, déchargez le travail que vous effectuez dans la fonction de rappel vers un thread distinct en mettant en file d’attente un élément de travail vers un thread dans un pool de threads. Certains types de travail qui peuvent prendre du temps à la fonction de rappel incluent l’exécution d’E/S de fichier, l’attente d’un événement et l’exécution d’appels de procédure distante externe.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2012 [applications de bureau uniquement]
En-tête
Winsvcp.h
DLL
SecHost.dll

Voir aussi

CreateService

OpenService

OpenSCManager

UnsubscribeServiceChangeNotifications

QueryServiceDynamicInformation