structure QUERY_SERVICE_CONFIGA (winsvc.h)

Contient des informations de configuration pour un service installé. Il est utilisé par la fonction QueryServiceConfig .

Syntaxe

typedef struct _QUERY_SERVICE_CONFIGA {
  DWORD dwServiceType;
  DWORD dwStartType;
  DWORD dwErrorControl;
  LPSTR lpBinaryPathName;
  LPSTR lpLoadOrderGroup;
  DWORD dwTagId;
  LPSTR lpDependencies;
  LPSTR lpServiceStartName;
  LPSTR lpDisplayName;
} QUERY_SERVICE_CONFIGA, *LPQUERY_SERVICE_CONFIGA;

Membres

dwServiceType

Type de service. Ce membre peut être l’une des valeurs suivantes.

Valeur Signification
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
Service de pilote de système de fichiers.
SERVICE_KERNEL_DRIVER
0x00000001
Service de pilote.
SERVICE_WIN32_OWN_PROCESS
0x00000010
Service qui s’exécute dans son propre processus.
SERVICE_WIN32_SHARE_PROCESS
0x00000020
Service qui partage un processus avec d’autres services.
 

Si la valeur est SERVICE_WIN32_OWN_PROCESS ou SERVICE_WIN32_SHARE_PROCESS et que le service s’exécute dans le contexte du compte LocalSystem, le type suivant peut également être spécifié.

Valeur Signification
SERVICE_INTERACTIVE_PROCESS
0x00000100
Le service peut interagir avec le bureau.

Pour plus d’informations, consultez Services interactifs.

dwStartType

Quand démarrer le service. Ce membre peut être l’une des valeurs suivantes.

Valeur Signification
SERVICE_AUTO_START
0x00000002
Un service démarré automatiquement par le gestionnaire de contrôle de service au démarrage du système.
SERVICE_BOOT_START
0x00000000
Un pilote de périphérique démarré par le chargeur système. Cette valeur est uniquement valide pour les services de pilote.
SERVICE_DEMAND_START
0x00000003
Un service démarré par le gestionnaire de contrôle de service lorsqu’un processus appelle la fonction StartService .
SERVICE_DISABLED
0x00000004
Service qui ne peut pas être démarré. Les tentatives de démarrage du service entraînent le code d’erreur ERROR_SERVICE_DISABLED.
SERVICE_SYSTEM_START
0x00000001
Un pilote de périphérique démarré par la fonction IoInitSystem . Cette valeur est uniquement valide pour les services de pilote.

dwErrorControl

Gravité de l’erreur et action entreprise si ce service ne parvient pas à démarrer. Ce membre peut être l’une des valeurs suivantes.

Valeur Signification
SERVICE_ERROR_CRITICAL
0x00000003
Si possible, le programme de démarrage consigne l’erreur dans le journal des événements. Si la dernière configuration correcte connue est en cours de démarrage, l’opération de démarrage échoue. Dans le cas contraire, le système est redémarré avec la dernière configuration correcte connue.
SERVICE_ERROR_IGNORE
0x00000000
Le programme de démarrage ignore l’erreur et continue l’opération de démarrage.
SERVICE_ERROR_NORMAL
0x00000001
Le programme de démarrage consigne l’erreur dans le journal des événements et continue l’opération de démarrage.
SERVICE_ERROR_SEVERE
0x00000002
Le programme de démarrage consigne l’erreur dans le journal des événements. Si la dernière configuration correcte connue est en cours de démarrage, l’opération de démarrage se poursuit. Sinon, le système est redémarré avec la dernière configuration connue-bonne.

lpBinaryPathName

Chemin complet du fichier binaire de service.

Le chemin d’accès peut également inclure des arguments pour un service de démarrage automatique. Ces arguments sont passés au point d’entrée du service (généralement la fonction main).

lpLoadOrderGroup

Nom du groupe d’ordre de charge auquel ce service appartient. Si le membre a la valeur NULL ou une chaîne vide, le service n’appartient pas à un groupe d’ordre de chargement.

