词条 | WlxNegotiate |
释义 | 函数介绍自建的替换GINA必须实现WlxNegotiate函数,它是Winlogon调用的第一个GINA函数。WlxNegotiate允许GINA确认是否支持目前安装的Winlogon版本。 注:Windows Vista忽略GINA动态链接库(Vista及以后版本参考ICredentialProvider) 语法 BOOL WlxNegotiate( __in DWORD dwWinLogonVersion, __out PDWORD pdwDllVersion ); 参数 dwWinLogonVersion [in] 指定了将与GINA交互的Winlogon版本 pdwDllVersion [out] 指明GINA支持的Winlogon版本。这个值也被Winlogon用来决定传递哪个分发表(dispatch table)给接下来的WlxInitialize函数。这个值不能比dwWinLogonVersion的值大。 返回值 如果dwWinLogonVersion表示的Winlogon版本大于或等于返回的pdwDllVersion值,函数返回TRUE,Winlogon将继续初始化。 如果dwWinLogonVersion 小于pdwDllVersion,函数返回FALSE,Winlogon终止,系统不会启动。 附注 调用WlxNegotiate之前,Winlogon设置桌面状态,于是当前桌面为Winlogon桌面;Winlogon设置工作站状态,于是桌面是锁定的。 参数中的版本数宏定义所代表的Windows版本: GINA版本 对应的Windows版本 WLX_VERSION_1_0 Windows NT 3.5.0 WLX_VERSION_1_1 Windows NT 3.5.1 WLX_VERSION_1_2 Windows NT 4.0 WLX_VERSION_1_3 Windows 2000 WLX_VERSION_1_4 Windows 2003/XP 需求 支持的最低客户机 Windows 2000 Professional 支持的最低服务器 Windows 2000 Server 最终支持客户机 Windows XP 最终支持服务器 Windows Server 2003 头文件 Winwlx.h 代码示例代码来自于API sample -GINASTUB BOOL WINAPI WlxNegotiate (DWORD dwWinlogonVersion, DWORD * pdwDllVersion) { HINSTANCE hDll; DWORD dwWlxVersion = GINASTUB_VERSION; // Load MSGINA.DLL. if (!(hDll = LoadLibrary(REALGINA_PATH))) { return FALSE; } // Get pointers to WlxNegotiate function in the real MSGINA. pfWlxNegotiate = (PFWLXNEGOTIATE) GetProcAddress(hDll, "WlxNegotiate"); if (!pfWlxNegotiate) { return FALSE; } // Handle older version of Winlogon. if (dwWinlogonVersion < dwWlxVersion) { dwWlxVersion = dwWinlogonVersion; } // Negotiate with MSGINA for version that we can support. if (!pfWlxNegotiate(dwWlxVersion, &dwWlxVersion)) { return FALSE; } // Load the rest of the WLX functions from the real MSGINA. if (!MyInitialize(hDll, dwWlxVersion)) { return FALSE; } // Inform Winlogon which version to use. *pdwDllVersion = g_dwVersion = dwWlxVersion; return TRUE; } |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。