mirror of https://github.com/lianthony/NT4.0
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.
602 lines
16 KiB
602 lines
16 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 20
|
|
/**END_INTERNAL**/
|
|
|
|
|
|
typedef NET_API_STATUS SPLERR; /* err */
|
|
|
|
|
|
typedef struct _PRJINFO% { /* prj1 */
|
|
WORD uJobId;
|
|
TCHAR% szUserName[LM20_UNLEN+1];
|
|
TCHAR% pad_1;
|
|
TCHAR% szNotifyName[LM20_CNLEN+1];
|
|
TCHAR% szDataType[DTLEN+1];
|
|
LPTSTR% pszParms;
|
|
WORD uPosition;
|
|
WORD fsStatus;
|
|
LPTSTR% pszStatus;
|
|
DWORD ulSubmitted;
|
|
DWORD ulSize;
|
|
LPTSTR% pszComment;
|
|
} PRJINFO%;
|
|
typedef PRJINFO% far *PPRJINFO%;
|
|
typedef PRJINFO% near *NPPRJINFO%;
|
|
|
|
typedef struct _PRJINFO2% { /* prj2 */
|
|
WORD uJobId;
|
|
WORD uPriority;
|
|
LPTSTR% pszUserName;
|
|
WORD uPosition;
|
|
WORD fsStatus;
|
|
DWORD ulSubmitted;
|
|
DWORD ulSize;
|
|
LPTSTR% pszComment;
|
|
LPTSTR% pszDocument;
|
|
} PRJINFO2%;
|
|
typedef PRJINFO2% far *PPRJINFO2%;
|
|
typedef PRJINFO2% near *NPPRJINFO2%;
|
|
|
|
typedef struct _PRJINFO3% { /* prj */
|
|
WORD uJobId;
|
|
WORD uPriority;
|
|
LPTSTR% pszUserName;
|
|
WORD uPosition;
|
|
WORD fsStatus;
|
|
DWORD ulSubmitted;
|
|
DWORD ulSize;
|
|
LPTSTR% pszComment;
|
|
LPTSTR% pszDocument;
|
|
LPTSTR% pszNotifyName;
|
|
LPTSTR% pszDataType;
|
|
LPTSTR% pszParms;
|
|
LPTSTR% pszStatus;
|
|
LPTSTR% pszQueue;
|
|
LPTSTR% pszQProcName;
|
|
LPTSTR% pszQProcParms;
|
|
LPTSTR% pszDriverName;
|
|
LPVOID pDriverData;
|
|
LPTSTR% pszPrinterName;
|
|
} PRJINFO3%;
|
|
typedef PRJINFO3% far *PPRJINFO3%;
|
|
typedef PRJINFO3% near *NPPRJINFO3%;
|
|
|
|
|
|
typedef struct _PRDINFO% { /* prd1 */
|
|
TCHAR% szName[PDLEN+1];
|
|
TCHAR% szUserName[LM20_UNLEN+1];
|
|
WORD uJobId;
|
|
WORD fsStatus;
|
|
LPTSTR% pszStatus;
|
|
WORD time;
|
|
} PRDINFO%;
|
|
typedef PRDINFO% far *PPRDINFO%;
|
|
typedef PRDINFO% near *NPPRDINFO%;
|
|
|
|
|
|
typedef struct _PRDINFO3% { /* prd */
|
|
LPTSTR% pszPrinterName;
|
|
LPTSTR% pszUserName;
|
|
LPTSTR% pszLogAddr;
|
|
WORD uJobId;
|
|
WORD fsStatus;
|
|
LPTSTR% pszStatus;
|
|
LPTSTR% pszComment;
|
|
LPTSTR% pszDrivers;
|
|
WORD time;
|
|
WORD pad1;
|
|
} PRDINFO3%;
|
|
typedef PRDINFO3% far *PPRDINFO3%;
|
|
typedef PRDINFO3% near *NPPRDINFO3%;
|
|
|
|
|
|
typedef struct _PRQINFO% { /* prq1 */
|
|
TCHAR% szName[LM20_QNLEN+1];
|
|
TCHAR% pad_1;
|
|
WORD uPriority;
|
|
WORD uStartTime;
|
|
WORD uUntilTime;
|
|
LPTSTR% pszSepFile;
|
|
LPTSTR% pszPrProc;
|
|
LPTSTR% pszDestinations;
|
|
LPTSTR% pszParms;
|
|
LPTSTR% pszComment;
|
|
WORD fsStatus;
|
|
WORD cJobs;
|
|
} PRQINFO%;
|
|
typedef PRQINFO% far *PPRQINFO%;
|
|
typedef PRQINFO% near *NPPRQINFO%;
|
|
|
|
|
|
typedef struct _PRQINFO3% { /* prq */
|
|
LPTSTR% pszName;
|
|
WORD uPriority;
|
|
WORD uStartTime;
|
|
WORD uUntilTime;
|
|
WORD pad1;
|
|
LPTSTR% pszSepFile;
|
|
LPTSTR% pszPrProc;
|
|
LPTSTR% pszParms;
|
|
LPTSTR% pszComment;
|
|
WORD fsStatus;
|
|
WORD cJobs;
|
|
LPTSTR% pszPrinters;
|
|
LPTSTR% pszDriverName;
|
|
LPVOID pDriverData;
|
|
} PRQINFO3%;
|
|
typedef PRQINFO3% far *PPRQINFO3%;
|
|
typedef PRQINFO3% near *NPPRQINFO3%;
|
|
|
|
|
|
typedef struct _PRQINFO52% { /* prq */
|
|
WORD uVersion;
|
|
LPTSTR% pszModelName;
|
|
LPTSTR% pszDriverName;
|
|
LPTSTR% pszDataFileName;
|
|
LPTSTR% pszMonitorName;
|
|
LPTSTR% pszDriverPath;
|
|
LPTSTR% pszDefaultDataType;
|
|
LPTSTR% pszHelpFile;
|
|
LPTSTR% pszConfigFile;
|
|
WORD cDependentNames;
|
|
LPTSTR% pszDependentNames[MAX_DEPENDENT_FILES];
|
|
} PRQINFO52%;
|
|
typedef PRQINFO52% far *PPRQINFO52%;
|
|
typedef PRQINFO52% near *NPPRQINFO52%;
|
|
|
|
|
|
/*
|
|
* structure for RxPrintJobGetId
|
|
*/
|
|
typedef struct _PRIDINFO% { /* prjid */
|
|
WORD uJobId;
|
|
TCHAR% szServer[LM20_CNLEN + 1];
|
|
TCHAR% szQName[LM20_QNLEN+1];
|
|
CHAR pad_1;
|
|
} PRIDINFO%;
|
|
typedef PRIDINFO% far *PPRIDINFO%;
|
|
typedef PRIDINFO% near *NPPRIDINFO%;
|
|
|
|
|
|
/****************************************************************
|
|
* *
|
|
* 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
|
|
);
|
|
|
|
|
|
/****************************************************************
|
|
* *
|
|
* Character set conversion functions *
|
|
* *
|
|
****************************************************************/
|
|
|
|
|
|
NET_API_STATUS
|
|
NetpConvertPrintDestCharSet(
|
|
IN DWORD Level,
|
|
IN BOOL AddOrSetInfoApi,
|
|
IN LPVOID FromInfo,
|
|
OUT LPVOID ToInfo,
|
|
IN BOOL ToUnicode,
|
|
IN OUT LPBYTE * ToStringAreaPtr OPTIONAL
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NetpConvertPrintDestArrayCharSet(
|
|
IN DWORD Level,
|
|
IN BOOL AddOrSetInfoApi,
|
|
IN LPVOID FromInfo,
|
|
OUT LPVOID ToInfo,
|
|
IN BOOL ToUnicode,
|
|
IN OUT LPBYTE * ToStringAreaPtr OPTIONAL,
|
|
IN DWORD DestCount
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NetpConvertPrintJobCharSet(
|
|
IN DWORD Level,
|
|
IN BOOL AddOrSetInfoApi,
|
|
IN LPVOID FromInfo,
|
|
OUT LPVOID ToInfo,
|
|
IN BOOL ToUnicode,
|
|
IN OUT LPBYTE * ToStringAreaPtr OPTIONAL
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NetpConvertPrintJobArrayCharSet(
|
|
IN DWORD Level,
|
|
IN BOOL AddOrSetInfoApi,
|
|
IN LPVOID FromInfo,
|
|
OUT LPVOID ToInfo,
|
|
IN BOOL ToUnicode,
|
|
IN OUT LPBYTE * ToStringAreaPtr OPTIONAL,
|
|
IN DWORD JobCount
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NetpConvertPrintQArrayCharSet(
|
|
IN DWORD Level,
|
|
IN BOOL AddOrSetInfoApi,
|
|
IN LPVOID FromInfo,
|
|
OUT LPVOID ToInfo,
|
|
IN BOOL ToUnicode,
|
|
IN OUT LPBYTE * ToStringAreaPtr OPTIONAL,
|
|
IN DWORD QCount
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NetpConvertPrintQCharSet(
|
|
IN DWORD Level,
|
|
IN BOOL AddOrSetInfoApi,
|
|
IN LPVOID FromInfo,
|
|
OUT LPVOID ToInfo,
|
|
IN BOOL ToUnicode,
|
|
IN OUT LPBYTE * ToStringAreaPtr OPTIONAL
|
|
);
|
|
|
|
|
|
DWORD
|
|
NetpJobCountForQueue(
|
|
IN DWORD QueueLevel,
|
|
IN LPVOID Queue,
|
|
IN BOOL HasUnicodeStrings
|
|
);
|
|
|
|
VOID
|
|
NetpSetJobCountForQueue(
|
|
IN DWORD QueueLevel,
|
|
IN OUT LPVOID Queue,
|
|
IN BOOL HasUnicodeStrings,
|
|
IN DWORD JobCount
|
|
);
|
|
|
|
/*
|
|
* 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_
|
|
|