Partager via


QUERY_SERVICE_CONFIGW structure (winsvc.h)

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

Syntaxe

typedef struct _QUERY_SERVICE_CONFIGW {
  DWORD  dwServiceType;
  DWORD  dwStartType;
  DWORD  dwErrorControl;
  LPWSTR lpBinaryPathName;
  LPWSTR lpLoadOrderGroup;
  DWORD  dwTagId;
  LPWSTR lpDependencies;
  LPWSTR lpServiceStartName;
  LPWSTR lpDisplayName;
} QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW;

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
Service démarré automatiquement par le gestionnaire de contrôle de service lors du 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
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 enregistre l’erreur dans le journal des événements. Si la dernière bonne configuration connue est en cours de démarrage, l’opération de démarrage échoue. Sinon, le système est redémarré avec la dernière bonne configuration connue.
SERVICE_ERROR_IGNORE
0x00000000
Le programme de démarrage ignore l’erreur et poursuit l’opération de démarrage.
SERVICE_ERROR_NORMAL
0x00000001
Le programme de démarrage enregistre l’erreur dans le journal des événements et poursuit l’opération de démarrage.
SERVICE_ERROR_SEVERE
0x00000002
Le programme de démarrage enregistre l’erreur dans le journal des événements. Si la dernière bonne configuration connue est en cours de démarrage, l’opération de démarrage continue. Sinon, le système est redémarré avec la dernière configuration connue.

lpBinaryPathName

Chemin d’accès complet au 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 de service (généralement la fonction main).

lpLoadOrderGroup

Nom du groupe d’ordre de chargement auquel appartient ce service. 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 qu’aucune balise n’a été affectée au service. Vous pouvez utiliser une balise pour ordonner le démarrage du service dans un groupe d’ordre 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ébut SERVICE_BOOT_START ou SERVICE_SYSTEM_START .

lpDependencies

Pointeur vers un tableau de noms de services séparés par null ou de groupes d’ordre de charge qui doivent démarrer 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 formeNom d’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 est en cours d’exécution 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 d’affichage à 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é selon 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 :

@[Chemin]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 avant Windows Vista.

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 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

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