Le programme de démarrage utilise des groupes d’ordre de charge pour charger des groupes de services dans un ordre spécifié par rapport aux autres groupes. La liste des groupes d’ordre de chargement est contenue dans la valeur de Registre suivante :

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ServiceGroupOrder

dwTagId

Valeur de balise unique pour ce service dans le groupe spécifié par le paramètre lpLoadOrderGroup . La valeur zéro indique que le service n’a pas reçu de balise. Vous pouvez utiliser une balise pour le démarrage du service de classement au sein d’un groupe de commandes de chargement en spécifiant un vecteur d’ordre de balise dans le Registre situé à l’adresse suivante :

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GroupOrderList

Les balises sont évaluées uniquement pour les services de type SERVICE_KERNEL_DRIVER et SERVICE_FILE_SYSTEM_DRIVER qui ont des types de démarrage SERVICE_BOOT_START ou SERVICE_SYSTEM_START .

lpDependencies

Pointeur vers un tableau de noms de services ou de groupes d’ordre de chargement séparés par null qui doivent commencer avant ce service. Le tableau est doublement terminé par null. Si le pointeur a la valeur NULL ou s’il pointe vers une chaîne vide, le service n’a aucune dépendance. Si un nom de groupe est spécifié, il doit être préfixé par le caractère SC_GROUP_IDENTIFIER (défini dans WinSvc.h) pour le différencier d’un nom de service, car les services et les groupes de services partagent le même espace de noms. La dépendance à un service signifie que ce service ne peut s’exécuter que si le service dont il dépend est en cours d’exécution. La dépendance à un groupe signifie que ce service peut s’exécuter si au moins un membre du groupe s’exécute après une tentative de démarrage de tous les membres du groupe.

lpServiceStartName

Si le type de service est SERVICE_WIN32_OWN_PROCESS ou SERVICE_WIN32_SHARE_PROCESS, ce membre est le nom du compte sous lequel le processus de service sera connecté lors de son exécution. Ce nom peut être de la forme Nomd’utilisateur du domaine\. Si le compte appartient au domaine intégré, le nom peut être de la forme .\UserName. Le nom peut également être « LocalSystem » si le processus s’exécute sous le compte LocalSystem.

Si le type de service est SERVICE_KERNEL_DRIVER ou SERVICE_FILE_SYSTEM_DRIVER, ce membre est le nom de l’objet de pilote (c’est-à-dire, \FileSystem\Rdr ou \Driver\Xns) que le système d’entrée et de sortie (E/S) utilise pour charger le pilote de périphérique. Si ce membre a la valeur NULL, le pilote doit être exécuté avec un nom d’objet par défaut créé par le système d’E/S, en fonction du nom du service.

lpDisplayName

Nom complet à utiliser par les programmes de contrôle de service pour identifier le service. Cette chaîne a une longueur maximale de 256 caractères. Le nom est conservé à la casse dans le gestionnaire de contrôle de service. Les comparaisons de noms d’affichage ne respectent toujours pas la casse.

Ce paramètre peut spécifier une chaîne localisée au format suivant :

@[Path]DLLName,-StrID

La chaîne avec l’identificateur StrID est chargée à partir de DLLName ; Le chemin d’accès est facultatif. Pour plus d’informations, consultez RegLoadMUIString.

Windows Server 2003 et Windows XP : Les chaînes localisées ne sont pas prises en charge tant que Windows Vista n’est pas pris en charge.

Remarques

Les informations de configuration d’un service sont initialement spécifiées lorsque le service est créé par un appel à la fonction CreateService . Les informations peuvent être modifiées en appelant la fonction ChangeServiceConfig .

Exemples

Pour obtenir un exemple, consultez Interrogation de la configuration d’un service.

Notes

L’en-tête winsvc.h définit QUERY_SERVICE_CONFIG en tant qu’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

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]
En-tête winsvc.h (inclure Windows.h)

Voir aussi

ChangeServiceConfig

CreateService

QueryServiceConfig

StartService