Partager via


Fonction EnumServicesStatusExW (winsvc.h)

Énumère les services dans la base de données du gestionnaire de contrôle de service spécifiée. Le nom et l’état de chaque service sont fournis, ainsi que des données supplémentaires en fonction du niveau d’informations spécifié.

Syntaxe

BOOL EnumServicesStatusExW(
  [in]                SC_HANDLE    hSCManager,
  [in]                SC_ENUM_TYPE InfoLevel,
  [in]                DWORD        dwServiceType,
  [in]                DWORD        dwServiceState,
  [out, optional]     LPBYTE       lpServices,
  [in]                DWORD        cbBufSize,
  [out]               LPDWORD      pcbBytesNeeded,
  [out]               LPDWORD      lpServicesReturned,
  [in, out, optional] LPDWORD      lpResumeHandle,
  [in, optional]      LPCWSTR      pszGroupName
);

Paramètres

[in] hSCManager

Handle de la base de données du gestionnaire de contrôle de service. Ce handle est retourné par la fonction OpenSCManager et doit disposer du droit d’accès SC_MANAGER_ENUMERATE_SERVICE. Pour plus d’informations, consultez Sécurité des services et droits d’accès.

[in] InfoLevel

Attributs de service à renvoyer. Utilisez SC_ENUM_PROCESS_INFO pour récupérer les informations d’état du nom et du service pour chaque service de la base de données. Le paramètre lpServices est un pointeur vers une mémoire tampon qui reçoit un tableau de structures ENUM_SERVICE_STATUS_PROCESS. La mémoire tampon doit être suffisamment grande pour contenir les structures ainsi que les chaînes auxquelles leurs membres pointent.

Actuellement, aucun autre niveau d’informations n’est défini.

[in] dwServiceType

Type de services à énumérer. Ce paramètre peut être une ou plusieurs des valeurs suivantes.

Valeur Signification
SERVICE_DRIVER
0x0000000B
Services de type SERVICE_KERNEL_DRIVER et SERVICE_FILE_SYSTEM_DRIVER.
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
Services de pilotes de système de fichiers.
SERVICE_KERNEL_DRIVER
0x00000001
Services de pilotes.
SERVICE_WIN32
0x00000030
Services de type SERVICE_WIN32_OWN_PROCESS et SERVICE_WIN32_SHARE_PROCESS.
SERVICE_WIN32_OWN_PROCESS
0x00000010
Services qui s’exécutent dans leurs propres processus.
SERVICE_WIN32_SHARE_PROCESS
0x00000020
Services qui partagent un processus avec un ou plusieurs autres services. Pour plus d’informations, consultez Programmes de service.

[in] dwServiceState

État des services à énumérer. Ce paramètre peut être l’une des valeurs suivantes.

Valeur Signification
SERVICE_ACTIVE
0x00000001
Énumère les services qui se trouvent dans les états suivants : SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDINGet SERVICE_PAUSED.
SERVICE_INACTIVE
0x00000002
Énumère les services qui sont dans l’état SERVICE_STOPPED.
SERVICE_STATE_ALL
0x00000003
Combine les états SERVICE_ACTIVE et SERVICE_INACTIVE.

[out, optional] lpServices

Pointeur vers la mémoire tampon qui reçoit les informations d’état. Le format de ces données dépend de la valeur du paramètre InfoLevel.

La taille maximale de ce tableau est de 256 000 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_MORE_DATA. Le paramètre de octetsoctets reçoit la taille requise.

Windows Server 2003 et Windows XP : La taille maximale de ce tableau est de 64 000 octets. Cette limite a été augmentée à compter de Windows Server 2003 avec SP1 et Windows XP avec SP2.

[in] cbBufSize

Taille de la mémoire tampon pointée par le paramètre lpServices, en octets.

[out] pcbBytesNeeded

Pointeur vers une variable qui reçoit le nombre d’octets nécessaires pour retourner les entrées de service restantes, si la mémoire tampon est trop petite.

[out] lpServicesReturned

Pointeur vers une variable qui reçoit le nombre d’entrées de service retournées.

[in, out, optional] lpResumeHandle

Pointeur vers une variable qui, lors de l’entrée, spécifie le point de départ de l’énumération. Vous devez définir cette valeur sur zéro la première fois que la fonction EnumServicesStatusEx est appelée. En sortie, cette valeur est égale à zéro si la fonction réussit. Toutefois, si la fonction retourne zéro et que la fonction GetLastError retourne ERROR_MORE_DATA, cette valeur indique l’entrée de service suivante à lire lorsque la fonction EnumServicesStatusEx est appelée pour récupérer les données supplémentaires.

[in, optional] pszGroupName

Nom du groupe d’ordre de charge. Si ce paramètre est une chaîne, les seuls services énumérés sont ceux qui appartiennent au groupe dont le nom est spécifié par la chaîne. Si ce paramètre est une chaîne vide, seuls les services qui n’appartiennent à aucun groupe sont énumérés. Si ce paramètre est NULL, l’appartenance au groupe est ignorée et tous les services sont énumérés.

Valeur de retour

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’erreur étendues, appelez GetLastError. Les erreurs suivantes peuvent être retournées.

Retourner le code Description
ERROR_ACCESS_DENIED
Le handle n’a pas le droit d’accès SC_MANAGER_ENUMERATE_SERVICE.
ERROR_MORE_DATA
La mémoire tampon est trop petite. Toutes les données de la base de données active ne peuvent pas être retournées. Le paramètre octetsoctets contient le nombre d’octets requis pour recevoir les entrées restantes.
ERROR_INVALID_PARAMETER
Une valeur de paramètre illégale a été utilisée.
ERROR_INVALID_HANDLE
Le handle n’est pas valide.
ERROR_INVALID_LEVEL
Le paramètre InfoLevel contient une valeur non prise en charge.
ERROR_SHUTDOWN_IN_PROGRESS
Le système s’arrête ; cette fonction ne peut pas être appelée.

Remarques

Si l’appelant n’a pas le droit d’accès SERVICE_QUERY_STATUS à un service, le service est omis en mode silencieux dans la liste des services retournés au client.

Note

L’en-tête winsvc.h définit EnumServicesStatusEx comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau uniquement]
serveur minimum pris en charge Windows Server 2003 [applications de bureau uniquement]
plateforme cible Windows
d’en-tête winsvc.h (inclure Windows.h)
bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

ENUM_SERVICE_STATUS_PROCESS

Fonctions de service

installation, suppression et énumération du service