|
|
// =========================================================================
//
// CASIO PAGEPRESTO Universal Printer Driver for MS-Windows NT 5.0
//
// =========================================================================
//// CAPPLERES.C file for CASIO PAGEPRESTO CAPPL/Base Common DLL
#include "pdev.h"
#include "capplid.h"
#include "strsafe.h" // Security-Code 2002.3.6
#if DBG
# include "mydbg.h"
#endif
#define CCHMAXCMDLEN 256
#define STR_SELECTRES_240_3K \
"\x1B[1\x00\x03=5\x00\x1B[1\x00\x06=30240" #define STR_SELECTRES_400_3K \
"\x1B[1\x00\x03=5\x00\x1B[1\x00\x06=30400"
// ===== PaperSize =====
#define STR_LETTER_2000 \
"\x1B@0\x05\x1B@A\x07\x1B@B\x07" #define STR_LETTER_3000 \
"\x1B[1\x00\x03@06\x1B[1\x00\x03@18"
#define STR_A3_3000 \
"\x1B[1\x00\x03@00\x1B[1\x00\x03@10"
#define STR_A4_2000 \
"\x1B@0\x03\x1B@A\x05\x1B@B\x05" #define STR_A4_3000 \
"\x1B[1\x00\x03@02\x1B[1\x00\x03@13"
#define STR_B4_2000 \
"\x1B@0\x02\x1B@B\x04" #define STR_B4_3000 \
"\x1B[1\x00\x03@01\x1B[1\x00\x03@11"
#define STR_B5_2000 \
"\x1B@0\x04\x1B@A\x06\x1B@B\x06" #define STR_B5_3000 \
"\x1B[1\x00\x03@04\x1B[1\x00\x03@14"
#define STR_A5_3000 \
"\x1B[1\x00\x03@05\x1B[1\x00\x03@16"
#define STR_POSTCARD_2000 \
"\x1B@0\x0C\x1B@A\x0E\x1B@B\x0E" #define STR_POSTCARD_3000 \
"\x1B[1\x00\x03@0;\x1B[1\x00\x03@1="
#define STR_FREE_2000 \
"\x1B@0\x00\x00\x00\x00\x00\x00\x00\x00\x00" \ "\x1B@A\x03\x00\x00\x00\x00" \ "\x1B@B\x03\x00\x00\x00\x00" #define STR_FREE_3000 \
"\x1B@0\x00\x00\x00\x00\x00\x00\x00\x00\x00" \ "\x1B[1\x00\x06@2\x00\x00\x00\x00" \ "\x1B[1\x00\x03@1\x3F"
// ===== MPF Setting =====
#define OPT_NOSET "Option1"
#define OPT_A3 "Option2"
#define OPT_B4 "Option3"
#define OPT_A4 "Option4"
#define OPT_B5 "Option5"
#define OPT_LETTER "Option6"
#define OPT_POSTCARD "Option7"
#define OPT_A5 "Option8"
#define WRITESPOOLBUF(p, s, n) \
((p)->pDrvProcs->DrvWriteSpoolBuf(p, s, n))
#define DRVGETDRIVERSETTING(p, t, o, s, n, r) \
((p)->pDrvProcs->DrvGetDriverSetting(p, t, o, s, n, r))
#define PARAM(p,n) \
(*((p)+(n)))
#define MASTER_UNIT 1200
// ===== AutoFeed =====
const static BYTE AutoFeed_2000[] = { /* Auto Select */ 0x33, /* A3 */ 0x34, /* B4 */ 0x35, /* A4 */ 0x36, /* B5 */ 0x33, /* Letter */ 0x33, /* PostCard */ 0x33, /* MPF */ 0x33 /* A5 */ };
const static BYTE AutoFeed_3000[] = { /* Auto Select */ 0x38, /* A3 */ 0x34, /* B4 */ 0x35, /* A4 */ 0x36, /* B5 */ 0x37, /* Letter */ 0x37, /* PostCard */ 0x37, /* MPF */ 0x3B /* A5 */ };
BOOL BInitOEMExtraData( POEMUD_EXTRADATA pOEMExtra ) { // Initialize OEM Extra data.
pOEMExtra->dmExtraHdr.dwSize = sizeof(OEMUD_EXTRADATA); pOEMExtra->dmExtraHdr.dwSignature = OEM_SIGNATURE; pOEMExtra->dmExtraHdr.dwVersion = OEM_VERSION; return TRUE; }
BOOL BMergeOEMExtraData( POEMUD_EXTRADATA pdmIn, POEMUD_EXTRADATA pdmOut ) { return TRUE; }
PDEVOEM APIENTRY OEMEnablePDEV( PDEVOBJ pdevobj, PWSTR pPrinterName, ULONG cPatterns, HSURF *phsurfPatterns, ULONG cjGdiInfo, GDIINFO *pGdiInfo, ULONG cjDevInfo, DEVINFO *pDevInfo, DRVENABLEDATA *pded) { PMYPDEV pOEM;
VERBOSE(("OEMEnablePDEV - %08x\n", pdevobj));
if(!pdevobj->pdevOEM) { if(!(pdevobj->pdevOEM = MemAllocZ(sizeof(MYPDEV)))) { ERR(("Faild to allocate memory. (%d)\n", GetLastError())); return NULL; } }
pOEM = (PMYPDEV)pdevobj->pdevOEM;
pOEM->sRes = MASTER_UNIT / 240; // Default to 240dpi
pOEM->jFreePaper = 0; // Default to No(0)
// misc initializations, if any
return pdevobj->pdevOEM; }
VOID APIENTRY OEMDisablePDEV( PDEVOBJ pdevobj) { PMYPDEV pOEM = (PMYPDEV)pdevobj->pdevOEM;
VERBOSE(("OEMDisablePDEV - %08x\n", pdevobj));
if(pdevobj->pdevOEM) { MemFree(pdevobj->pdevOEM); pdevobj->pdevOEM = NULL; } return; }
BOOL APIENTRY OEMResetPDEV( PDEVOBJ pdevobjOld, PDEVOBJ pdevobjNew) { PMYPDEV pOld, pNew;
VERBOSE(("OEMResetPDEV - %08x, %08x\n", pdevobjOld, pdevobjNew));
if (NULL == (pOld = (PMYPDEV)pdevobjOld->pdevOEM) || NULL == (pNew = (PMYPDEV)pdevobjNew->pdevOEM)) { ERR(("Invalid PDEV\n")); return FALSE; }
*pNew = *pOld; return TRUE; }
static VOID EmitJobSetup( PDEVOBJ pdevobj, PMYPDEV pOEM ) { BYTE cmdbuf[CCHMAXCMDLEN]; WORD wlen = 0; BYTE jOutput[64]; DWORD dwNeeded; DWORD dwOptionsReturned;
if (pOEM->dwGeneral & FG_HAS_EMUL) { // Alster emulation mode setting
cmdbuf[wlen++] = 0x1B; cmdbuf[wlen++] = 'i'; cmdbuf[wlen++] = 'w'; cmdbuf[wlen++] = '0'; }
WRITESPOOLBUF(pdevobj, cmdbuf, wlen);
if (!DRVGETDRIVERSETTING( pdevobj, "MPFSetting", jOutput, sizeof(BYTE) * 64, &dwNeeded, &dwOptionsReturned)) { WARNING(("DrvGetDriverSetting(1) Failed\n")); pOEM->jMPFSetting = MPF_NOSET; } else { if (!strcmp(jOutput, OPT_A3)) { pOEM->jMPFSetting = MPF_A3; VERBOSE(("MPF_A3\n")); } else if (!strcmp(jOutput, OPT_B4)) { pOEM->jMPFSetting = MPF_B4; VERBOSE(("MPF_B4\n")); } else if (!strcmp(jOutput, OPT_A4)) { pOEM->jMPFSetting = MPF_A4; VERBOSE(("MPF_A4\n")); } else if (!strcmp(jOutput, OPT_B5)) { pOEM->jMPFSetting = MPF_B5; VERBOSE(("MPF_B5\n")); } else if (!strcmp(jOutput, OPT_A5)) { pOEM->jMPFSetting = MPF_A5; VERBOSE(("MPF_A5\n")); } else if (!strcmp(jOutput, OPT_LETTER)) { pOEM->jMPFSetting = MPF_LETTER; VERBOSE(("MPF_LETTER\n")); } else if (!strcmp(jOutput, OPT_POSTCARD)) { pOEM->jMPFSetting = MPF_POSTCARD; VERBOSE(("MPF_POSTCARD\n")); } else { pOEM->jMPFSetting = MPF_NOSET; VERBOSE(("MPF_NOSET\n")); } } }
static VOID LoadPaperSelectCmd( PDEVOBJ pdevobj, PMYPDEV pOEM, INT iPaperID ) {
switch (iPaperID) { case PS_LETTER: if (pOEM->jModel == MD_CP2000) { if (pOEM->jMPFSetting == MPF_LETTER) pOEM->jAutoSelect = AutoFeed_2000[PS_MPF - PS_SEGMENT]; else pOEM->jAutoSelect = AutoFeed_2000[iPaperID - PS_SEGMENT];
pOEM->cmdPaperSize.cmd = STR_LETTER_2000; pOEM->cmdPaperSize.cmdlen = sizeof(STR_LETTER_2000) - 1; } else { if (pOEM->jMPFSetting == MPF_LETTER) pOEM->jAutoSelect = AutoFeed_3000[PS_MPF - PS_SEGMENT]; else pOEM->jAutoSelect = AutoFeed_3000[iPaperID - PS_SEGMENT];
pOEM->cmdPaperSize.cmd = STR_LETTER_3000; pOEM->cmdPaperSize.cmdlen = sizeof(STR_LETTER_3000) - 1; }
break;
case PS_A3: // CP-3000 Only
if (pOEM->jMPFSetting == MPF_A3) pOEM->jAutoSelect = AutoFeed_3000[PS_MPF - PS_SEGMENT]; else pOEM->jAutoSelect = AutoFeed_3000[iPaperID - PS_SEGMENT];
pOEM->cmdPaperSize.cmd = STR_A3_3000; pOEM->cmdPaperSize.cmdlen = sizeof(STR_A3_3000) - 1;
break;
case PS_A4: if (pOEM->jModel == MD_CP2000) { if (pOEM->jMPFSetting == MPF_A4) pOEM->jAutoSelect = AutoFeed_2000[PS_MPF - PS_SEGMENT]; else pOEM->jAutoSelect = AutoFeed_2000[iPaperID - PS_SEGMENT];
pOEM->cmdPaperSize.cmd = STR_A4_2000; pOEM->cmdPaperSize.cmdlen = sizeof(STR_A4_2000) - 1; } else { if (pOEM->jMPFSetting == MPF_A4) pOEM->jAutoSelect = AutoFeed_3000[PS_MPF - PS_SEGMENT]; else pOEM->jAutoSelect = AutoFeed_3000[iPaperID - PS_SEGMENT];
pOEM->cmdPaperSize.cmd = STR_A4_3000; pOEM->cmdPaperSize.cmdlen = sizeof(STR_A4_3000) - 1; }
break;
case PS_B4: if (pOEM->jModel == MD_CP2000) { if (pOEM->jMPFSetting == MPF_B4) pOEM->jAutoSelect = AutoFeed_2000[PS_MPF - PS_SEGMENT]; else pOEM->jAutoSelect = AutoFeed_2000[iPaperID - PS_SEGMENT];
pOEM->cmdPaperSize.cmd = STR_B4_2000; pOEM->cmdPaperSize.cmdlen = sizeof(STR_B4_2000) - 1; } else { if (pOEM->jMPFSetting == MPF_B4) pOEM->jAutoSelect = AutoFeed_3000[PS_MPF - PS_SEGMENT]; else pOEM->jAutoSelect = AutoFeed_3000[iPaperID - PS_SEGMENT];
pOEM->cmdPaperSize.cmd = STR_B4_3000; pOEM->cmdPaperSize.cmdlen = sizeof(STR_B4_3000) - 1; }
break;
case PS_B5: if (pOEM->jModel == MD_CP2000) { if (pOEM->jMPFSetting == MPF_B5) pOEM->jAutoSelect = AutoFeed_2000[PS_MPF - PS_SEGMENT]; else pOEM->jAutoSelect = AutoFeed_2000[iPaperID - PS_SEGMENT];
pOEM->cmdPaperSize.cmd = STR_B5_2000; pOEM->cmdPaperSize.cmdlen = sizeof(STR_B5_2000) - 1; } else { if (pOEM->jMPFSetting == MPF_B5) pOEM->jAutoSelect = AutoFeed_3000[PS_MPF - PS_SEGMENT]; else pOEM->jAutoSelect = AutoFeed_3000[iPaperID - PS_SEGMENT];
pOEM->cmdPaperSize.cmd = STR_B5_3000; pOEM->cmdPaperSize.cmdlen = sizeof(STR_B5_3000) - 1; }
break;
case PS_A5: // CP-3000 Only
if (pOEM->jMPFSetting == MPF_A5) pOEM->jAutoSelect = AutoFeed_3000[PS_MPF - PS_SEGMENT]; else pOEM->jAutoSelect = AutoFeed_3000[iPaperID - PS_SEGMENT];
pOEM->cmdPaperSize.cmd = STR_A5_3000; pOEM->cmdPaperSize.cmdlen = sizeof(STR_A5_3000) - 1;
break;
case PS_POSTCARD: if (pOEM->jModel == MD_CP2000) { if (pOEM->jMPFSetting == MPF_POSTCARD) pOEM->jAutoSelect = AutoFeed_2000[PS_MPF - PS_SEGMENT]; else pOEM->jAutoSelect = AutoFeed_2000[iPaperID - PS_SEGMENT];
pOEM->cmdPaperSize.cmd = STR_POSTCARD_2000; pOEM->cmdPaperSize.cmdlen = sizeof(STR_POSTCARD_2000) - 1; } else { if (pOEM->jMPFSetting == MPF_POSTCARD) pOEM->jAutoSelect = AutoFeed_3000[PS_MPF - PS_SEGMENT]; else pOEM->jAutoSelect = AutoFeed_3000[iPaperID - PS_SEGMENT];
pOEM->cmdPaperSize.cmd = STR_POSTCARD_3000; pOEM->cmdPaperSize.cmdlen = sizeof(STR_POSTCARD_3000) - 1; } break; } }
INT APIENTRY OEMCommandCallback( PDEVOBJ pdevobj, DWORD dwCmdCbID, DWORD dwCount, PDWORD pdwParams ) { PMYPDEV pOEM; BYTE cmdbuf[CCHMAXCMDLEN]; WORD wlen; WORD wTemp, i; WORD wDestX, wDestY; INT iRet = 0; DWORD dwTemp; WORD wVirPapX1; WORD wVirPapY1; WORD wVirPapX2; WORD wVirPapY2; WORD wPapLenX; WORD wPapLenY;
pOEM = (PMYPDEV)MINIPDEV_DATA(pdevobj);
#if DBG
{ int i, max; for (i = 0; i < (max = sizeof(MyCallbackID) / sizeof(MyCallbackID[0])); i++) { if (MyCallbackID[i].dwID == dwCmdCbID){ VERBOSE(("%s PARAMS: %d\n", MyCallbackID[i].S, dwCount)); break; } } if (i == max) WARNING(("%d is Invalid ID\n", dwCmdCbID)); } #endif
ASSERT(VALID_PDEVOBJ(pdevobj));
wlen = 0;
//
// fill in printer commands
//
switch (dwCmdCbID) {
case RES_SELECTRES_240:
pOEM->wOldX = pOEM->wOldY = 0; pOEM->sRes = MASTER_UNIT / 240; WRITESPOOLBUF(pdevobj, STR_SELECTRES_240_3K, sizeof(STR_SELECTRES_240_3K) - 1); break;
case RES_SELECTRES_400:
pOEM->wOldX = pOEM->wOldY = 0; pOEM->sRes = MASTER_UNIT / 400; WRITESPOOLBUF(pdevobj, STR_SELECTRES_400_3K, sizeof(STR_SELECTRES_400_3K) - 1); break;
case CM_XM_ABS: case CM_YM_ABS: switch (dwCmdCbID) { case CM_XM_ABS: wDestX = (WORD)(PARAM(pdwParams, 0) / pOEM->sRes); wDestY = pOEM->wOldY; pOEM->wOldX = wDestX; break; case CM_YM_ABS: wDestX = pOEM->wOldX; wDestY = (WORD)(PARAM(pdwParams, 1) / pOEM->sRes); pOEM->wOldY = wDestY; break; }
// ESC '\' '9' XX YY
// wDestX = (WORD)(PARAM(pdwParams, 0) / pOEM->sRes);
// wDestY = (WORD)(PARAM(pdwParams, 1) / pOEM->sRes);
VERBOSE(("(wDestX, wDestY): (%d, %d)\n", wDestX, wDestY));
cmdbuf[wlen++] = 0x1b; cmdbuf[wlen++] = 0x5c; cmdbuf[wlen++] = 0x39; cmdbuf[wlen++] = (BYTE)((wDestX >> 8) | 0x80); cmdbuf[wlen++] = (BYTE)(wDestX); cmdbuf[wlen++] = (BYTE)(wDestY >> 8); cmdbuf[wlen++] = (BYTE)(wDestY);
WRITESPOOLBUF(pdevobj, cmdbuf, wlen);
// Set return value accordingly. Unidrv expects
// the values to be retuned in device's unit here.
switch (dwCmdCbID) { case CM_XM_ABS: iRet = wDestX; break; case CM_YM_ABS: iRet = wDestY; break; }
break;
case PS_LETTER: case PS_A3: case PS_A4: case PS_B4: case PS_B5: case PS_A5: case PS_POSTCARD: pOEM->jFreePaper = 0; // No(0)
LoadPaperSelectCmd(pdevobj, pOEM, (INT)dwCmdCbID); break;
case PS_FREE: pOEM->jFreePaper = 1; // yes(1)
if (pOEM->jModel == MD_CP2000) { pOEM->stFreePaperSize.wX = (WORD)(PARAM(pdwParams, 0) / pOEM->sRes); // dot
pOEM->stFreePaperSize.wY = (WORD)(PARAM(pdwParams, 1) / pOEM->sRes); pOEM->jAutoSelect = AutoFeed_2000[PS_MPF - PS_SEGMENT]; // MPF
} else { pOEM->stFreePaperSize.wX = (WORD)(PARAM(pdwParams, 0) / pOEM->sRes); // dot
pOEM->stFreePaperSize.wY = (WORD)(PARAM(pdwParams, 1) / pOEM->sRes);
dwTemp = PARAM(pdwParams, 0); // 2001/02/27 ->
// dwTemp = (dwTemp * 254) / MASTER_UNIT; // 0.1mm a unit
// pOEM->stFreePaperSize.wXmm = (WORD)((dwTemp + 5) / 10); // 1mm a unit, round
dwTemp = (dwTemp * 2540) / MASTER_UNIT; // 0.01mm a unit
pOEM->stFreePaperSize.wXmm = (WORD)((dwTemp + 99) / 100); // 1mm a unit, roundup
// 2001/02/27 <-
dwTemp = PARAM(pdwParams, 1); // 2001/02/27 ->
// dwTemp = (dwTemp * 254) / MASTER_UNIT; // 0.1mm a unit
// pOEM->stFreePaperSize.wYmm = (WORD)((dwTemp + 5) / 10); // 1mm a unit, round
dwTemp = (dwTemp * 2540) / MASTER_UNIT; // 0.01mm a unit
pOEM->stFreePaperSize.wYmm = (WORD)((dwTemp + 99) / 100); // 1mm a unit, roundup
// 2001/02/27 <-
pOEM->jAutoSelect = AutoFeed_3000[PS_MPF - PS_SEGMENT]; // MPF
}
break;
case AUTOFEED: cmdbuf[wlen++] = 0x1B; cmdbuf[wlen++] = '@'; cmdbuf[wlen++] = ')'; cmdbuf[wlen++] = pOEM->jAutoSelect;
WRITESPOOLBUF(pdevobj, cmdbuf, wlen); break;
case CBID_PORT: case CBID_LAND: // Page Format
cmdbuf[wlen++] = 0x1B; cmdbuf[wlen++] = '='; cmdbuf[wlen++] = '4'; cmdbuf[wlen++] = 0x00;
// Orientaion
cmdbuf[wlen++] = 0x1B; cmdbuf[wlen++] = '@'; if (dwCmdCbID == CBID_LAND) cmdbuf[wlen++] = '3'; else cmdbuf[wlen++] = '2';
WRITESPOOLBUF(pdevobj, cmdbuf, wlen);
// PaperSize
if (pOEM->jFreePaper == 0) { WRITESPOOLBUF(pdevobj, pOEM->cmdPaperSize.cmd, pOEM->cmdPaperSize.cmdlen); } else { if (pOEM->jModel == MD_CP2000) { if (dwCmdCbID == CBID_LAND) { wVirPapX1 = 0; wVirPapY1 = 0; wVirPapX2 = pOEM->stFreePaperSize.wY - ((240 / pOEM->sRes) * 2); wVirPapY2 = pOEM->stFreePaperSize.wX - ((400 / pOEM->sRes) * 2); wPapLenX = pOEM->stFreePaperSize.wY; wPapLenY = pOEM->stFreePaperSize.wX; } else { wVirPapX1 = 0; wVirPapY1 = 0; wVirPapX2 = pOEM->stFreePaperSize.wX - ((400 / pOEM->sRes) * 2); wVirPapY2 = pOEM->stFreePaperSize.wY - ((240 / pOEM->sRes) * 2); wPapLenX = pOEM->stFreePaperSize.wX; wPapLenY = pOEM->stFreePaperSize.wY; }
wlen = 0; wlen = sizeof(STR_FREE_2000) - 1; memcpy(cmdbuf, STR_FREE_2000, wlen);
// VirtualPaperSize
cmdbuf[ 4] = HIBYTE(wVirPapX1); // X1
cmdbuf[ 5] = LOBYTE(wVirPapX1); cmdbuf[ 6] = HIBYTE(wVirPapY1); // Y1
cmdbuf[ 7] = LOBYTE(wVirPapY1); cmdbuf[ 8] = HIBYTE(wVirPapX2); // X2
cmdbuf[ 9] = LOBYTE(wVirPapX2); cmdbuf[10] = HIBYTE(wVirPapY2); // Y2
cmdbuf[11] = LOBYTE(wVirPapY2); // PaperSize (APF)
cmdbuf[16] = HIBYTE(wPapLenX); // X1
cmdbuf[17] = LOBYTE(wPapLenX); cmdbuf[18] = HIBYTE(wPapLenY); // Y1
cmdbuf[19] = LOBYTE(wPapLenY); // MPF-PaperSize
cmdbuf[24] = HIBYTE(wPapLenX); // X1
cmdbuf[25] = LOBYTE(wPapLenX); cmdbuf[26] = HIBYTE(wPapLenY); // Y1
cmdbuf[27] = LOBYTE(wPapLenY); WRITESPOOLBUF(pdevobj, cmdbuf, wlen); } else {
if (dwCmdCbID == CBID_LAND) { wVirPapX1 = 0; wVirPapY1 = 0; wVirPapX2 = pOEM->stFreePaperSize.wY - ((240 / pOEM->sRes) * 2); wVirPapY2 = pOEM->stFreePaperSize.wX - ((240 / pOEM->sRes) * 2); wPapLenX = pOEM->stFreePaperSize.wYmm; wPapLenY = pOEM->stFreePaperSize.wXmm; } else { wVirPapX1 = 0; wVirPapY1 = 0; wVirPapX2 = pOEM->stFreePaperSize.wX - ((240 / pOEM->sRes) * 2); wVirPapY2 = pOEM->stFreePaperSize.wY - ((240 / pOEM->sRes) * 2); wPapLenX = pOEM->stFreePaperSize.wXmm; wPapLenY = pOEM->stFreePaperSize.wYmm; } wlen = sizeof(STR_FREE_3000) - 1; memcpy(cmdbuf, STR_FREE_3000, wlen);
// VirtualPaperSize
cmdbuf[ 4] = HIBYTE(wVirPapX1); // X1
cmdbuf[ 5] = LOBYTE(wVirPapX1); cmdbuf[ 6] = HIBYTE(wVirPapY1); // Y1
cmdbuf[ 7] = LOBYTE(wVirPapY1); cmdbuf[ 8] = HIBYTE(wVirPapX2); // X2
cmdbuf[ 9] = LOBYTE(wVirPapX2); cmdbuf[10] = HIBYTE(wVirPapY2); // Y2
cmdbuf[11] = LOBYTE(wVirPapY2);
// MPF-PaperSize
cmdbuf[19] = HIBYTE(wPapLenX); // X
cmdbuf[20] = LOBYTE(wPapLenX); cmdbuf[21] = HIBYTE(wPapLenY); // Y
cmdbuf[22] = LOBYTE(wPapLenY);
WRITESPOOLBUF(pdevobj, cmdbuf, wlen); } } break;
case PRN_2000: pOEM->jModel = MD_CP2000; pOEM->dwGeneral &= ~FG_HAS_EMUL; EmitJobSetup(pdevobj, pOEM); break;
case PRN_2000W: pOEM->jModel = MD_CP2000; pOEM->dwGeneral |= FG_HAS_EMUL; EmitJobSetup(pdevobj, pOEM); break;
case PRN_3000: pOEM->jModel = MD_CP3000; pOEM->dwGeneral |= FG_HAS_EMUL; EmitJobSetup(pdevobj, pOEM); break; }
return iRet; }
|