queryServiceConfigA 函数 (winsvc.h)

检索指定服务的配置参数。 可以使用 QueryServiceConfig2 函数获取可选配置参数。

语法

BOOL QueryServiceConfigA(
  [in]            SC_HANDLE               hService,
  [out, optional] LPQUERY_SERVICE_CONFIGA lpServiceConfig,
  [in]            DWORD                   cbBufSize,
  [out]           LPDWORD                 pcbBytesNeeded
);

参数

[in] hService

服务的句柄。 此句柄由 OpenServiceCreateService 函数返回,并且它必须具有SERVICE_QUERY_CONFIG访问权限。 有关详细信息,请参阅 服务安全和访问权限

[out, optional] lpServiceConfig

指向接收服务配置信息的缓冲区的指针。 数据的格式是 QUERY_SERVICE_CONFIG 结构。

此数组的最大大小为 8K 字节。 若要确定所需的大小,请为此参数指定 NULL,为 cbBufSize 参数指定 0。 函数将失败, GetLastError 将返回ERROR_INSUFFICIENT_BUFFER。 该“bbytesNeeded”参数将接收所需大小。

[in] cbBufSize

lpServiceConfig 参数指向的缓冲区的大小(以字节为单位)。

[out] pcbBytesNeeded

指向变量的指针,该变量接收存储所有配置信息所需的字节数(如果函数失败并出现ERROR_INSUFFICIENT_BUFFER)。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

服务控制管理器可以设置以下错误代码。 其他可由服务控制管理器调用的注册表函数设置。

返回代码 说明
ERROR_ACCESS_DENIED
句柄没有SERVICE_QUERY_CONFIG访问权限。
ERROR_INSUFFICIENT_BUFFER
lpServiceConfig 缓冲区中的服务配置信息比容纳的信息要多。 获取所有信息所需的字节数在 bytesNeeded 参数中返回。 不会向 lpServiceConfig 写入任何内容。
ERROR_INVALID_HANDLE
指定的句柄无效。

注解

QueryServiceConfig 函数返回在特定服务的注册表中保留的服务配置信息。 此配置信息首先由服务控制程序使用 CreateService 函数设置。 此信息可能已由服务配置程序使用 ChangeServiceConfig 函数更新。

如果在上次更改配置信息时服务正在运行, QueryServiceConfig 返回的信息将不会反映服务的当前配置。 相反,它将在下次运行时反映服务的配置。 DisplayName 键是一个例外。 更改 DisplayName 密钥后,无论服务是否正在运行,它都会立即生效。

示例

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

注意

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

要求

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

另请参阅

ChangeServiceConfig

CreateService

OpenService

QUERY_SERVICE_CONFIG

QueryServiceConfig2

QueryServiceDynamicInformation

QueryServiceObjectSecurity

服务配置

服务函数