Leaked source code of windows server 2003
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.
 
 
 
 
 
 

787 lines
21 KiB

/*++
Copyright (c) 1991-1993 Microsoft Corporation
Module Name:
RxPrint.h
Abstract:
This contains prototypes for the RxPrint routines.
Author:
Dave Snipp (DaveSn) 16-Apr-1991
Environment:
Notes:
All of the RxPrint APIs are wide-character APIs, regardless of
whether or not UNICODE is defined. This allows the net/dosprint/dosprint.c
code to use the winspool APIs (which are currently ANSI APIs, despite their
prototypes using LPTSTR in some places).
Revision History:
22-Apr-1991 JohnRo
Use constants from <lmcons.h>.
14-May-1991 JohnRo
Change WORD to DWORD in all parameter lists. Similarly, change
PWORD to LPDWORD and PUSHORT to LPDWORD.
18-May-1991 JohnRo
Changed SPLERR to be defined as NET_API_STATUS.
22-May-1991 CliffV
Added local definitions of PDLEN and DTLEN since they are no longer
in lmcons.h.
26-May-1991 JohnRo
Use IN, OUT, OPTIONAL, LPVOID, LPTSTR, etc.
18-Jun-1991 JohnRo
Deleted RxPrintJobGetId, as it will be an IOCTL rather than a remoted
API.
26-Jun-1991 CliffV
Used LM2.0 versions of CNLEN, UNLEN, and QNLEN.
16-Jul-1991 JohnRo
Estimate bytes needed for print APIs.
16-Jun-1992 JohnRo
RAID 10324: net print vs. UNICODE.
08-Feb-1993 JohnRo
RAID 10164: Data misalignment error during XsDosPrintQGetInfo().
07-Apr-1993 JohnRo
RAID 5670: "NET PRINT \\server\share" gives err 124 (bad level) on NT.
--*/
#ifndef _RXPRINT_
#define _RXPRINT_
#include <windef.h> // DWORD, LPVOID, LPTSTR, TCHAR, etc.
#include <lmcons.h> // LM20_CNLEN, IN, NET_API_STATUS, etc.
#define SPLENTRY pascal far
/* length for character arrays in structures (excluding zero terminator) */
#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 */
/**INTERNAL_ONLY**/
/* IOctl for RxPrintJobGetId */
#define SPOOL_LMCAT 83
#define SPOOL_LMGetPrintId 0x60
// Used in remdef.h for structure definition to marshall data
#define MAX_DEPENDENT_FILES 64
/**END_INTERNAL**/
typedef NET_API_STATUS SPLERR; /* err */
typedef struct _PRJINFOA { /* prj1 */
WORD uJobId;
CHAR szUserName[LM20_UNLEN+1];
CHAR pad_1;
CHAR szNotifyName[LM20_CNLEN+1];
CHAR szDataType[DTLEN+1];
LPSTR pszParms;
WORD uPosition;
WORD fsStatus;
LPSTR pszStatus;
DWORD ulSubmitted;
DWORD ulSize;
LPSTR pszComment;
} PRJINFOA;
typedef struct _PRJINFOW { /* prj1 */
WORD uJobId;
WCHAR szUserName[LM20_UNLEN+1];
WCHAR pad_1;
WCHAR szNotifyName[LM20_CNLEN+1];
WCHAR szDataType[DTLEN+1];
LPWSTR pszParms;
WORD uPosition;
WORD fsStatus;
LPWSTR pszStatus;
DWORD ulSubmitted;
DWORD ulSize;
LPWSTR pszComment;
} PRJINFOW;
#ifdef UNICODE
typedef PRJINFOW PRJINFO;
#else
typedef PRJINFOA PRJINFO;
#endif // UNICODE
typedef PRJINFOA far *PPRJINFOA;
typedef PRJINFOW far *PPRJINFOW;
#ifdef UNICODE
typedef PPRJINFOW PPRJINFO;
#else
typedef PPRJINFOA PPRJINFO;
#endif // UNICODE
typedef PRJINFOA near *NPPRJINFOA;
typedef PRJINFOW near *NPPRJINFOW;
#ifdef UNICODE
typedef NPPRJINFOW NPPRJINFO;
#else
typedef NPPRJINFOA NPPRJINFO;
#endif // UNICODE
typedef struct _PRJINFO2A { /* prj2 */
WORD uJobId;
WORD uPriority;
LPSTR pszUserName;
WORD uPosition;
WORD fsStatus;
DWORD ulSubmitted;
DWORD ulSize;
LPSTR pszComment;
LPSTR pszDocument;
} PRJINFO2A;
typedef struct _PRJINFO2W { /* prj2 */
WORD uJobId;
WORD uPriority;
LPWSTR pszUserName;
WORD uPosition;
WORD fsStatus;
DWORD ulSubmitted;
DWORD ulSize;
LPWSTR pszComment;
LPWSTR pszDocument;
} PRJINFO2W;
#ifdef UNICODE
typedef PRJINFO2W PRJINFO2;
#else
typedef PRJINFO2A PRJINFO2;
#endif // UNICODE
typedef PRJINFO2A far *PPRJINFO2A;
typedef PRJINFO2W far *PPRJINFO2W;
#ifdef UNICODE
typedef PPRJINFO2W PPRJINFO2;
#else
typedef PPRJINFO2A PPRJINFO2;
#endif // UNICODE
typedef PRJINFO2A near *NPPRJINFO2A;
typedef PRJINFO2W near *NPPRJINFO2W;
#ifdef UNICODE
typedef NPPRJINFO2W NPPRJINFO2;
#else
typedef NPPRJINFO2A NPPRJINFO2;
#endif // UNICODE
typedef struct _PRJINFO3A { /* prj */
WORD uJobId;
WORD uPriority;
LPSTR pszUserName;
WORD uPosition;
WORD fsStatus;
DWORD ulSubmitted;
DWORD ulSize;
LPSTR pszComment;
LPSTR pszDocument;
LPSTR pszNotifyName;
LPSTR pszDataType;
LPSTR pszParms;
LPSTR pszStatus;
LPSTR pszQueue;
LPSTR pszQProcName;
LPSTR pszQProcParms;
LPSTR pszDriverName;
LPVOID pDriverData;
LPSTR pszPrinterName;
} PRJINFO3A;
typedef struct _PRJINFO3W { /* prj */
WORD uJobId;
WORD uPriority;
LPWSTR pszUserName;
WORD uPosition;
WORD fsStatus;
DWORD ulSubmitted;
DWORD ulSize;
LPWSTR pszComment;
LPWSTR pszDocument;
LPWSTR pszNotifyName;
LPWSTR pszDataType;
LPWSTR pszParms;
LPWSTR pszStatus;
LPWSTR pszQueue;
LPWSTR pszQProcName;
LPWSTR pszQProcParms;
LPWSTR pszDriverName;
LPVOID pDriverData;
LPWSTR pszPrinterName;
} PRJINFO3W;
#ifdef UNICODE
typedef PRJINFO3W PRJINFO3;
#else
typedef PRJINFO3A PRJINFO3;
#endif // UNICODE
typedef PRJINFO3A far *PPRJINFO3A;
typedef PRJINFO3W far *PPRJINFO3W;
#ifdef UNICODE
typedef PPRJINFO3W PPRJINFO3;
#else
typedef PPRJINFO3A PPRJINFO3;
#endif // UNICODE
typedef PRJINFO3A near *NPPRJINFO3A;
typedef PRJINFO3W near *NPPRJINFO3W;
#ifdef UNICODE
typedef NPPRJINFO3W NPPRJINFO3;
#else
typedef NPPRJINFO3A NPPRJINFO3;
#endif // UNICODE
typedef struct _PRDINFOA { /* prd1 */
CHAR szName[PDLEN+1];
CHAR szUserName[LM20_UNLEN+1];
WORD uJobId;
WORD fsStatus;
LPSTR pszStatus;
WORD time;
} PRDINFOA;
typedef struct _PRDINFOW { /* prd1 */
WCHAR szName[PDLEN+1];
WCHAR szUserName[LM20_UNLEN+1];
WORD uJobId;
WORD fsStatus;
LPWSTR pszStatus;
WORD time;
} PRDINFOW;
#ifdef UNICODE
typedef PRDINFOW PRDINFO;
#else
typedef PRDINFOA PRDINFO;
#endif // UNICODE
typedef PRDINFOA far *PPRDINFOA;
typedef PRDINFOW far *PPRDINFOW;
#ifdef UNICODE
typedef PPRDINFOW PPRDINFO;
#else
typedef PPRDINFOA PPRDINFO;
#endif // UNICODE
typedef PRDINFOA near *NPPRDINFOA;
typedef PRDINFOW near *NPPRDINFOW;
#ifdef UNICODE
typedef NPPRDINFOW NPPRDINFO;
#else
typedef NPPRDINFOA NPPRDINFO;
#endif // UNICODE
typedef struct _PRDINFO3A { /* prd */
LPSTR pszPrinterName;
LPSTR pszUserName;
LPSTR pszLogAddr;
WORD uJobId;
WORD fsStatus;
LPSTR pszStatus;
LPSTR pszComment;
LPSTR pszDrivers;
WORD time;
WORD pad1;
} PRDINFO3A;
typedef struct _PRDINFO3W { /* prd */
LPWSTR pszPrinterName;
LPWSTR pszUserName;
LPWSTR pszLogAddr;
WORD uJobId;
WORD fsStatus;
LPWSTR pszStatus;
LPWSTR pszComment;
LPWSTR pszDrivers;
WORD time;
WORD pad1;
} PRDINFO3W;
#ifdef UNICODE
typedef PRDINFO3W PRDINFO3;
#else
typedef PRDINFO3A PRDINFO3;
#endif // UNICODE
typedef PRDINFO3A far *PPRDINFO3A;
typedef PRDINFO3W far *PPRDINFO3W;
#ifdef UNICODE
typedef PPRDINFO3W PPRDINFO3;
#else
typedef PPRDINFO3A PPRDINFO3;
#endif // UNICODE
typedef PRDINFO3A near *NPPRDINFO3A;
typedef PRDINFO3W near *NPPRDINFO3W;
#ifdef UNICODE
typedef NPPRDINFO3W NPPRDINFO3;
#else
typedef NPPRDINFO3A NPPRDINFO3;
#endif // UNICODE
typedef struct _PRQINFOA { /* prq1 */
CHAR szName[LM20_QNLEN+1];
CHAR pad_1;
WORD uPriority;
WORD uStartTime;
WORD uUntilTime;
LPSTR pszSepFile;
LPSTR pszPrProc;
LPSTR pszDestinations;
LPSTR pszParms;
LPSTR pszComment;
WORD fsStatus;
WORD cJobs;
} PRQINFOA;
typedef struct _PRQINFOW { /* prq1 */
WCHAR szName[LM20_QNLEN+1];
WCHAR pad_1;
WORD uPriority;
WORD uStartTime;
WORD uUntilTime;
LPWSTR pszSepFile;
LPWSTR pszPrProc;
LPWSTR pszDestinations;
LPWSTR pszParms;
LPWSTR pszComment;
WORD fsStatus;
WORD cJobs;
} PRQINFOW;
#ifdef UNICODE
typedef PRQINFOW PRQINFO;
#else
typedef PRQINFOA PRQINFO;
#endif // UNICODE
typedef PRQINFOA far *PPRQINFOA;
typedef PRQINFOW far *PPRQINFOW;
#ifdef UNICODE
typedef PPRQINFOW PPRQINFO;
#else
typedef PPRQINFOA PPRQINFO;
#endif // UNICODE
typedef PRQINFOA near *NPPRQINFOA;
typedef PRQINFOW near *NPPRQINFOW;
#ifdef UNICODE
typedef NPPRQINFOW NPPRQINFO;
#else
typedef NPPRQINFOA NPPRQINFO;
#endif // UNICODE
typedef struct _PRQINFO3A { /* prq */
LPSTR pszName;
WORD uPriority;
WORD uStartTime;
WORD uUntilTime;
WORD pad1;
LPSTR pszSepFile;
LPSTR pszPrProc;
LPSTR pszParms;
LPSTR pszComment;
WORD fsStatus;
WORD cJobs;
LPSTR pszPrinters;
LPSTR pszDriverName;
LPVOID pDriverData;
} PRQINFO3A;
typedef struct _PRQINFO3W { /* prq */
LPWSTR pszName;
WORD uPriority;
WORD uStartTime;
WORD uUntilTime;
WORD pad1;
LPWSTR pszSepFile;
LPWSTR pszPrProc;
LPWSTR pszParms;
LPWSTR pszComment;
WORD fsStatus;
WORD cJobs;
LPWSTR pszPrinters;
LPWSTR pszDriverName;
LPVOID pDriverData;
} PRQINFO3W;
#ifdef UNICODE
typedef PRQINFO3W PRQINFO3;
#else
typedef PRQINFO3A PRQINFO3;
#endif // UNICODE
typedef PRQINFO3A far *PPRQINFO3A;
typedef PRQINFO3W far *PPRQINFO3W;
#ifdef UNICODE
typedef PPRQINFO3W PPRQINFO3;
#else
typedef PPRQINFO3A PPRQINFO3;
#endif // UNICODE
typedef PRQINFO3A near *NPPRQINFO3A;
typedef PRQINFO3W near *NPPRQINFO3W;
#ifdef UNICODE
typedef NPPRQINFO3W NPPRQINFO3;
#else
typedef NPPRQINFO3A NPPRQINFO3;
#endif // UNICODE
typedef struct _PRQINFO52A { /* prq */
WORD uVersion;
LPSTR pszModelName;
LPSTR pszDriverName;
LPSTR pszDataFileName;
LPSTR pszMonitorName;
LPSTR pszDriverPath;
LPSTR pszDefaultDataType;
LPSTR pszHelpFile;
LPSTR pszConfigFile;
WORD cDependentNames;
LPSTR pszDependentNames[MAX_DEPENDENT_FILES];
} PRQINFO52A;
typedef struct _PRQINFO52W { /* prq */
WORD uVersion;
LPWSTR pszModelName;
LPWSTR pszDriverName;
LPWSTR pszDataFileName;
LPWSTR pszMonitorName;
LPWSTR pszDriverPath;
LPWSTR pszDefaultDataType;
LPWSTR pszHelpFile;
LPWSTR pszConfigFile;
WORD cDependentNames;
LPWSTR pszDependentNames[MAX_DEPENDENT_FILES];
} PRQINFO52W;
#ifdef UNICODE
typedef PRQINFO52W PRQINFO52;
#else
typedef PRQINFO52A PRQINFO52;
#endif // UNICODE
typedef PRQINFO52A far *PPRQINFO52A;
typedef PRQINFO52W far *PPRQINFO52W;
#ifdef UNICODE
typedef PPRQINFO52W PPRQINFO52;
#else
typedef PPRQINFO52A PPRQINFO52;
#endif // UNICODE
typedef PRQINFO52A near *NPPRQINFO52A;
typedef PRQINFO52W near *NPPRQINFO52W;
#ifdef UNICODE
typedef NPPRQINFO52W NPPRQINFO52;
#else
typedef NPPRQINFO52A NPPRQINFO52;
#endif // UNICODE
/*
* structure for RxPrintJobGetId
*/
typedef struct _PRIDINFOA { /* prjid */
WORD uJobId;
CHAR szServer[LM20_CNLEN + 1];
CHAR szQName[LM20_QNLEN+1];
CHAR pad_1;
} PRIDINFOA;
/*
* structure for RxPrintJobGetId
*/
typedef struct _PRIDINFOW { /* prjid */
WORD uJobId;
WCHAR szServer[LM20_CNLEN + 1];
WCHAR szQName[LM20_QNLEN+1];
CHAR pad_1;
} PRIDINFOW;
#ifdef UNICODE
typedef PRIDINFOW PRIDINFO;
#else
typedef PRIDINFOA PRIDINFO;
#endif // UNICODE
typedef PRIDINFOA far *PPRIDINFOA;
typedef PRIDINFOW far *PPRIDINFOW;
#ifdef UNICODE
typedef PPRIDINFOW PPRIDINFO;
#else
typedef PPRIDINFOA PPRIDINFO;
#endif // UNICODE
typedef PRIDINFOA near *NPPRIDINFOA;
typedef PRIDINFOW near *NPPRIDINFOW;
#ifdef UNICODE
typedef NPPRIDINFOW NPPRIDINFO;
#else
typedef NPPRIDINFOA NPPRIDINFO;
#endif // UNICODE
/****************************************************************
* *
* Function prototypes *
* *
****************************************************************/
SPLERR SPLENTRY RxPrintDestEnum(
IN LPTSTR pszServer,
IN DWORD uLevel,
OUT LPBYTE pbBuf,
IN DWORD cbBuf,
IN LPDWORD pcReturned,
OUT LPDWORD pcTotal
);
SPLERR SPLENTRY RxPrintDestControl(
IN LPTSTR pszServer,
IN LPTSTR pszDevName,
IN DWORD uControl
);
SPLERR SPLENTRY RxPrintDestGetInfo(
IN LPTSTR pszServer,
IN LPTSTR pszName,
IN DWORD uLevel,
OUT LPBYTE pbBuf,
IN DWORD cbBuf,
OUT LPDWORD pcbNeeded // estimated (probably too large).
);
SPLERR SPLENTRY RxPrintDestAdd(
IN LPTSTR pszServer,
IN DWORD uLevel,
IN LPBYTE pbBuf,
IN DWORD cbBuf
);
SPLERR SPLENTRY RxPrintDestSetInfo(
IN LPTSTR pszServer,
IN LPTSTR pszName,
IN DWORD uLevel,
IN LPBYTE pbBuf,
IN DWORD cbBuf,
IN DWORD uParmNum
);
SPLERR SPLENTRY RxPrintDestDel(
IN LPTSTR pszServer,
IN LPTSTR pszPrinterName
);
SPLERR SPLENTRY RxPrintQEnum(
IN LPTSTR pszServer,
IN DWORD uLevel,
OUT LPBYTE pbBuf,
IN DWORD cbBuf,
OUT LPDWORD pcReturned,
OUT LPDWORD pcTotal
);
SPLERR SPLENTRY RxPrintQGetInfo(
IN LPTSTR pszServer,
IN LPTSTR pszQueueName,
IN DWORD uLevel,
OUT LPBYTE pbBuf,
IN DWORD cbBuf,
OUT LPDWORD pcbNeeded // estimated (probably too large).
);
SPLERR SPLENTRY RxPrintQSetInfo(
IN LPTSTR pszServer,
IN LPTSTR pszQueueName,
IN DWORD uLevel,
IN LPBYTE pbBuf,
IN DWORD cbBuf,
IN DWORD uParmNum
);
SPLERR SPLENTRY RxPrintQPause(
IN LPTSTR pszServer,
IN LPTSTR pszQueueName
);
SPLERR SPLENTRY RxPrintQContinue(
IN LPTSTR pszServer,
IN LPTSTR pszQueueName
);
SPLERR SPLENTRY RxPrintQPurge(
IN LPTSTR pszServer,
IN LPTSTR pszQueueName
);
SPLERR SPLENTRY RxPrintQAdd(
IN LPTSTR pszServer,
IN DWORD uLevel,
IN LPBYTE pbBuf,
IN DWORD cbBuf
);
SPLERR SPLENTRY RxPrintQDel(
IN LPTSTR pszServer,
IN LPTSTR pszQueueName
);
SPLERR SPLENTRY RxPrintJobGetInfo(
IN LPTSTR pszServer,
IN DWORD uJobId,
IN DWORD uLevel,
OUT LPBYTE pbBuf,
IN DWORD cbBuf,
OUT LPDWORD pcbNeeded // estimated (probably too large).
);
SPLERR SPLENTRY RxPrintJobSetInfo(
IN LPTSTR pszServer,
IN DWORD uJobId,
IN DWORD uLevel,
IN LPBYTE pbBuf,
IN DWORD cbBuf,
IN DWORD uParmNum
);
SPLERR SPLENTRY RxPrintJobPause(
IN LPTSTR pszServer,
IN DWORD uJobId
);
SPLERR SPLENTRY RxPrintJobContinue(
IN LPTSTR pszServer,
IN DWORD uJobId
);
SPLERR SPLENTRY RxPrintJobDel(
IN LPTSTR pszServer,
IN DWORD uJobId
);
SPLERR SPLENTRY RxPrintJobEnum(
IN LPTSTR pszServer,
IN LPTSTR pszQueueName,
IN DWORD uLevel,
OUT LPBYTE pbBuf,
IN DWORD cbBuf,
OUT LPDWORD pcReturned,
OUT LPDWORD pcTotal
);
/*
* Values for parmnum in RxPrintQSetInfo.
*/
#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.
*/
#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 RxPrintJobSetInfo.
*/
#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 RxPrintDestControl.
*/
#define PRD_DELETE 0
#define PRD_PAUSE 1
#define PRD_CONT 2
#define PRD_RESTART 3
/*
* Values for parmnum in RxPrintDestSetInfo.
*/
#define PRD_LOGADDR_PARMNUM 3
#define PRD_COMMENT_PARMNUM 7
#define PRD_DRIVERS_PARMNUM 8
#endif // ndef _RXPRINT_