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 |