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。 参数将接收所需的大小。

[in] cbBufSize

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

[out] pcbBytesNeeded

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

返回值

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

如果函数失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError

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

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

言论

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

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

例子

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

注意

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

要求

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

另请参阅

ChangeServiceConfig

CreateService

OpenService

QUERY_SERVICE_CONFIG

QueryServiceConfig2

QueryServiceDynamicInformation

QueryServiceObjectSecurity

服务配置

Service Functions