getSharedServiceDirectory 函数 (winsvc.h)

返回服务的每个服务文件系统位置的路径,以及要读取和/或写入状态的关联程序。

语法

DWORD GetSharedServiceDirectory(
  SC_HANDLE                     ServiceHandle,
  SERVICE_SHARED_DIRECTORY_TYPE DirectoryType,
  PWCHAR                        PathBuffer,
  DWORD                         PathBufferLength,
  DWORD                         *RequiredBufferLength
);

参数

ServiceHandle

服务的句柄。 此句柄由 OpenService 函数返回。

DirectoryType

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

PathBuffer

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

PathBufferLength

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

RequiredBufferLength

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

返回值

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

备注

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

有关专门提供服务状态以供服务本身使用的类似 API,请参阅 GetServiceDirectory

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

要求

   
最低受支持的客户端 Windows 11 (内部版本 22000)
最低受支持的服务器 Windows Server 2022 (内部版本 20348)
标头 winsvc.h
Library Onecore.lib

另请参阅

OpenService

GetServiceDirectory

SERVICE_SID_INFO