|
|
1.1 root 1: /***************************************************************************\
2: *
3: * Module Name: PMSPL.H
4: *
5: * OS/2 Presentation Manager Spooler constants, types and function declarations
6: *
7: * Copyright (c) International Business Machines Corporation 1981, 1988, 1989
8: * Copyright (c) Microsoft Corporation 1981, 1988, 1989
9: *
10: * =============================================================================
11: *
12: * The following symbols are used in this file for conditional sections.
13: *
14: * INCL_SPLFSE - File System Emulation Functions
15: * INCL_SPLERRORS - defined if INCL_ERRORS defined
16: * INCL_SPLDOSPRINT - DosPrint APIs
17: *
18: \***************************************************************************/
19:
20:
21: #ifdef INCL_ERRORS
22: #define INCL_SPLERRORS
23: #endif /* INCL_ERRORS */
24:
25: /* common types and constants
26: ** ==========================
27: */
28: /* Names of various OS2.INI spooler variables */
29:
30: #define SPLENTRY PASCAL FAR _loadds
31: #ifndef FARENTRY
32: #define FARENTRY PASCAL FAR
33: #endif
34:
35:
36: #define SPL_INI_SPOOLER "PM_SPOOLER"
37: #define SPL_INI_QUEUE "PM_SPOOLER_QUEUE"
38: #define SPL_INI_PRINTER "PM_SPOOLER_PRINTER"
39: #define SPL_INI_PRINTERDESCR "PM_SPOOLER_PRINTER_DESCR"
40: #define SPL_INI_QUEUEDESCR "PM_SPOOLER_QUEUE_DESCR"
41: #define SPL_INI_QUEUEDD "PM_SPOOLER_QUEUE_DD"
42: #define SPL_INI_QUEUEDDDATA "PM_SPOOLER_QUEUE_DDDATA"
43:
44: /* General SPL return values */
45: #define SPL_ERROR 0L
46: #define SPL_OK 1L
47:
48: /* handle to a spool file */
49: typedef LHANDLE HSPL; /* hspl */
50: /* Used in recording of PM_Q_STD data via SplStdxxx calls */
51: typedef LHANDLE HSTD; /* hstd */
52: typedef HSTD FAR *PHSTD;
53: /* spooler manager open data */
54: typedef PSZ FAR *PQMOPENDATA; /* pqmdop */
55:
56: /* Public interface function prototypes
57: ** ====================================
58: */
59:
60: /*** Spooler Queue manager Interface */
61: HSPL SPLENTRY _loadds SplQmOpen( PSZ, LONG, PQMOPENDATA );
62: BOOL SPLENTRY _loadds SplQmStartDoc( HSPL, PSZ );
63: BOOL SPLENTRY _loadds SplQmWrite( HSPL, LONG, PBYTE );
64: BOOL SPLENTRY _loadds SplQmEndDoc( HSPL );
65: BOOL SPLENTRY _loadds SplQmClose( HSPL );
66: BOOL SPLENTRY _loadds SplQmAbort( HSPL );
67: BOOL SPLENTRY _loadds SplQmAbortDoc( HSPL );
68:
69: /*** Spooler Queue Processor interface */
70:
71: BOOL SPLENTRY _loadds SplQpQueryDt( PLONG, PSZ FAR * );
72: BOOL SPLENTRY _loadds SplQpInstall( HWND );
73:
74: #ifdef INCL_SPLFSE
75: /*** Direct Device File System Interface */
76:
77: USHORT SPLENTRY _loadds PrtOpen( PSZ, PUSHORT, PUSHORT, ULONG,
78: USHORT, USHORT, USHORT, ULONG );
79: USHORT SPLENTRY _loadds PrtClose( HFILE );
80: USHORT SPLENTRY _loadds PrtWrite( HFILE, PCH, USHORT, PUSHORT );
81: USHORT SPLENTRY _loadds PrtDevIOCtl( PVOID, PVOID, USHORT, USHORT, HFILE );
82: #endif /* include File System Emulation functions */
83:
84: /* Style for SplMessageBox */
85: /* Same as for WinMsgBox see PMWIN.H for details */
86:
87: /*** Spooler message interface */
88: USHORT SPLENTRY _loadds SplMessageBox( PSZ, USHORT, USHORT,
89: PSZ, PSZ, USHORT, USHORT );
90:
91: /*** PM_Q_STD datatype functions */
92: BOOL SPLENTRY _loadds SplStdOpen( HDC );
93: BOOL SPLENTRY _loadds SplStdClose( HDC );
94: BOOL SPLENTRY _loadds SplStdStart( HDC );
95: HSTD SPLENTRY _loadds SplStdStop( HDC );
96: BOOL SPLENTRY _loadds SplStdDelete( HSTD );
97: BOOL SPLENTRY _loadds SplStdGetBits( HSTD, LONG, LONG, PCH );
98: LONG SPLENTRY _loadds SplStdQueryLength( HSTD );
99:
100: /* Error information and return codes
101: ** ==================================
102: */
103: /* Error information for SplMessageBox */
104: #define SPLINFO_QPERROR 0x0001
105: #define SPLINFO_DDERROR 0x0002
106: #define SPLINFO_SPLERROR 0x0004
107: #define SPLINFO_OTHERERROR 0x0080
108: #define SPLINFO_INFORMATION 0x0100
109: #define SPLINFO_WARNING 0x0200
110: #define SPLINFO_ERROR 0x0400
111: #define SPLINFO_SEVERE 0x0800
112: #define SPLINFO_USERINTREQD 0x1000
113:
114: /* Error Data for SplMessageBox */
115: #define SPLDATA_PRINTERJAM 0x0001
116: #define SPLDATA_FORMCHGREQD 0x0002
117: #define SPLDATA_CARTCHGREQD 0x0004
118: #define SPLDATA_PENCHGREQD 0x0008
119: #define SPLDATA_DATAERROR 0x0010
120: #define SPLDATA_UNEXPECTERROR 0x0020
121: #define SPLDATA_OTHER 0x8000
122:
123: /* return code for SplStdQueryLength */
124: #define SSQL_ERROR (-1L)
125:
126: #ifdef INCL_SPLERRORS
127:
128: #include <pmerr.h>
129:
130: #endif /* INCL_SPLERRORS */
131:
132:
133:
134: typedef unsigned SPLERR; /* err */
135:
136: #ifdef INCL_SPLDOSPRINT
137:
138:
139: /* length for character arrays in structures (excluding zero terminator) */
140: #define CNLEN 15 /* Computer name length */
141: #define UNLEN 20 /* Maximum user name length */
142: #define QNLEN 12 /* Queue name maximum length */
143: #define PDLEN 8 /* Print destination length */
144: #define DTLEN 9 /* Spool file data type */
145: /* e.g. PM_Q_STD,PM_Q_RAW */
146: #define QP_DATATYPE_SIZE 15 /* returned by SplQpQueryDt */
147: #define DRIV_DEVICENAME_SIZE 31 /* see DRIVDATA struc */
148: #define DRIV_NAME_SIZE 8 /* name of device driver */
149: #define PRINTERNAME_SIZE 32 /* max printer name length */
150: #define FORMNAME_SIZE 31 /* max form name length */
151: #define MAXCOMMENTSZ 48 /* queue comment length */
152:
153: #define DEFAULT_LM_PROC "LMPRINT"
154:
155: /* IOctl for DosPrintJobGetId */
156: #define SPOOL_LMCAT 83
157: #define SPOOL_LMGetPrintId 0x60
158:
159:
160:
161: typedef struct _PRJINFO { /* prj1 */
162: USHORT uJobId;
163: CHAR szUserName[UNLEN+1];
164: CHAR pad_1;
165: CHAR szNotifyName[CNLEN+1];
166: CHAR szDataType[DTLEN+1];
167: PSZ pszParms;
168: USHORT uPosition;
169: USHORT fsStatus;
170: PSZ pszStatus;
171: ULONG ulSubmitted;
172: ULONG ulSize;
173: PSZ pszComment;
174: } PRJINFO;
175: typedef PRJINFO FAR *PPRJINFO;
176: typedef PRJINFO NEAR *NPPRJINFO;
177:
178: typedef struct _PRJINFO2 { /* prj2 */
179: USHORT uJobId;
180: USHORT uPriority;
181: PSZ pszUserName;
182: USHORT uPosition;
183: USHORT fsStatus;
184: ULONG ulSubmitted;
185: ULONG ulSize;
186: PSZ pszComment;
187: PSZ pszDocument;
188: } PRJINFO2;
189: typedef PRJINFO2 FAR *PPRJINFO2;
190: typedef PRJINFO2 NEAR *NPPRJINFO2;
191:
192: typedef struct _PRJINFO3 { /* prj */
193: USHORT uJobId;
194: USHORT uPriority;
195: PSZ pszUserName;
196: USHORT uPosition;
197: USHORT fsStatus;
198: ULONG ulSubmitted;
199: ULONG ulSize;
200: PSZ pszComment;
201: PSZ pszDocument;
202: PSZ pszNotifyName;
203: PSZ pszDataType;
204: PSZ pszParms;
205: PSZ pszStatus;
206: PSZ pszQueue;
207: PSZ pszQProcName;
208: PSZ pszQProcParms;
209: PSZ pszDriverName;
210: PDRIVDATA pDriverData;
211: PSZ pszPrinterName;
212: } PRJINFO3;
213: typedef PRJINFO3 FAR *PPRJINFO3;
214: typedef PRJINFO3 NEAR *NPPRJINFO3;
215:
216:
217: typedef struct _PRDINFO { /* prd1 */
218: CHAR szName[PDLEN+1];
219: CHAR szUserName[UNLEN+1];
220: USHORT uJobId;
221: USHORT fsStatus;
222: PSZ pszStatus;
223: USHORT time;
224: } PRDINFO;
225: typedef PRDINFO FAR *PPRDINFO;
226: typedef PRDINFO NEAR *NPPRDINFO;
227:
228:
229: typedef struct _PRDINFO3 { /* prd */
230: PSZ pszPrinterName;
231: PSZ pszUserName;
232: PSZ pszLogAddr;
233: USHORT uJobId;
234: USHORT fsStatus;
235: PSZ pszStatus;
236: PSZ pszComment;
237: PSZ pszDrivers;
238: USHORT time;
239: USHORT usTimeOut;
240: } PRDINFO3;
241: typedef PRDINFO3 FAR *PPRDINFO3;
242: typedef PRDINFO3 NEAR *NPPRDINFO3;
243:
244:
245: typedef struct _PRQINFO { /* prq1 */
246: CHAR szName[QNLEN+1];
247: CHAR pad_1;
248: USHORT uPriority;
249: USHORT uStartTime;
250: USHORT uUntilTime;
251: PSZ pszSepFile;
252: PSZ pszPrProc;
253: PSZ pszDestinations;
254: PSZ pszParms;
255: PSZ pszComment;
256: USHORT fsStatus;
257: USHORT cJobs;
258: } PRQINFO;
259: typedef PRQINFO FAR *PPRQINFO;
260: typedef PRQINFO NEAR *NPPRQINFO;
261:
262:
263: typedef struct _PRQINFO3 { /* prq */
264: PSZ pszName;
265: USHORT uPriority;
266: USHORT uStartTime;
267: USHORT uUntilTime;
268: USHORT pad1;
269: PSZ pszSepFile;
270: PSZ pszPrProc;
271: PSZ pszParms;
272: PSZ pszComment;
273: USHORT fsStatus;
274: USHORT cJobs;
275: PSZ pszPrinters;
276: PSZ pszDriverName;
277: PDRIVDATA pDriverData;
278: } PRQINFO3;
279: typedef PRQINFO3 FAR *PPRQINFO3;
280: typedef PRQINFO3 NEAR *NPPRQINFO3;
281:
282:
283: /*
284: * structure for DosPrintJobGetId
285: */
286: typedef struct _PRIDINFO { /* prjid */
287: USHORT uJobId;
288: CHAR szServer[CNLEN + 1];
289: CHAR szQName[QNLEN+1];
290: CHAR pad_1;
291: } PRIDINFO;
292: typedef PRIDINFO FAR *PPRIDINFO;
293: typedef PRIDINFO NEAR *NPPRIDINFO;
294:
295:
296: /****************************************************************
297: * *
298: * Function prototypes *
299: * *
300: ****************************************************************/
301:
302: SPLERR SPLENTRY DosPrintDestEnum(
303: PSZ pszServer,
304: USHORT uLevel,
305: PBYTE pbBuf,
306: USHORT cbBuf,
307: PUSHORT pcReturned,
308: PUSHORT pcTotal
309: );
310:
311: SPLERR SPLENTRY DosPrintDestControl(
312: PSZ pszServer,
313: PSZ pszDevName,
314: USHORT uControl
315: );
316:
317: SPLERR SPLENTRY DosPrintDestGetInfo(
318: PSZ pszServer,
319: PSZ pszName,
320: USHORT uLevel,
321: PBYTE pbBuf,
322: USHORT cbBuf,
323: PUSHORT pcbNeeded
324: );
325:
326: SPLERR SPLENTRY DosPrintDestAdd(
327: PSZ pszServer,
328: USHORT uLevel,
329: PBYTE pbBuf,
330: USHORT cbBuf
331: );
332:
333: SPLERR SPLENTRY DosPrintDestSetInfo(
334: PSZ pszServer,
335: PSZ pszName,
336: USHORT uLevel,
337: PBYTE pbBuf,
338: USHORT cbBuf,
339: USHORT uParmNum
340: );
341:
342: SPLERR SPLENTRY DosPrintDestDel(
343: PSZ pszServer,
344: PSZ pszPrinterName
345: );
346:
347: SPLERR SPLENTRY DosPrintQEnum(
348: PSZ pszServer,
349: USHORT uLevel,
350: PBYTE pbBuf,
351: USHORT cbBuf,
352: PUSHORT pcReturned,
353: PUSHORT pcTotal
354: );
355:
356: SPLERR SPLENTRY DosPrintQGetInfo(
357: PSZ pszServer,
358: PSZ pszQueueName,
359: USHORT uLevel,
360: PBYTE pbBuf,
361: USHORT cbBuf,
362: PUSHORT pcbNeeded
363: );
364:
365: SPLERR SPLENTRY DosPrintQSetInfo(
366: PSZ pszServer,
367: PSZ pszQueueName,
368: USHORT uLevel,
369: PBYTE pbBuf,
370: USHORT cbBuf,
371: USHORT uParmNum
372: );
373:
374: SPLERR SPLENTRY DosPrintQPause(
375: PSZ pszServer,
376: PSZ pszQueueName
377: );
378:
379: SPLERR SPLENTRY DosPrintQContinue(
380: PSZ pszServer,
381: PSZ pszQueueName
382: );
383:
384: SPLERR SPLENTRY DosPrintQPurge(
385: PSZ pszServer,
386: PSZ pszQueueName
387: );
388:
389: SPLERR SPLENTRY DosPrintQAdd(
390: PSZ pszServer,
391: USHORT uLevel,
392: PBYTE pbBuf,
393: USHORT cbBuf
394: );
395:
396: SPLERR SPLENTRY DosPrintQDel(
397: PSZ pszServer,
398: PSZ pszQueueName
399: );
400:
401: SPLERR SPLENTRY DosPrintJobGetInfo(
402: PSZ pszServer,
403: USHORT uJobId,
404: USHORT uLevel,
405: PBYTE pbBuf,
406: USHORT cbBuf,
407: PUSHORT pcbNeeded
408: );
409:
410: SPLERR SPLENTRY DosPrintJobSetInfo(
411: PSZ pszServer,
412: USHORT uJobId,
413: USHORT uLevel,
414: PBYTE pbBuf,
415: USHORT cbBuf,
416: USHORT uParmNum
417: );
418:
419: SPLERR SPLENTRY DosPrintJobPause(
420: PSZ pszServer,
421: USHORT uJobId
422: );
423:
424: SPLERR SPLENTRY DosPrintJobContinue(
425: PSZ pszServer,
426: USHORT uJobId
427: );
428:
429: SPLERR SPLENTRY DosPrintJobDel(
430: PSZ pszServer,
431: USHORT uJobId
432: );
433:
434: SPLERR SPLENTRY DosPrintJobEnum(
435: PSZ pszServer,
436: PSZ pszQueueName,
437: USHORT uLevel,
438: PBYTE pbBuf,
439: USHORT cbBuf,
440: PUSHORT pcReturned,
441: PUSHORT pcTotal
442: );
443:
444: SPLERR SPLENTRY DosPrintJobGetId(
445: HFILE hFile,
446: PPRIDINFO pInfo,
447: USHORT cbInfo
448: );
449:
450: /*
451: * Values for parmnum in DosPrintQSetInfo.
452: */
453:
454: #define PRQ_PRIORITY_PARMNUM 2
455: #define PRQ_STARTTIME_PARMNUM 3
456: #define PRQ_UNTILTIME_PARMNUM 4
457: #define PRQ_SEPARATOR_PARMNUM 5
458: #define PRQ_PROCESSOR_PARMNUM 6
459: #define PRQ_DESTINATIONS_PARMNUM 7
460: #define PRQ_PARMS_PARMNUM 8
461: #define PRQ_COMMENT_PARMNUM 9
462: #define PRQ_PRINTERS_PARMNUM 12
463: #define PRQ_DRIVERNAME_PARMNUM 13
464: #define PRQ_DRIVERDATA_PARMNUM 14
465: #define PRQ_MAXPARMNUM 14
466:
467: /*
468: * Print Queue Priority
469: */
470:
471: #define PRQ_MAX_PRIORITY 1 /* highest priority */
472: #define PRQ_DEF_PRIORITY 5
473: #define PRQ_MIN_PRIORITY 9 /* lowest priority */
474: #define PRQ_NO_PRIORITY 0
475:
476: /*
477: * Print queue status bitmask and values.
478: */
479:
480: #define PRQ_STATUS_MASK 3
481: #define PRQ_ACTIVE 0
482: #define PRQ_PAUSED 1
483: #define PRQ_ERROR 2
484: #define PRQ_PENDING 3
485:
486: /*
487: * Print queue status bits for level 3
488: */
489:
490: #define PRQ3_PAUSED 0x1
491: #define PRQ3_PENDING 0x2
492:
493: /*
494: * Values for parmnum in DosPrintJobSetInfo.
495: */
496:
497: #define PRJ_NOTIFYNAME_PARMNUM 3
498: #define PRJ_DATATYPE_PARMNUM 4
499: #define PRJ_PARMS_PARMNUM 5
500: #define PRJ_POSITION_PARMNUM 6
501: #define PRJ_COMMENT_PARMNUM 11
502: #define PRJ_DOCUMENT_PARMNUM 12
503: #define PRJ_PRIORITY_PARMNUM 14
504: #define PRJ_PROCPARMS_PARMNUM 16
505: #define PRJ_DRIVERDATA_PARMNUM 18
506: #define PRJ_MAXPARMNUM 18
507:
508: /*
509: * Bitmap masks for status field of PRJINFO.
510: */
511:
512: /* 2-7 bits also used in device status */
513:
514: #define PRJ_QSTATUS 0x0003 /* Bits 0,1 */
515: #define PRJ_DEVSTATUS 0x0ffc /* 2-11 bits */
516: #define PRJ_COMPLETE 0x0004 /* Bit 2 */
517: #define PRJ_INTERV 0x0008 /* Bit 3 */
518: #define PRJ_ERROR 0x0010 /* Bit 4 */
519: #define PRJ_DESTOFFLINE 0x0020 /* Bit 5 */
520: #define PRJ_DESTPAUSED 0x0040 /* Bit 6 */
521: #define PRJ_NOTIFY 0x0080 /* Bit 7 */
522: #define PRJ_DESTNOPAPER 0x0100 /* Bit 8 */
523: #define PRJ_DESTFORMCHG 0x0200 /* BIT 9 */
524: #define PRJ_DESTCRTCHG 0x0400 /* BIT 10 */
525: #define PRJ_DESTPENCHG 0x0800 /* BIT 11 */
526: #define PRJ_DELETED 0x8000 /* Bit 15 */
527:
528: /*
529: * Values of PRJ_QSTATUS bits in fsStatus field of PRJINFO.
530: */
531:
532: #define PRJ_QS_QUEUED 0
533: #define PRJ_QS_PAUSED 1
534: #define PRJ_QS_SPOOLING 2
535: #define PRJ_QS_PRINTING 3
536:
537: /*
538: * Print Job Priority
539: */
540:
541: #define PRJ_MAX_PRIORITY 99 /* lowest priority */
542: #define PRJ_MIN_PRIORITY 1 /* highest priority */
543: #define PRJ_NO_PRIORITY 0
544:
545:
546: /*
547: * Bitmap masks for status field of PRDINFO.
548: * see PRJ_... for bits 2-11
549: */
550:
551: #define PRD_STATUS_MASK 0x0003 /* Bits 0,1 */
552: #define PRD_DEVSTATUS 0x0ffc /* 2-11 bits */
553:
554: /*
555: * Values of PRD_STATUS_MASK bits in fsStatus field of PRDINFO.
556: */
557:
558: #define PRD_ACTIVE 0
559: #define PRD_PAUSED 1
560:
561: /*
562: * Control codes used in DosPrintDestControl.
563: */
564:
565: #define PRD_DELETE 0
566: #define PRD_PAUSE 1
567: #define PRD_CONT 2
568: #define PRD_RESTART 3
569:
570: /*
571: * Values for parmnum in DosPrintDestSetInfo.
572: */
573:
574: #define PRD_LOGADDR_PARMNUM 3
575: #define PRD_COMMENT_PARMNUM 7
576: #define PRD_DRIVERS_PARMNUM 8
577: #define PRD_TIMEOUT_PARMNUM 10
578:
579: #endif /* INCL_SPLDOSPRINT */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.