Partager via


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 interactive Services.

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 pendant le démarrage du système.
SERVICE_BOOT_START
0x00000000
Pilote de périphérique démarré par le chargeur système. Cette valeur est valide uniquement pour les services de pilotes.
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 valide uniquement pour les services de pilotes.

dwErrorControl

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

Valeur Signification
SERVICE_ERROR_CRITICAL
0x00000003
Le programme de démarrage enregistre l’erreur dans le journal des événements, si possible. Si la dernière configuration correcte connue est démarrée, l’opération de démarrage échoue. Sinon, 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 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 configuration correcte connue est démarrée, l’opération de démarrage se poursuit. Sinon, le système est redémarré avec la dernière configuration connue.

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 de service (généralement la fonction principale).

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 de classement 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 d’étiquette 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 été affecté à une balise. Vous pouvez utiliser une balise pour commander le démarrage du service au sein d’un groupe de commandes de chargement en spécifiant un vecteur d’ordre d’étiquette 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 SERVICE_BOOT_START ou SERVICE_SYSTEM_START types de démarrage.

lpDependencies

Pointeur vers un tableau de noms séparés par null des services ou groupes d’ordre de chargement qui doivent commencer avant ce service. Le tableau est doublement terminé par null. Si le pointeur est 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écédé du 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 est en cours d’exécution 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 sur lequel le processus de service sera connecté comme lorsqu’il s’exécute. Ce nom peut être du formulaire Domaine\Nom d’utilisateur. 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 du pilote (autrement dit, \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é dans le gestionnaire de contrôle de service. Les comparaisons de noms complets 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 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 : 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 l'configuration d’un service.

Note

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

Voir aussi

ChangeServiceConfig

CreateService

QueryServiceConfig

startService