JDEBFRTN (ID) JDEBFWINAPI AcmePassCustomFIToW95630E (LPBHVRCOM lpBhvrCom, LPVOID lpVoid, LPDSD5800044A lpDS)
{
/************************************************************************
* Variable declarations
************************************************************************/
ID idReturn = ER_SUCCESS, idHandle = 0;
MATH_NUMERIC mnHandle;
HUSER hUser = (HUSER)NULL;
LPDSD5800044A pSavedParams = (LPDSD5800044A)NULL;
/************************************************************************
* Check for NULL pointers
************************************************************************/
if ((lpBhvrCom == (LPBHVRCOM) NULL) ||
(lpVoid == (LPVOID) NULL) ||
(lpDS == (LPDSD5800044A) NULL))
{
jdeErrorSet (lpBhvrCom, lpVoid, (ID) 0, _J("4363"), (LPVOID) NULL);
return ER_ERROR;
}
/************************************************************************
* Main Processing
************************************************************************/
/********** Get User Handle **********/
if(acmeInitBhvr(lpBhvrCom, lpVoid, &hUser, (JCHAR *)NULL, JDEDB_COMMIT_AUTO) != ER_SUCCESS)
return ER_ERROR;
switch(lpDS->nAction)
{
case E5800044_ACTION_GET:
MathCopy(&mnHandle, &lpDS->mnHandle);
ReverseMathNumeric(&mnHandle);
MathNumericToLong(&mnHandle, (long *)&idHandle);
if(!idHandle)
{
jdeErrorSet(lpBhvrCom, lpVoid, (ID) 0, _J("4363"), (LPVOID) NULL);
idReturn = ER_ERROR;
}
else
{
pSavedParams = jdeRemoveDataPtr(hUser, idHandle);
if(pSavedParams)
{
memcpy(lpDS, pSavedParams, sizeof(*lpDS));
jdeFree(pSavedParams);
}
else
{
jdeErrorSet(lpBhvrCom, lpVoid, (ID) 0, _J("4363"), (LPVOID) NULL);
idReturn = ER_ERROR;
}
}
break;
case E5800044_ACTION_SET:
pSavedParams = jdeAlloc(COMMON_POOL, sizeof(*pSavedParams), MEM_ZEROINIT);
if(pSavedParams)
{
idHandle = jdeStoreDataPtr(hUser, pSavedParams);
IDToMathNumeric(idHandle, &lpDS->mnHandle);
ReverseMathNumeric(&lpDS->mnHandle);
memcpy(pSavedParams, lpDS, sizeof(*pSavedParams));
}
else
idReturn = acmeErrorSetMalloc(lpBhvrCom, lpVoid, (ID)0);
break;
}
JDB_FreeBhvr(hUser);
return idReturn;
}