阅读:1035回复:0
Smart Card Logon 不知道发在这里是否合适
在GINA的函数中,提供了对Smart Card的接口,如有些参数可以是WLX_SAS_TYPE_SC_INSERT和WLX_SAS_TYPE_SC_REMOVE,但是我发现这些选项只是个摆设,不像Ctrl + Alt + Del动作,windows是不会检测智能卡动作的发生,必须由自己来检测这些事件的发生,然后调用WlxSasNotify,不知我的看法是否正确。最后我在GINA中创建了一个线程,这个线程负责检测智能卡事件的发生,如果发生了感兴趣的事件,就调用WlxSasNotify来触发相应的响应函数。
我碰到了一个问题,理论上用了WlxSasNotify函数后,系统会从Default desktop切换到winlogon desktop,处理完了响应函数后,系统会切换回来。但是我的系统有时会无法从winlogon desktop切换到Default desktop,一直挂在winlogon desktop上,这种情况与我的创建线程有关系吗?我的线程什么都没做啊,就是在GetMessage,然后发现消息后就调用WlxSasNotify。 其中的一个函数退出后系统就可能会挂在winlogon desktop上,有很少时候才表现正常 如 int WINAPI WlxLoggedOnSAS( PVOID pWlxContext, DWORD dwSasType, PVOID pReserved) { BOOL bExist; int iRet = WLX_SAS_ACTION_NONE; if(dwSasType == WLX_SAS_TYPE_SC_REMOVE) { bExist = DeviceExist((LPGUID)&GUID_CLASS_JANUS_LOCK); if(!bExist) iRet = WLX_SAS_ACTION_LOCK_WKSTA; } else iRet = MSWlxLoggedOnSAS( pWlxContext, dwSasType, pReserved ); return iRet; } |
|