/*****************************************************************/ /** Microsoft LAN Manager **/ /** Copyright(c) Microsoft Corp., 1987-1990 **/ /*****************************************************************/ /***************************************************************************\ * * Module Name: PMSPL.H * * OS/2 Presentation Manager Spooler constants, types and function declarations * * Copyright (c) 1987 IBM Corporation * * ============================================================================= * * The following symbols are used in this file for conditional sections. * * INCL_SPLERRORS - defined if INCL_ERRORS defined * INCL_SPLFSE - file system emulation calls * \***************************************************************************/ /* if error definitions are required then allow Spooler errors */ #ifdef INCL_ERRORS #define INCL_SPLERRORS #endif /* INCL_ERRORS */ /* common types and constants ** ========================== */ #define SPLENTRY pascal far #ifndef FARENTRY #define FARENTRY pascal far #endif /* Names of various OS2SYS.INI spooler variables */ #define SPL_INI_SPOOLER "PM_SPOOLER" #define SPL_INI_QUEUE "PM_SPOOLER_QUEUE" #define SPL_INI_PRINTER "PM_SPOOLER_PRINTER" #define SPL_INI_PRINTERDESCR "PM_SPOOLER_PRINTER_DESCR" #define SPL_INI_QUEUEDESCR "PM_SPOOLER_QUEUE_DESCR" #define SPL_INI_QUEUEDD "PM_SPOOLER_QUEUE_DD" #define SPL_INI_QUEUEDDDATA "PM_SPOOLER_QUEUE_DDDATA" /* General SPL return values */ #define SPL_ERROR 0L #define SPL_OK 1L /* handle to a spool file */ typedef LHANDLE HSPL; /* hspl */ /* Used in recording of PM_Q_STD data via SplStdxxx calls */ typedef LHANDLE HSTD; /* hstd */ typedef HSTD far *PHSTD; /* spooler manager open data */ typedef PSZ FAR *PQMOPENDATA; /* pqmdop */ /*** Spooler Queue manager Interface */ HSPL SPLENTRY SplQmOpen( PSZ, LONG, PQMOPENDATA ); BOOL SPLENTRY SplQmStartDoc( HSPL, PSZ ); BOOL SPLENTRY SplQmWrite( HSPL, LONG, PBYTE ); BOOL SPLENTRY SplQmEndDoc( HSPL ); BOOL SPLENTRY SplQmClose( HSPL ); BOOL SPLENTRY SplQmAbort( HSPL ); BOOL SPLENTRY SplQmAbortDoc( HSPL ); #ifdef INCL_SPLFSE /*** Direct Device File System Interface */ USHORT SPLENTRY PrtOpen( PSZ, PUSHORT, PUSHORT, ULONG, USHORT, USHORT, USHORT, ULONG ); USHORT SPLENTRY PrtClose( HFILE ); USHORT SPLENTRY PrtWrite( HFILE, PCH, USHORT, PUSHORT ); USHORT SPLENTRY PrtDevIOCtl( PVOID, PVOID, USHORT, USHORT, HFILE ); #endif /* include File System Emulation functions */ /*** Spooler Queue Processor interface */ BOOL SPLENTRY SplQpQueryDt( PLONG, PSZ FAR * ); BOOL SPLENTRY SplQpInstall( HWND ); /* Style for SplMessageBox */ /* Same as for WinMsgBox see PMWIN.H for details */ /*** Spooler message interface */ USHORT SPLENTRY SplMessageBox( PSZ, USHORT, USHORT, PSZ, PSZ, USHORT, USHORT ); /*** PM_Q_STD datatype functions */ BOOL SPLENTRY SplStdOpen( HDC ); BOOL SPLENTRY SplStdClose( HDC ); BOOL SPLENTRY SplStdStart( HDC ); HSTD SPLENTRY SplStdStop( HDC ); BOOL SPLENTRY SplStdDelete( HSTD ); BOOL SPLENTRY SplStdGetBits( HSTD, LONG, LONG, PCH ); LONG SPLENTRY SplStdQueryLength( HSTD ); /* Error information and return codes ** ================================== */ /* Error information for SplMessageBox */ #define SPLINFO_QPERROR 0x0001 #define SPLINFO_DDERROR 0x0002 #define SPLINFO_SPLERROR 0x0004 #define SPLINFO_OTHERERROR 0x0080 #define SPLINFO_INFORMATION 0x0100 /* @P3C */ #define SPLINFO_WARNING 0x0200 /* @P3C */ #define SPLINFO_ERROR 0x0400 /* @P3C */ #define SPLINFO_SEVERE 0x0800 /* @P3C */ #define SPLINFO_USERINTREQD 0x1000 /* Error Data for SplMessageBox */ #define SPLDATA_PRINTERJAM 0x0001 #define SPLDATA_FORMCHGREQD 0x0002 #define SPLDATA_CARTCHGREQD 0x0004 #define SPLDATA_PENCHGREQD 0x0008 #define SPLDATA_DATAERROR 0x0010 #define SPLDATA_UNEXPECTERROR 0x0020 #define SPLDATA_OTHER 0x8000 /* return code for SplStdQueryLength */ #define SSQL_ERROR (-1L) #ifdef INCL_SPLERRORS #include #endif /* INCL_SPLERRORS */ /* length for character arrays in structures (excluding zero terminator) */ #define CNLEN 15 /* Computer name length */ #define UNLEN 20 /* Maximum user name length */ #define QNLEN 12 /* Queue name maximum length */ #define PDLEN 8 /* Print destination length */ #define DTLEN 9 /* Spool file data type */ /* e.g. PM_Q_STD,PM_Q_RAW */ #define QP_DATATYPE_SIZE 15 /* returned by SplQpQueryDt */ #define DRIV_DEVICENAME_SIZE 31 /* see DRIVDATA struc */ #define DRIV_NAME_SIZE 8 /* name of device driver */ #define PRINTERNAME_SIZE 32 /* max printer name length */ #define FORMNAME_SIZE 31 /* max form name length */ #define MAXCOMMENTSZ 48 /* queue comment length */ #define DEFAULT_LM_PROC "LMPRINT" typedef unsigned SPLERR; /* err */ typedef struct _PRJINFO { /* prj1 */ USHORT uJobId; CHAR szUserName[UNLEN+1]; CHAR pad_1; CHAR szNotifyName[CNLEN+1]; CHAR szDataType[DTLEN+1]; PSZ pszParms; USHORT uPosition; USHORT fsStatus; PSZ pszStatus; ULONG ulSubmitted; ULONG ulSize; PSZ pszComment; } PRJINFO; typedef PRJINFO far *PPRJINFO; typedef PRJINFO near *NPPRJINFO; typedef struct _PRJINFO2 { /* prj2 */ USHORT uJobId; USHORT uPriority; PSZ pszUserName; USHORT uPosition; USHORT fsStatus; ULONG ulSubmitted; ULONG ulSize; PSZ pszComment; PSZ pszDocument; } PRJINFO2; typedef PRJINFO2 far *PPRJINFO2; typedef PRJINFO2 near *NPPRJINFO2; typedef struct _PRJINFO3 { /* prj */ USHORT uJobId; USHORT uPriority; PSZ pszUserName; USHORT uPosition; USHORT fsStatus; ULONG ulSubmitted; ULONG ulSize; PSZ pszComment; PSZ pszDocument; PSZ pszNotifyName; PSZ pszDataType; PSZ pszParms; PSZ pszStatus; PSZ pszQueue; PSZ pszQProcName; PSZ pszQProcParms; PSZ pszDriverName; PDRIVDATA pDriverData; PSZ pszPrinterName; } PRJINFO3; typedef PRJINFO3 far *PPRJINFO3; typedef PRJINFO3 near *NPPRJINFO3; typedef struct _PRDINFO { /* prd1 */ CHAR szName[PDLEN+1]; CHAR szUserName[UNLEN+1]; USHORT uJobId; USHORT fsStatus; PSZ pszStatus; USHORT time; } PRDINFO; typedef PRDINFO far *PPRDINFO; typedef PRDINFO near *NPPRDINFO; typedef struct _PRDINFO3 { /* prd */ PSZ pszPrinterName; PSZ pszUserName; PSZ pszLogAddr; USHORT uJobId; USHORT fsStatus; PSZ pszStatus; PSZ pszComment; PSZ pszDrivers; USHORT time; USHORT usTimeOut; } PRDINFO3; typedef PRDINFO3 far *PPRDINFO3; typedef PRDINFO3 near *NPPRDINFO3; typedef struct _PRQINFO { /* prq1 */ CHAR szName[QNLEN+1]; CHAR pad_1; USHORT uPriority; USHORT uStartTime; USHORT uUntilTime; PSZ pszSepFile; PSZ pszPrProc; PSZ pszDestinations; PSZ pszParms; PSZ pszComment; USHORT fsStatus; USHORT cJobs; } PRQINFO; typedef PRQINFO far *PPRQINFO; typedef PRQINFO near *NPPRQINFO; typedef struct _PRQINFO3 { /* prq */ PSZ pszName; USHORT uPriority; USHORT uStartTime; USHORT uUntilTime; USHORT pad1; PSZ pszSepFile; PSZ pszPrProc; PSZ pszParms; PSZ pszComment; USHORT fsStatus; USHORT cJobs; PSZ pszPrinters; PSZ pszDriverName; PDRIVDATA pDriverData; } PRQINFO3; typedef PRQINFO3 far *PPRQINFO3; typedef PRQINFO3 near *NPPRQINFO3; /* * structure for DosPrintJobGetId */ typedef struct _PRIDINFO { /* prjid */ USHORT uJobId; CHAR szServer[CNLEN + 1]; CHAR szQName[QNLEN+1]; CHAR pad_1; } PRIDINFO; typedef PRIDINFO far *PPRIDINFO; typedef PRIDINFO near *NPPRIDINFO; /**************************************************************** * * * Function prototypes * * * ****************************************************************/ SPLERR SPLENTRY DosPrintDestEnum( PSZ pszServer, USHORT uLevel, PBYTE pbBuf, USHORT cbBuf, PUSHORT pcReturned, PUSHORT pcTotal ); SPLERR SPLENTRY DosPrintDestControl( PSZ pszServer, PSZ pszDevName, USHORT uControl ); SPLERR SPLENTRY DosPrintDestGetInfo( PSZ pszServer, PSZ pszName, USHORT uLevel, PBYTE pbBuf, USHORT cbBuf, PUSHORT pcbNeeded ); SPLERR SPLENTRY DosPrintDestAdd( PSZ pszServer, USHORT uLevel, PBYTE pbBuf, USHORT cbBuf ); SPLERR SPLENTRY DosPrintDestSetInfo( PSZ pszServer, PSZ pszName, USHORT uLevel, PBYTE pbBuf, USHORT cbBuf, USHORT uParmNum ); SPLERR SPLENTRY DosPrintDestDel( PSZ pszServer, PSZ pszPrinterName ); SPLERR SPLENTRY DosPrintQEnum( PSZ pszServer, USHORT uLevel, PBYTE pbBuf, USHORT cbBuf, PUSHORT pcReturned, PUSHORT pcTotal ); SPLERR SPLENTRY DosPrintQGetInfo( PSZ pszServer, PSZ pszQueueName, USHORT uLevel, PBYTE pbBuf, USHORT cbBuf, PUSHORT pcbNeeded ); SPLERR SPLENTRY DosPrintQSetInfo( PSZ pszServer, PSZ pszQueueName, USHORT uLevel, PBYTE pbBuf, USHORT cbBuf, USHORT uParmNum ); SPLERR SPLENTRY DosPrintQPause( PSZ pszServer, PSZ pszQueueName ); SPLERR SPLENTRY DosPrintQContinue( PSZ pszServer, PSZ pszQueueName ); SPLERR SPLENTRY DosPrintQPurge( PSZ pszServer, PSZ pszQueueName ); SPLERR SPLENTRY DosPrintQAdd( PSZ pszServer, USHORT uLevel, PBYTE pbBuf, USHORT cbBuf ); SPLERR SPLENTRY DosPrintQDel( PSZ pszServer, PSZ pszQueueName ); SPLERR SPLENTRY DosPrintJobGetInfo( PSZ pszServer, USHORT uJobId, USHORT uLevel, PBYTE pbBuf, USHORT cbBuf, PUSHORT pcbNeeded ); SPLERR SPLENTRY DosPrintJobSetInfo( PSZ pszServer, USHORT uJobId, USHORT uLevel, PBYTE pbBuf, USHORT cbBuf, USHORT uParmNum ); SPLERR SPLENTRY DosPrintJobPause( PSZ pszServer, USHORT uJobId ); SPLERR SPLENTRY DosPrintJobContinue( PSZ pszServer, USHORT uJobId ); SPLERR SPLENTRY DosPrintJobDel( PSZ pszServer, USHORT uJobId ); SPLERR SPLENTRY DosPrintJobEnum( PSZ pszServer, PSZ pszQueueName, USHORT uLevel, PBYTE pbBuf, USHORT cbBuf, PUSHORT pcReturned, PUSHORT pcTotal ); SPLERR SPLENTRY DosPrintJobGetId( HFILE hFile, PPRIDINFO pInfo, USHORT cbInfo ); /* * Values for parmnum in DosPrintQSetInfo. */ #define PRQ_PRIORITY_PARMNUM 2 #define PRQ_STARTTIME_PARMNUM 3 #define PRQ_UNTILTIME_PARMNUM 4 #define PRQ_SEPARATOR_PARMNUM 5 #define PRQ_PROCESSOR_PARMNUM 6 #define PRQ_DESTINATIONS_PARMNUM 7 #define PRQ_PARMS_PARMNUM 8 #define PRQ_COMMENT_PARMNUM 9 #define PRQ_PRINTERS_PARMNUM 12 #define PRQ_DRIVERNAME_PARMNUM 13 #define PRQ_DRIVERDATA_PARMNUM 14 #define PRQ_MAXPARMNUM 14 /* * Print Queue Priority */ #define PRQ_MAX_PRIORITY 1 /* highest priority */ #define PRQ_DEF_PRIORITY 5 #define PRQ_MIN_PRIORITY 9 /* lowest priority */ #define PRQ_NO_PRIORITY 0 /* * Print queue status bitmask and values for level 1 */ #define PRQ_STATUS_MASK 3 #define PRQ_ACTIVE 0 #define PRQ_PAUSED 1 #define PRQ_ERROR 2 #define PRQ_PENDING 3 /* * Print queue status bits for level 3 */ #define PRQ3_PAUSED 0x1 #define PRQ3_PENDING 0x2 /* * Values for parmnum in DosPrintJobSetInfo. */ #define PRJ_NOTIFYNAME_PARMNUM 3 #define PRJ_DATATYPE_PARMNUM 4 #define PRJ_PARMS_PARMNUM 5 #define PRJ_POSITION_PARMNUM 6 #define PRJ_COMMENT_PARMNUM 11 #define PRJ_DOCUMENT_PARMNUM 12 #define PRJ_PRIORITY_PARMNUM 14 #define PRJ_PROCPARMS_PARMNUM 16 #define PRJ_DRIVERDATA_PARMNUM 18 #define PRJ_MAXPARMNUM 18 /* * Bitmap masks for status field of PRJINFO. */ /* 2-7 bits also used in device status */ #define PRJ_QSTATUS 0x0003 /* Bits 0,1 */ #define PRJ_DEVSTATUS 0x0ffc /* 2-11 bits */ #define PRJ_COMPLETE 0x0004 /* Bit 2 */ #define PRJ_INTERV 0x0008 /* Bit 3 */ #define PRJ_ERROR 0x0010 /* Bit 4 */ #define PRJ_DESTOFFLINE 0x0020 /* Bit 5 */ #define PRJ_DESTPAUSED 0x0040 /* Bit 6 */ #define PRJ_NOTIFY 0x0080 /* Bit 7 */ #define PRJ_DESTNOPAPER 0x0100 /* Bit 8 */ #define PRJ_DESTFORMCHG 0x0200 /* BIT 9 */ #define PRJ_DESTCRTCHG 0x0400 /* BIT 10 */ #define PRJ_DESTPENCHG 0x0800 /* BIT 11 */ #define PRJ_DELETED 0x8000 /* Bit 15 */ /* * Values of PRJ_QSTATUS bits in fsStatus field of PRJINFO. */ #define PRJ_QS_QUEUED 0 #define PRJ_QS_PAUSED 1 #define PRJ_QS_SPOOLING 2 #define PRJ_QS_PRINTING 3 /* * Print Job Priority */ #define PRJ_MAX_PRIORITY 99 /* lowest priority */ #define PRJ_MIN_PRIORITY 1 /* highest priority */ #define PRJ_NO_PRIORITY 0 /* * Bitmap masks for status field of PRDINFO. * see PRJ_... for bits 2-11 */ #define PRD_STATUS_MASK 0x0003 /* Bits 0,1 */ #define PRD_DEVSTATUS 0x0ffc /* 2-11 bits */ /* * Values of PRD_STATUS_MASK bits in fsStatus field of PRDINFO. */ #define PRD_ACTIVE 0 #define PRD_PAUSED 1 /* * Control codes used in DosPrintDestControl. */ #define PRD_DELETE 0 #define PRD_PAUSE 1 #define PRD_CONT 2 #define PRD_RESTART 3 /* * Values for parmnum in DosPrintDestSetInfo. */ #define PRD_LOGADDR_PARMNUM 3 #define PRD_COMMENT_PARMNUM 7 #define PRD_DRIVERS_PARMNUM 8