Msv1_0SubAuthenticationRoutine 函数 (subauth.h)
Msv1_0SubAuthenticationRoutine 函数执行特定于客户端/服务器的身份验证。
安全帐户管理器 (SAM) 数据库中的安全主体凭据和信息将传递给此函数进行身份验证。
此函数由自定义子身份验证包 DLL 实现,用于MSV1_0身份验证包。
仅针对非交互式身份验证调用 Msv1_0SubAuthenticationRoutine 函数,仅在帐户所在的身份验证服务器上调用,并且仅当在注册表中的正确密钥下注册了子身份验证 DLL 时。
语法
NTSTATUS Msv1_0SubAuthenticationRoutine(
[in] NETLOGON_LOGON_INFO_CLASS LogonLevel,
[in] PVOID LogonInformation,
[in] ULONG Flags,
[in] PUSER_ALL_INFORMATION UserAll,
[out] PULONG WhichFields,
[out] PULONG UserFlags,
[out] PBOOLEAN Authoritative,
[out] PLARGE_INTEGER LogoffTime,
[out] PLARGE_INTEGER KickoffTime
);
参数
[in] LogonLevel
指定 LogonInformation 参数中给定的信息级别。 此参数通常设置为 NetlogonInteractiveInformation。
[in] LogonInformation
指向 NETLOGON_LOGON_IDENTITY_INFO 结构的指针。 此结构的成员包含有关登录用户的信息。 忽略此结构的 LogonDomainName 成员。
[in] Flags
可选。 包含描述登录情况的标志。 此参数的取值可为下列值之一:
值 | 含义 |
---|---|
|
直通身份验证。 用户未连接到此计算机。 |
|
这是使用 GUEST 用户帐户进行登录的重试。 |
[in] UserAll
指向 USER_ALL_INFORMATION 结构的指针,该结构包含从 SAM 数据库返回的用户说明。
[out] WhichFields
返回需要写回到 SAM 数据库的 USER_ALL_INFORMATION 结构的成员。 仅当 Msv1_0SubAuthenticationRoutine 向调用方返回成功时,才会写入这些成员。 只有以下值有效。
值 | 含义 |
---|---|
|
将 UserAll 结构的 Parameters 成员中包含的数据写回到 SAM 数据库。
如果 Parameters 成员UNICODE_STRING缓冲区的大小发生更改, Msv1_0SubAuthenticationRoutine 必须使用 MIDL_user_free 函数删除缓冲区,并使用 MIDL_user_allocate 函数重新分配该 缓冲区 。 |
[out] UserFlags
当 LsaLogonUser 函数的 ProfileBuffer 参数包含 MSV1_0_LM20_LOGON_PROFILE 结构时,要返回 的值 。 当前为 结构的 UserFlags 成员定义了以下值。
值 | 含义 |
---|---|
|
这是来宾登录。 |
|
调用方未指定加密凭据。 |
[out] Authoritative
指向布尔值的指针,该值指示返回的状态是否为应返回给原始调用方的权威状态。 如果返回的值为 FALSE,则可以在另一个域控制器上再次尝试登录请求。 无论函数调用的返回值如何,此参数都应返回有效信息。
[out] LogoffTime
指向一个值的指针,该值接收用户应注销系统的时间。 此时间用于控制登录生存期,并指定为相对于 GMT 的系统时间。
[out] KickoffTime
指向值的指针,该值接收用户应从系统注销的时间。 此时间用于控制登录生存期,并指定为相对于 GMT 的系统时间。 如果用户不注销,请指定较大的正值,例如:
KickoffTime->HighPart = 0x7FFFFFFF;
KickoffTime->LowPart = 0xFFFFFFFF;
返回值
此函数必须返回以下值之一。
返回代码 | 说明 |
---|---|
|
没有错误。 |
|
帐户已禁用。 |
|
帐户已过期。 |
|
帐户已锁定。 |
|
LogonLevel 无效。 |
|
用户目前无权登录。 |
|
用户无权登录到指定的工作站。 |
|
指定的用户没有帐户。 |
|
密码已过期。 |
|
帐户标记为指示必须在下次登录时更改密码。 |
|
密码无效。 |
注解
如果 AuthenticationInformation 参数的一部分指示要完成子身份验证,并且导出Msv1_0SubAuthenticationRoutine函数的子身份验证 DLL 已在工作站上正确注册,则MSV1_0身份验证包将调用 此 函数。
MSV1_0 身份验证包不支持交互式登录的子身份验证,这需要 MSV1_0_INTERACTIVE_LOGON 结构。 需要 MSV1_0_LM20_LOGON 结构的网络登录可以使用子身份验证。
Msv1_0SubAuthenticationRoutine函数是在找到正确的域控制器后调用的,并且已从 SAM 数据库中检索到有关要进行身份验证的安全主体的所有信息。 使用子身份验证时,身份验证由子身份验证 DLL 负责,必须由该 DLL 导出 的Msv1_0SubAuthenticationRoutine 函数完成。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | subauth.h |