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;
傳回值
此函式必須傳回下列其中一個值。
傳回碼 | Description |
---|---|
|
沒有錯誤。 |
|
帳戶已停用。 |
|
帳戶已過期。 |
|
帳戶已經鎖定。 |
|
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 |