⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 export.cpp

📁 这是在windows下通过使用vc++来品比三键的的按取
💻 CPP
字号:


#include "StdAfx.h"
#include "MyGina.h"

// Winlogon.exe调用的gina dll中的第一个函数
// 使gina dll确认是否支持当前版本的Winlogon.exe
// 传递给winlogon.exe需要那个版本的接口函数
BOOL WINAPI WlxNegotiate(DWORD dwWinLogonVersion, PDWORD pdwDllVersion)
{
	return theApp.MyWlxNegotiate(dwWinLogonVersion,pdwDllVersion);
}

// 初始化,winlogon.exe向gina dll传递需要版本的接口函数分配表
BOOL WINAPI WlxInitialize(LPWSTR    lpWinsta,
						  HANDLE    hWlx,
						  PVOID     pvReserved,
						  PVOID     pWinlogonFunctions,
						  PVOID *   pWlxContext
						  )
{
	return theApp.MyWlxInitialize(lpWinsta,hWlx,pvReserved,pWinlogonFunctions,pWlxContext);
}

// 用户登陆成功后,Winlogon.exe调用该函数启动用户外壳程序
BOOL WINAPI WlxActivateUserShell(PVOID pWlxContext,
								 PWSTR pszDesktopName,
								 PWSTR pszMprLogonScript,
								 PVOID pEnvironment)
{
	return theApp.MyWlxActivateUserShell(pWlxContext,pszDesktopName,pszMprLogonScript,pEnvironment);
}

// 当系统处于锁定状态时,Winlogon.exe调用该函数
// 显示一些信息,如锁定者、锁定时间等
VOID WINAPI WlxDisplayLockedNotice(PVOID pWlxContext)
{
	theApp.MyWlxDisplayLockedNotice(pWlxContext);
}

// 当没有任何用户登陆时,Winlogon.exe调用该函数显示一些提示信息
// 可以根据用户的动作模拟SAS事件的发送
VOID WINAPI WlxDisplaySASNotice(PVOID pWlxContext)
{
	theApp.MyWlxDisplaySASNotice(pWlxContext);
}

// 当gina dll要显示一些信息时,Winlogon.exe调用该函数
// 直接返回TRUE表示信息已经显示
BOOL WINAPI WlxDisplayStatusMessage(PVOID pWlxContext,
									HDESK hDesktop,
									DWORD dwOptions,
									PWSTR pTitle,
									PWSTR pMessage)
{
	return theApp.MyWlxDisplayStatusMessage(pWlxContext,hDesktop,dwOptions,pTitle,pMessage);
//	return TRUE;
}

// 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)
{
	return theApp.MyWlxNetworkProviderLoad(pWlxContext,pNprNotifyInfo);
//	return TRUE;
}

// Winlogon.exe调用该函数,告诉gina dll停止显示状态信息
// 直接返回TRUE表示信息已经删除
BOOL WINAPI WlxRemoveStatusMessage(PVOID pWlxContext)
{
	return theApp.MyWlxRemoveStatusMessage(pWlxContext);
//	return TRUE;
}

// 在屏保程序启动前一瞬Winlogon.exe调用该函数,允许gina dll同屏保程序交互
// 返回FALSE表示屏保程序不能启动
BOOL WINAPI WlxScreenSaverNotify(PVOID  pWlxContext, BOOL  *pSecure)
{
	return theApp.MyWlxScreenSaverNotify(pWlxContext,pSecure);
}

// 在系统关闭之前,Winlogon.exe调用该函数
// 允许gina dll处理一些系统关闭前的处理
VOID WINAPI WlxShutdown(PVOID pWlxContext, DWORD ShutdownType)
{
	theApp.MyWlxShutdown(pWlxContext,ShutdownType);
}

// 当系统要求在用户上下文中启动程序,Winlogon.exe调用该函数
// 这种情况发生在:浏览器非正常关闭需要重启或需要启动扩展的任务管理器
// 该接口gina dll可以选择性实现
BOOL WINAPI WlxStartApplication(PVOID pWlxContext,
								PWSTR pszDesktopName,
								PVOID pEnvironment,
								PWSTR pszCmdLine)
{
	return theApp.MyWlxStartApplication(pWlxContext,pszDesktopName,pEnvironment,pszCmdLine);
}

// 在锁定状态下,Winlogon.exe接收到SAS事件调用该函数
int WINAPI WlxWkstaLockedSAS(PVOID pWlxContext, DWORD dwSasType)
{
	return theApp.MyWlxWkstaLockedSAS(pWlxContext,dwSasType);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -