QUERY_SERVICE_CONFIGA结构 (winsvc.h)

包含已安装服务的配置信息。 它由 QueryServiceConfig 函数使用。

语法

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;

成员

dwServiceType

服务的类型。 此成员可以是以下值之一。

含义
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
文件系统驱动程序服务。
SERVICE_KERNEL_DRIVER
0x00000001
驱动程序服务。
SERVICE_WIN32_OWN_PROCESS
0x00000010
在其自己的进程中运行的服务。
SERVICE_WIN32_SHARE_PROCESS
0x00000020
与其他服务共享进程的服务。
 

如果值为 SERVICE_WIN32_OWN_PROCESSSERVICE_WIN32_SHARE_PROCESS,并且服务在 LocalSystem 帐户的上下文中运行,则还可以指定以下类型。

含义
SERVICE_INTERACTIVE_PROCESS
0x00000100
该服务可以与桌面交互。

有关详细信息,请参阅 Interactive Services

dwStartType

何时启动服务。 此成员可以是以下值之一。

含义
SERVICE_AUTO_START
0x00000002
服务控制管理器在系统启动期间自动启动的服务。
SERVICE_BOOT_START
0x00000000
由系统加载程序启动的设备驱动程序。 此值只对驱动程序服务有效。
SERVICE_DEMAND_START
0x00000003
服务控制管理器在进程调用 StartService 函数时启动的服务。
SERVICE_DISABLED
0x00000004
无法启动的服务。 尝试启动服务会导致错误代码 ERROR_SERVICE_DISABLED
SERVICE_SYSTEM_START
0x00000001
IoInitSystem 函数启动的设备驱动程序。 此值只对驱动程序服务有效。

dwErrorControl

错误的严重性,以及此服务无法启动时采取的操作。 此成员可以是以下值之一。

含义
SERVICE_ERROR_CRITICAL
0x00000003
如果可能,启动程序会将错误记录在事件日志中。 如果正在启动最后一个已知良好的配置,则启动操作将失败。 否则,系统会使用上一个已知正常的配置重启系统。
SERVICE_ERROR_IGNORE
0x00000000
启动程序将忽略错误并继续启动操作。
SERVICE_ERROR_NORMAL
0x00000001
启动程序将错误记录在事件日志中,并继续启动操作。
SERVICE_ERROR_SEVERE
0x00000002
启动程序将错误记录在事件日志中。 如果正在启动最后一个已知良好的配置,则启动操作将继续。 否则,系统会使用最后一个已知良好的配置重启系统。

lpBinaryPathName

服务二进制文件的完全限定路径。

路径还可以包含自动启动服务的参数。 这些参数通常传递到服务入口点 (main函数) 。

lpLoadOrderGroup

此服务所属的加载排序组的名称。 如果该成员为 NULL 或空字符串,则服务不属于负载排序组。

启动程序使用负载排序组,以相对于其他组的指定顺序加载服务组。 负载排序组的列表包含在以下注册表值中:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ServiceGroupOrder

dwTagId

lpLoadOrderGroup 参数指定的组中此服务的唯一标记值。 如果值为零,则表示尚未为服务分配标记。 通过在位于 以下位置的注册表中指定标记顺序向量,可以使用标记对加载顺序组中的服务启动进行排序:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GroupOrderList

仅针对 具有SERVICE_BOOT_STARTSERVICE_SYSTEM_START 启动类型的 SERVICE_KERNEL_DRIVERSERVICE_FILE_SYSTEM_DRIVER 类型服务评估标记。

lpDependencies

指向必须在此服务之前启动的服务或加载排序组的空分隔名称数组的指针。 数组以 null 结尾为双倍。 如果指针为 NULL 或指向空字符串,则服务没有依赖项。 如果指定了组名,则必须以 WinSvc.h) 字符中定义的 SC_GROUP_IDENTIFIER (为前缀,以便将其与服务名称区分开来,因为服务和服务组具有相同的名称空间。 对服务的依赖意味着此服务仅当它所依赖的服务正在运行时才能运行。 依赖于某个组意味着,如果在尝试启动该组的所有成员之后至少有一个组成员正在运行,则此服务可以运行。

lpServiceStartName

如果服务类型 SERVICE_WIN32_OWN_PROCESSSERVICE_WIN32_SHARE_PROCESS,则此成员是服务进程在运行时将登录的帐户的名称。 此名称的格式可以是 Domain\UserName。 如果帐户属于内置域,则名称的格式可以是 .\UserName。 如果进程在 LocalSystem 帐户下运行,则名称也可以是“LocalSystem”。

如果服务类型 为SERVICE_KERNEL_DRIVERSERVICE_FILE_SYSTEM_DRIVER,则此成员是驱动程序对象名称 (,即 \FileSystem\Rdr 或 \Driver\Xns) I/O) 系统用于加载设备驱动程序 (。 如果此成员为 NULL,则驱动程序将基于服务名称使用 I/O 系统创建的默认对象名称运行。

lpDisplayName

服务控制程序用于标识服务的显示名称。 此字符串的最大长度为 256 个字符。 名称在服务控制管理器中保留大小写。 显示名称比较始终不区分大小写。

此参数可使用以下格式指定本地化字符串:

@[Path]DLLName,-StrID

具有标识符 StrID 的字符串从 DLLName 加载; 路径 是可选的。 有关详细信息,请参阅 RegLoadMUIString

Windows Server 2003 和 Windows XP: 在 Windows Vista 之前,不支持本地化字符串。

注解

服务的配置信息最初是在通过调用 CreateService 函数创建服务时指定的。 可以通过调用 ChangeServiceConfig 函数来修改该信息。

示例

有关示例,请参阅 查询服务的配置

注意

winsvc.h 标头将QUERY_SERVICE_CONFIG定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 winsvc.h (包括 Windows.h)

另请参阅

ChangeServiceConfig

CreateService

QueryServiceConfig

StartService