You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
4.0 KiB
163 lines
4.0 KiB
///////////////////////////////////////////////////
|
|
// fmlbpdm.c
|
|
//
|
|
// September.4,1997 H.Ishida (FPL)
|
|
//
|
|
// COPYRIGHT(C) FUJITSU LIMITED 1997
|
|
|
|
#include "fmlbp.h"
|
|
#include "fmdebug.h"
|
|
|
|
#ifdef KERNEL_MODE
|
|
|
|
#define SETLASTERROR(e) EngSetLastError(e)
|
|
|
|
#else // !KERNEL_MODE
|
|
|
|
#define SETLASTERROR(e) SetLastError(e)
|
|
|
|
#endif // !KERNEL_MODE
|
|
|
|
|
|
// MINI5 Export func.
|
|
BOOL APIENTRY OEMGetInfo(DWORD dwInfo, PVOID pBuffer, DWORD cbSize, PDWORD pcbNeeded)
|
|
{
|
|
VERBOSE(("[OEMGetInfo]\r\n"))
|
|
|
|
if(pcbNeeded == NULL){
|
|
SETLASTERROR(ERROR_INVALID_PARAMETER);
|
|
return FALSE;
|
|
}
|
|
|
|
*pcbNeeded = sizeof(DWORD);
|
|
if(NULL == pBuffer || sizeof(DWORD) > cbSize){
|
|
SETLASTERROR(ERROR_INSUFFICIENT_BUFFER);
|
|
return FALSE;
|
|
}
|
|
|
|
switch(dwInfo){
|
|
case OEMGI_GETSIGNATURE:
|
|
VERBOSE(("OEMGI_GETSIGNATURE\r\n"))
|
|
*(LPDWORD)pBuffer = FUFM_OEM_SIGNATURE;
|
|
break;
|
|
case OEMGI_GETINTERFACEVERSION:
|
|
VERBOSE(("OEMGI_GETINTERFACEVERSION\r\n"))
|
|
*(LPDWORD)pBuffer = PRINTER_OEMINTF_VERSION;
|
|
break;
|
|
case OEMGI_GETVERSION:
|
|
VERBOSE(("OEMGI_GETVERSION\r\n"))
|
|
*(LPDWORD)pBuffer = FUFM_OEM_VERSION;
|
|
break;
|
|
default:
|
|
VERBOSE(("invalid dwInfo\r\n"))
|
|
SETLASTERROR(ERROR_INVALID_PARAMETER);
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|
|
static BOOL BIsValidOEMDevModeParam(DWORD dwMode, POEMDMPARAM pOEMDevModeParam)
|
|
{
|
|
if(NULL == pOEMDevModeParam){
|
|
VERBOSE(("pOEMDevModeParam is NULL\r\n"))
|
|
return FALSE;
|
|
}
|
|
|
|
if(sizeof(OEMDMPARAM) > pOEMDevModeParam->cbSize){
|
|
VERBOSE(("pOEMDevModeParam->cbSize (%d) is less than sizeof(OEMDMPARAM)\r\n", pOEMDevModeParam->cbSize))
|
|
return FALSE;
|
|
}
|
|
|
|
if(NULL == pOEMDevModeParam->hPrinter){
|
|
VERBOSE(("pOEMDevModeParam->hPrinter is NULL\r\n"))
|
|
return FALSE;
|
|
}
|
|
|
|
if(NULL == pOEMDevModeParam->hModule){
|
|
VERBOSE(("pOEMDevModeParam->hModule is NULL\r\n"))
|
|
return FALSE;
|
|
}
|
|
|
|
if((0 != pOEMDevModeParam->cbBufSize) && (NULL == pOEMDevModeParam->pOEMDMOut)){
|
|
VERBOSE(("pOEMDevModeParam->cbBufSize is not 0, and, pOEMDMOut is NULL\r\n"))
|
|
return FALSE;
|
|
}
|
|
|
|
if((OEMDM_MERGE == dwMode) && (NULL == pOEMDevModeParam->pOEMDMIn)){
|
|
VERBOSE(("dwMode is OEMDM_MERGE && pOEMDMIn is NULL\r\n"))
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|
|
static void fufmInitOEMExtraData(PFUFM_OEM_EXTRADATA pFufmOEMExtra)
|
|
{
|
|
pFufmOEMExtra->dmExtraHdr.dwSize = sizeof(FUFM_OEM_EXTRADATA);
|
|
pFufmOEMExtra->dmExtraHdr.dwSignature = FUFM_OEM_SIGNATURE;
|
|
pFufmOEMExtra->dmExtraHdr.dwVersion = FUFM_OEM_VERSION;
|
|
}
|
|
|
|
|
|
|
|
static void fufmMergeOEMExtraData(
|
|
PFUFM_OEM_EXTRADATA pFufmOEMExtraIn,
|
|
PFUFM_OEM_EXTRADATA pFufmOEMExtraOut)
|
|
{
|
|
}
|
|
|
|
|
|
|
|
// MINI5 Export func.
|
|
BOOL APIENTRY OEMDevMode(DWORD dwMode, POEMDMPARAM pOEMDevModeParam)
|
|
{
|
|
VERBOSE(("[OEMDevMode]\r\n"))
|
|
|
|
if(BIsValidOEMDevModeParam(dwMode, pOEMDevModeParam) == FALSE){
|
|
VERBOSE(("invalid OEMDevModeParam\r\n"))
|
|
SETLASTERROR(ERROR_INVALID_PARAMETER);
|
|
return FALSE;
|
|
}
|
|
|
|
if(dwMode == OEMDM_SIZE){
|
|
pOEMDevModeParam->cbBufSize = sizeof(FUFM_OEM_EXTRADATA);
|
|
VERBOSE(("OEMDM_SIZE %d\r\n", pOEMDevModeParam->cbBufSize))
|
|
return TRUE;
|
|
}
|
|
|
|
if(sizeof(FUFM_OEM_EXTRADATA) > pOEMDevModeParam->cbBufSize){
|
|
VERBOSE(("cbBufSize %d\r\n", pOEMDevModeParam->cbBufSize))
|
|
SETLASTERROR(ERROR_INSUFFICIENT_BUFFER);
|
|
return FALSE;
|
|
}
|
|
|
|
switch(dwMode){
|
|
case OEMDM_DEFAULT:
|
|
VERBOSE(("OEMDM_DEFAULT\r\n"));
|
|
fufmInitOEMExtraData((PFUFM_OEM_EXTRADATA)pOEMDevModeParam->pOEMDMOut);
|
|
break;
|
|
case OEMDM_CONVERT:
|
|
VERBOSE(("OEMDM_CONVERT\r\n"));
|
|
fufmInitOEMExtraData((PFUFM_OEM_EXTRADATA)pOEMDevModeParam->pOEMDMOut);
|
|
break;
|
|
case OEMDM_MERGE:
|
|
VERBOSE(("OEMDM_MERGE\r\n"));
|
|
fufmMergeOEMExtraData((PFUFM_OEM_EXTRADATA)pOEMDevModeParam->pOEMDMIn,
|
|
(PFUFM_OEM_EXTRADATA)pOEMDevModeParam->pOEMDMOut);
|
|
break;
|
|
default:
|
|
VERBOSE(("invalid dwMode\r\n"));
|
|
SETLASTERROR(ERROR_INVALID_PARAMETER);
|
|
return FALSE;
|
|
break;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|
|
// end of fmlbpdm.c
|