作者:陆麟
转载请征得作者同意.如有BUG,请汇报.
2000.3.29
好了,现在GINA相对于LOGON的初始化已经完成.但是现在还没有用户登录界面.当然,为了让GINA有机会显示欢迎图画,LOGON要求GINA
EXPORT一个函数:
VOID WINAPI WlxDisplaySASNotice(PVOID pContext);
该函数的唯一功能就是显示欢迎窗口.并且监督是否有自己定义的SAS(安全提示码序列)出现.如果出现,则要通知LOGON有个登录请求发出.SAS在NT下缺省情况为CTL+ALT+DEL.但是并不一定只有CTL+ALT+DEL才能作为SAS.GINA本身可以提供SAS监督.当然,用CTL+ALT+DEL更为方便.因为在初始化时GINA已经收到了一个函数:
VOID WlxUseCtrlAltDel(HANDLE hWlx);
该函数通知LOGON,GINA使用CTL+ALT+DEL为SAS.如果要用其他的SAS,GINA必须自己HOOK热键.并且通过:
WlxSasNotify(hGlobalWlx, dwSasType);
报告SAS出现.由于HOOK将更增GINA写作工作量,而且MS提供缺省的CTL+ALT+DEL服务,那么用CTL+ALT+DEL在决大多数情况下就够了.
会到话题.现在出现的是欢迎画面.当用户键入CTL+ALT+DEL时,登录接口出现了.:DDD现在我们就进入了MS所谓的INTERACTIVE
LOGON.
现在,LOGON调用GINA的
int WlxLoggedOutSAS(
PVOID
pWlxContext,
DWORD
dwSasType,
PLUID
pAuthenticationId,
PSID
pLogonSid,
PDWORD
pdwOptions,
PHANDLE
phToken,
PWLX_MPR_NOTIFY_INFO pMprNotifyInfo,
PVOID
*pProfile
);
函数.GINA现在用这个函数来显示对话框并且收集用户信息并且调用LSA进行验证.如果通过了验证,那么就会填写MprNotifyInfo结构.这个结构用以通知MPR:用户登录喽!
此时,NT带的GINA会分析本机是否在一个DOMAIN里,根据不同的情况显示不同的对话框.当用户机器不属于DOMAIN.那么根本就没机会填写DOMAIN名字.当机器隶属于一个NT网络架构的网,用户将可以有DOMAIN域填写.用以告知NT用户希望以什么身份登录.
今天就讲到这里,下次将顺WlxLoggedOutSAS的线路进入LSA进入激动人心的讲解.大家睁大眼睛看啊.