Windows NT 4.0 source code leak
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

/*++
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_