Share via


Fonction EnumDependentServicesA (winsvc.h)

Récupère le nom et la status de chaque service qui dépend du service spécifié ; autrement dit, le service spécifié doit être en cours d’exécution avant que les services dépendants puissent s’exécuter.

Syntaxe

BOOL EnumDependentServicesA(
  [in]            SC_HANDLE              hService,
  [in]            DWORD                  dwServiceState,
  [out, optional] LPENUM_SERVICE_STATUSA lpServices,
  [in]            DWORD                  cbBufSize,
  [out]           LPDWORD                pcbBytesNeeded,
  [out]           LPDWORD                lpServicesReturned
);

Paramètres

[in] hService

Handle du service. Ce handle est retourné par la fonction OpenService ou CreateService et doit disposer du droit d’accès SERVICE_ENUMERATE_DEPENDENTS . Pour plus d’informations, consultez Sécurité des services et droits d’accès.

[in] dwServiceState

État des services à énumérer. Ce paramètre peut prendre les valeurs suivantes.

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

[out, optional] lpServices

Pointeur vers un tableau de structures ENUM_SERVICE_STATUS qui reçoit le nom et le service status informations pour chaque service dépendant de la base de données. La mémoire tampon doit être suffisamment grande pour contenir les structures, ainsi que les chaînes vers lesquelles leurs membres pointent.

L’ordre des services dans ce tableau est l’inverse de l’ordre de début des services. En d’autres termes, le premier service du tableau est celui qui serait démarré en dernier, et le dernier service du tableau est celui qui serait démarré en premier.

La taille maximale de ce tableau est de 64 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.

[in] cbBufSize

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

[out] pcbBytesNeeded

Pointeur vers une variable qui reçoit le nombre d’octets nécessaires pour stocker le tableau d’entrées de service. La variable reçoit cette valeur uniquement si la mémoire tampon pointée par lpServices est trop petite, indiquée par l’échec de la fonction et l’erreur ERROR_MORE_DATA ; sinon, le contenu de pcbBytesNeeded n’est pas défini.

[out] lpServicesReturned

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

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 codes d’erreur suivants peuvent être définis par le gestionnaire de contrôle de service. D’autres codes d’erreur peuvent être définis par les fonctions de Registre appelées par le gestionnaire de contrôle de service.

Code de retour Description
ERROR_ACCESS_DENIED
Le handle n’a pas le droit d’accès SERVICE_ENUMERATE_DEPENDENTS .
ERROR_INVALID_HANDLE
Le handle spécifié n’est pas valide.
ERROR_INVALID_PARAMETER
Un paramètre spécifié n’est pas valide.
ERROR_MORE_DATA
La mémoire tampon pointée par lpServices n’est pas assez grande. La fonction définit la variable pointée vers lpServicesRe tourné vers le nombre réel d’entrées de service stockées dans la mémoire tampon. La fonction définit la variable pointée vers par pcbBytesNeeded sur le nombre d’octets requis pour stocker toutes les entrées de service.

Remarques

Les entrées de services retournées sont triées dans l’ordre inverse de l’ordre de début, l’ordre de groupe étant pris en compte. Si vous devez arrêter les services dépendants, vous pouvez utiliser l’ordre des entrées écrites dans la mémoire tampon lpServices pour arrêter les services dépendants dans l’ordre approprié.

Exemples

Pour obtenir un exemple, consultez Arrêt d’un service.

Notes

L’en-tête winsvc.h définit EnumDependentServices comme un 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.

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

Voir aussi

CreateService

ENUM_SERVICE_STATUS

EnumServicesStatusEx

OpenService

Fonctions de service

Installation, suppression et énumération du service