我的Gina要求有这样的功能,用户可以用指纹识别代替WIn2000默认的用户验证;也可以用Win2000默认的用户认证。现在我遇到问题是,不能进行切换。我发现原因是:出在pWlxContext变量上,如果我用自己定义的函数去初始化pWlxContext,那么我的指纹认证部分是可用的;如果用标准的导出的函数,那么Win2000默认的用户认证是可用的。我怎样保证二者可用。
下面是我的部分代码:
 typedef struct {
  HANDLE hWlx;
  LPWSTR station;
  PWLX_DISPATCH_VERSION_1_3 pWlxFuncs;
  HANDLE hDllInstance;
  HANDLE UserToken;
} GINA_CONTEXT, *PGINA_CONTEXT;PGINA_CONTEXT pContext, p; WlxInitialize(LPWSTR lpWinsta, HANDLE hWlx, PVOID pvReserved,
              PVOID pWinlogonFunctions, PVOID *pWlxContext)
{
//下面是初始化pWlxContext,pWlxContext是传出参数
pContext = (PGINA_CONTEXT) LocalAlloc(LMEM_FIXED | LMEM_ZEROINIT, sizeof(GINA_CONTEXT));
*pWlxContext= (PVOID)pContext;
pContext->pWlxFuncs=(PWLX_DISPATCH_VERSION_1_3)pWinlogonFunctions;
    pWlxFunctions = (PWLX_DISPATCH_VERSION_1_3)pWinlogonFunctions;
    pContext->hWlx         = hWlx; pContext->station = lpWinsta;
    pContext->pWlxFuncs->WlxUseCtrlAltDel(hWlx);
fNew=TRUE;
}int WINAPI
WlxLoggedOutSAS(PVOID pWlxContext, DWORD dwSasType,
                PLUID pAuthenticationId, PSID pLogonSid,
                PDWORD pdwOptions, PHANDLE phToken,
                PWLX_MPR_NOTIFY_INFO pMprNotifyInfo,
                PVOID *   pProfile)
{ p = (PGINA_CONTEXT)pWlxContext;
 fStatus=p->pWlxFuncs->WlxDialogBoxParam(p->hWlx, ghInst,
                              (LPTSTR)MAKEINTRESOURCE(IDD_WELCOME),
                              NULL, WelcomeDlgProc, (LPARAM)p);
if(FALSE==fStatus)
{
fNew=FALSE;
}
else
{
fNew=TRUE;
}
if(FALSE==fNew)      
{
                    用标准Gina中导出的函数进行Logon
                    }
           else{
                    用指纹识别进行Logon
               }
}
请指教 ,一定给分