清理在确定用户的身份验证信息是否合法时创建的任何登录会话。
如果身份验证失败,身份验证包应删除所有相关登录会话。
语法
LSA_DELETE_LOGON_SESSION LsaDeleteLogonSession;
NTSTATUS LsaDeleteLogonSession(
[in] PLUID LogonId
)
{...}
参数
[in] LogonId
指向包含要删除的登录会话的会话 ID 的 LUID 结构的指针。
返回值
如果函数成功,则返回值STATUS_SUCCESS。
如果函数失败,则返回值是 NTSTATUS 代码,可以是以下值之一或 LSA 策略函数返回值之一。
| 返回代码 | 说明 |
|---|---|
|
指定的登录会话具有一个引用计数值,可阻止删除它。 这是一个严重的问题,因为操作系统和身份验证包都认为它们有权管理登录会话。 |
|
找不到指定的登录会话。 |
LsaNtStatusToWinError 函数将 NTSTATUS 代码转换为 Windows 错误代码。
注解
由于登录会话会占用内核中的内存,因此应删除任何未使用或丢弃的登录会话。 但是,在会话的登录 ID 返回到 LSA 后,不应删除登录会话。 例如,在为 LSA 提供登录 ID (之后,由于 LsaApLogonUser 调用) ,LSA 假定它负责登录会话,并在操作系统不再需要登录会话时将其删除。 此时,LSA 调用 LsaApLogonTerminated 以通知身份验证包会话已被删除。
相比之下,使用 DeleteLogonSession 删除登录会话时,不会通知身份验证包。
要求
| 要求 | 值 |
|---|---|
| 最低受支持的客户端 | Windows XP [仅限桌面应用] |
| 最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
| 目标平台 | Windows |
| 标头 | ntsecpkg.h |