Fonction QueryServiceStatusEx (winsvc.h)
Récupère la status actuelle du service spécifié en fonction du niveau d’informations spécifié.
Syntaxe
BOOL QueryServiceStatusEx(
[in] SC_HANDLE hService,
[in] SC_STATUS_TYPE InfoLevel,
[out, optional] LPBYTE lpBuffer,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded
);
Paramètres
[in] hService
Handle pour le service. Ce handle est retourné par la fonction CreateService ou OpenService et doit avoir le droit d’accès SERVICE_QUERY_STATUS. Pour plus d’informations, consultez Sécurité du service et droits d’accès.
[in] InfoLevel
Attributs de service à retourner. Utilisez SC_STATUS_PROCESS_INFO pour récupérer les informations de status du service. Le paramètre lpBuffer est un pointeur vers une structure SERVICE_STATUS_PROCESS .
Actuellement, aucun autre niveau d’information n’est défini.
[out, optional] lpBuffer
Pointeur vers la mémoire tampon qui reçoit les informations status. Le format de ces données dépend de la valeur du paramètre InfoLevel .
La taille maximale de ce tableau est de 8 Ko octets. Pour déterminer la taille requise, spécifiez NULL pour ce paramètre et 0 pour le paramètre cbBufSize . La fonction échoue et GetLastError retourne ERROR_INSUFFICIENT_BUFFER. Le paramètre pcbBytesNeeded reçoit la taille requise.
[in] cbBufSize
Taille de la mémoire tampon pointée vers par le paramètre lpBuffer , en octets.
[out] pcbBytesNeeded
Pointeur vers une variable qui reçoit le nombre d’octets nécessaires pour stocker toutes les informations status, si la fonction échoue avec ERROR_INSUFFICIENT_BUFFER.
Valeur retournée
Si la fonction réussit, la valeur de retour est différente de zéro.
Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError. Les erreurs suivantes peuvent être retournées.
Code de retour | Description |
---|---|
|
Le handle n'est pas valide. |
|
Le handle n’a pas le droit d’accès SERVICE_QUERY_STATUS. |
|
La mémoire tampon est trop petite pour la structure SERVICE_STATUS_PROCESS . Rien n’a été écrit dans la structure. |
|
Le membre cbSize de SERVICE_STATUS_PROCESS n’est pas valide. |
|
Le paramètre InfoLevel contient une valeur non prise en charge. |
|
Le système s’arrête ; cette fonction ne peut pas être appelée. |
Remarques
La fonction QueryServiceStatusEx retourne les informations de status de service les plus récentes signalées au gestionnaire de contrôle de service. Si le service vient de modifier son status, il n’a peut-être pas encore mis à jour le gestionnaire de contrôle de service.
L’identificateur de processus retourné dans la structure SERVICE_STATUS_PROCESS est valide, à condition que l’état du service soit SERVICE_RUNNING, SERVICE_PAUSE_PENDING, SERVICE_PAUSED ou SERVICE_CONTINUE_PENDING. Toutefois, si le service est dans un état SERVICE_START_PENDING ou SERVICE_STOP_PENDING, l’identificateur de processus peut ne pas être valide et, si le service est dans l’état SERVICE_STOPPED, il n’est jamais valide.
Exemples
Pour obtenir un exemple, consultez Démarrage d’un service ou Arrêt d’un service.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winsvc.h (inclure Windows.h) |
Bibliothèque | Advapi32.lib |
DLL | Advapi32.dll |