Fonction EnumServicesStatusExA (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 la status de chaque service sont fournis, ainsi que des données supplémentaires basées sur le niveau d’informations spécifié.
Syntaxe
BOOL EnumServicesStatusExA(
[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] LPCSTR 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 avoir le droit d’accès SC_MANAGER_ENUMERATE_SERVICE . Pour plus d’informations, consultez Sécurité du service et droits d’accès.
[in] InfoLevel
Attributs de service qui doivent être retournés. Utilisez SC_ENUM_PROCESS_INFO pour récupérer le nom et les informations de status de 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 vers lesquelles leurs membres pointent.
Actuellement, aucun autre niveau d’information n’est défini.
[in] dwServiceType
Type de services à énumérer. Ce paramètre peut prendre une ou plusieurs des valeurs suivantes.
Valeur | Signification |
---|---|
|
Services de type SERVICE_KERNEL_DRIVER et SERVICE_FILE_SYSTEM_DRIVER. |
|
Services de pilotes de système de fichiers. |
|
Services de pilotes. |
|
Services de type SERVICE_WIN32_OWN_PROCESS et SERVICE_WIN32_SHARE_PROCESS. |
|
Services qui s’exécutent dans leurs propres processus. |
|
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 prendre les valeurs suivantes.
[out, optional] lpServices
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 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 pcbBytesNeeded reçoit la taille requise.
Windows Server 2003 et Windows XP : La taille maximale de ce tableau est de 64 Ko. 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 vers 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 chargement. 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 a la valeur NULL, l’appartenance au groupe est ignorée et tous les services sont énumérés.
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’a pas le droit d’accès SC_MANAGER_ENUMERATE_SERVICE . |
|
La mémoire tampon est trop petite. Toutes les données de la base de données active n’ont pas pu être retournées. Le paramètre pcbBytesNeeded contient le nombre d’octets requis pour recevoir les entrées restantes. |
|
Une valeur de paramètre non valide a été utilisée. |
|
Le handle 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
Si l’appelant n’a pas le droit d’accès SERVICE_QUERY_STATUS à un service, le service est omis en mode silencieux de la liste des services retournés au client.
Notes
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. La combinaison 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.
Configuration requise
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 |