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 |
|
DLL |
|