VC实现Win2000下屏蔽Ctrl+Alt+Del键(5)
// Winlogon.exe调用该函数得到gina dll显示的状态信息
// 直接返回TRUE表示信息已经接收
BOOL WINAPI WlxGetStatusMessage(PVOID pWlxContext,
DWORD *pdwOptions,
PWSTR pMessage,
DWORD dwBufferSize)
{
return theApp.MyWlxGetStatusMessage(pWlxContext,pdwOptions,pMessage,dwBufferSize);
// return TRUE;
}
// 在试图锁定工作站之前Winlogon.exe调用该函数,判断是否可以锁定
// 直接返回FALSE表示不能锁定
BOOL WINAPI WlxIsLockOk(PVOID pWlxContext)
{
return theApp.MyWlxIsLockOk(pWlxContext);
// return FALSE;
}
// 在试图注销时Winlogon.exe调用该函数,判断能否注销
// 直接返回FALSE表示不能注销
BOOL WINAPI WlxIsLogoffOk(PVOID pWlxContext)
{
return theApp.MyWlxIsLogoffOk(pWlxContext);
// return FALSE;
}
// 当系统处于登陆成功,没有锁定的状态下
// Winlogon接收到SAS事件,于是调用该函数
// 现屏蔽所有事件,直接返回
int WINAPI WlxLoggedOnSAS(PVOID pWlxContext,
DWORD dwSasType,
PVOID pReserved)
{
return WLX_SAS_ACTION_NONE;
}
// 在没有任何一个用户登陆的情况下,Winlogon.exe接收到SAS事件调用该函数
int WINAPI WlxLoggedOutSAS(PVOID pWlxContext,
DWORD dwSasType,
PLUID pAuthenticationId,
PSID pLogonSid,
PDWORD pdwOptions,
PHANDLE phToken,
PWLX_MPR_NOTIFY_INFO pMprNotifyInfo,
PVOID * pProfile)
{
return theApp.MyWlxLoggedOutSAS(pWlxContext,dwSasType,pAuthenticationId,
pLogonSid,pdwOptions,phToken,pMprNotifyInfo,pProfile);
}
// Winlogon.exe调用该函数,通知gina dll用户注销操作
// 允许gina dll做出相应的处理
VOID WINAPI WlxLogoff(PVOID pWlxContext)
{
theApp.MyWlxLogoff(pWlxContext);
}
// Winlogon.exe调用该函数收集有效的认证信息
// 返回TRUE表示用户被识别
BOOL WINAPI WlxNetworkProviderLoad(PVOID pWlxContext,
PWLX_MPR_NOTIFY_INFO pNprNotifyInfo)
{
- 上一篇:如何用VC++控制多光驱
- 下一篇:VC++ 替换 exe 可执行文件的图标