getServiceDirectory 函数 (winsvc.h)

返回服务要读取和/或写入状态的每个服务文件系统位置的路径。

语法

DWORD GetServiceDirectory(
  SERVICE_STATUS_HANDLE  hServiceStatus,
  SERVICE_DIRECTORY_TYPE eDirectoryType,
  PWCHAR                 lpPathBuffer,
  DWORD                  cchPathBufferLength,
  DWORD                  *lpcchRequiredBufferLength
);

参数

hServiceStatus

当前服务的状态信息结构的句柄。 此句柄由 RegisterServiceCtrlHandler 函数返回。

eDirectoryType

SERVICE_DIRECTORY_TYPE 枚举的成员,用于标识要检索的每服务目录路径的类型。

lpPathBuffer

调用方分配的缓冲区,路径字符串将复制到其中。 如果为 NULL,则函数调用将失败并ERROR_INSUFFICIENT_BUFFER,并在 lpcchRequiredBufferLength 中返回所需的缓冲区长度(以 WCHAR 为单位)。 如果为非 NULL,则应在 cchPathBufferLength 中指定缓冲区的长度。 路径(如果写入)将以 NULL 结尾。

cchPathBufferLength

lpPathBuffer 中提供的缓冲区的长度,以 WCHARS 为单位。 如果 lpPathBuffer 为 NULL,则忽略此参数。

lpcchRequiredBufferLength

此值设置为所需的缓冲区长度(以 WCHAR 为单位)。 此长度包括终止 NULL 字符。

返回值

当所有操作成功完成并将 NULL 终止的状态路径写入 lpPathBuffer 时,返回ERROR_SUCCESS。 如果 lpPathBuffer 的大小不足以包含状态路径,或者 lpPathBuffer 为 NULL,则返回ERROR_INSUFFICIENT_BUFFER。 在这种情况下,WCHAR 中所需的缓冲区长度通过 lpcchRequiredBufferLength 返回。 如果发生其他故障,将返回 Win32 错误代码。

注解

对于 ServiceDirectoryPersistentState,目录的安全性设置为仅提供对本地系统帐户和服务 SID 的写入访问权限。 确保为调用此 API 的任何服务启用服务 SID。 有关详细信息,请参阅 SERVICE_SID_INFO

有关提供可与关联程序共享的服务状态的类似 API,请参阅 GetSharedServiceDirectory

卸载服务后,服务控制管理器将删除所有服务状态目录。

要求

   
最低受支持的客户端 Windows 10,版本 2004 (10.0;内部版本 19041)
最低受支持的服务器 Windows Server 版本 2004 (10.0;内部版本 19041)
标头 winsvc.h
Library Onecore.lib

另请参阅

RegisterServiceCtrlHandler

GetSharedServiceDirectory

SERVICE_SID_INFO