使用 Windows Vista 的凭据提供程序创造自定义的登录体验
2009-02-09 17:43:37 来源:WEB开发网Figure5混合凭据提供程序调用序列
1. [The system boots]
2. [LogonUI.exe process is created]
3. [Credential provider DLLs are loaded]
4. Provider::CreateInstance
5. [User presses Ctrl+Alt+Del]
6. Provider::SetUsageScenario (CPUS_LOGON)
7. Credential::Initialize
8. Provider::Advise
9. Provider::GetCredentialCount
10. Provider::GetCredentialAt (dwIndex = 0)
11. Provider::GetFieldDescriptorCount
12. Provider::GetFieldDescriptorAt (dwIndex = 0)
13. Provider::GetFieldDescriptorAt (dwIndex = 1)
14. Provider::GetFieldDescriptorAt (dwIndex = 2)
15. Provider::GetFieldDescriptorAt (dwIndex = 3)
16. Provider::GetFieldDescriptorAt (dwIndex = 4)
17. Credential::GetBitmapValue (dwFieldID = 0; tile image)
18. Credential::GetStringValue (dwFieldID = 1; user name field)
19. Credential::GetFieldState (dwFieldID = 1; user name field)
20. Credential::GetStringValue (dwFieldID = 2; password field)
21. Credential::GetFieldState (dwFieldID = 2; password field)
22. Credential::GetSubmitButtonValue (dwFieldID = 3; submit button)
23. Credential::GetFieldState (dwFieldID = 3; submit button)
24. Credential::GetStringValue (dwFieldID = 4; domain name field)
25. Credential::GetFieldState (dwFieldID = 4; domain name field)
26. Credential::Advise
27. Credential::GetSerialization
28. Credential::UnAdvise
29. Provider::UnAdvise
30. [The WinLogon process calls LogonUser]
31. Credential::Advise
32. Credential::ReportResult (ntsStatus = 0)
33. Credential::UnAdvise
首先,winlogon 启动控制台会话 LogonUI 进程。创建后,LogonUI 枚举在 HKLMSoftwareMicrosoftWindowsCurrentVersionAunticationCredential Providers 下注册的所有凭据提供程序。每个提供程序 DLL 会被加载,并接收到一个 Provider::CreateInstance 调用。对于混合凭据提供程序,这将创建一个 CHybridProvider。(请参见图 5 中的步骤 1 到 4。)
更多精彩
赞助商链接