admin
base
com
developer
drivers
ds
enduser
inetcore
inetsrv
loc
mergedcomponents
multimedia
net
printscan
ddk
dload
fax
faxsrv
inc
lib
print
drivers
embedded
spooler
dbglib
exts
idl
inc
inetpp2
inetsrv
localspl
monitors
oleprn
perflib
prtprocs
scripts
splexts
spllib
splsetup
spoolss
wpnpinst
bin
cab
dll16
dll32
exe
inc
lib
thunk
webptprn
wow
inc
cmacros.inc
cmacros.mas
cmstrip.c
commdlg.h
common.ver
convdll.inc
cpl.h
custcntl.h
dbcs.c
dbcs.h
dde.h
ddeml.h
debug.h
debugsys.inc
direct.h
dlgs.h
dosx.inc
drivinit.h
gdidefs.inc
gpfix.inc
header.txt
ime.h
int31.inc
io.h
klayer.inc
layer.inc
locking.h
logerror.h
logerror.inc
lzdos.h
lzexpand.h
memory.h
mep.tmp
mmddk.h
mmddk.inc
mmsystem.h
mmsystem.inc
msdefine.h
multires.h
newexe.inc
ole.h
paswindw.inc
penwin.h
prd.inc
print.h
printer.h
prsht.h
rom.inc
setupx.h
shellapi.h
spl_wnt.h
spool.h
stat.h
stdarg.h
stdio.h
stdlib.h
string.h
strtable.h
style.h
testing.h
time.h
timeb.h
types.h
userproc.h
utime.h
ver.h
version.h
w32sys.h
wfwnet.h
wife.h
win3deb.inc
windefs.inc
windows.h
windows.inc
windowsx.h
winexp.h
winnet.h
winnls.h
wmsyserr.h
lib
dirs
dirs
makefil0
dirs
publish
scan
ui
wia
dirs
project.mk
public
published
sdktools
shell
termsrv
tools
windows
dirs
makefil0
176 lines
6.0 KiB
C
176 lines
6.0 KiB
C
#ifndef WINAPI
|
|
#ifdef BUILDDLL /* ;Internal */
|
|
#define WINAPI _loadds far pascal /* ;Internal */
|
|
#define CALLBACK _loadds far pascal /* ;Internal */
|
|
#else /* ;Internal */
|
|
#define WINAPI far pascal
|
|
#define CALLBACK far pascal
|
|
#endif /* ;Internal */
|
|
#endif
|
|
|
|
#define LWORD(x) ((int)((x)&0xFFFF))
|
|
|
|
|
|
/* spooler error code */
|
|
#define SP_ERROR (-1) /* general error - mostly used when spooler isn't loaded */
|
|
#define SP_APPABORT (-2) /* app aborted the job through the driver */
|
|
#define SP_USERABORT (-3) /* user aborted the job through spooler's front end */
|
|
#define SP_OUTOFDISK (-4) /* simply no disk to spool */
|
|
#define SP_OUTOFMEMORY (-5)
|
|
#define SP_RETRY (-6) /* retry sending to the port again */
|
|
#define SP_NOTREPORTED 0x4000 /* set if GDI did not report error */
|
|
|
|
/* subfunctions of the Spooler support function, GetSpoolJob()
|
|
* CP_* are used by the control panel for modifying the printer setup/
|
|
*/
|
|
#define SP_PRINTERNAME 20
|
|
#define SP_REGISTER 21
|
|
#define SP_CONNECTEDPORTCNT 25
|
|
#define SP_QUERYDISKUSAGE 26
|
|
#define SP_DISKFREED 27
|
|
#define SP_INIT 28
|
|
#define SP_LISTEDPORTCNT 29
|
|
#define CP_ISPORTFREE 30
|
|
#define CP_REINIT 31
|
|
#define SP_TXTIMEOUT 32
|
|
#define SP_DNSTIMEOUT 33
|
|
#define CP_CHECKSPOOLER 34
|
|
#define CP_SET_TT_ONLY 35
|
|
#define CP_SETSPOOLER 36
|
|
#define CP_SETDOSPRINT 37
|
|
|
|
|
|
#define SP_DISK_BUFFER (20000) /* wait for about 20 K of disk space to free
|
|
free up before attempting to write to disk */
|
|
|
|
/* messages posted or sent to the spooler window
|
|
*/
|
|
#define SP_NEWJOB 0x1001
|
|
#define SP_DELETEJOB 0x1002
|
|
#define SP_DISKNEEDED 0x1003
|
|
#define SP_QUERYDISKAVAIL 0x1004
|
|
#define SP_ISPORTFREE 0x1005
|
|
#define SP_CHANGEPORT 0x1006
|
|
|
|
/* in /windows/oem/printer.h */
|
|
|
|
|
|
/* job status flag bits in the type field of the JCB structure
|
|
*/
|
|
#define JB_ENDDOC 0x0001
|
|
#define JB_INVALIDDOC 0x0002
|
|
#define JB_DIRECT_SPOOL 0x8000 /* go directly to the printer without the spooler */
|
|
#define JB_FILE_PORT 0x4000 /* were given a file for a port name */
|
|
#define JB_VALID_SPOOL 0x2000 /* everything is cool, continue to spool normally */
|
|
#define JB_NOTIFIED_SPOOLER 0x1000 /* already notified the spooler of this job */
|
|
#define JB_WAITFORDISK 0x0800 /* out of disk condition has been detected previously */
|
|
#define JB_DEL_FILE 0x0400 /* no deletion of file after spool */
|
|
#define JB_FILE_SPOOL 0x0200 /* spooling a file */
|
|
#define JB_NET_SPOOL 0x0100 /* sending directly to network */
|
|
|
|
/* allow 2 dialog box messages initially and increment 8 at a time */
|
|
#define SP_DLGINC 8
|
|
#define SP_DLGINIT 8
|
|
|
|
#define NAME_LEN 32
|
|
#define BUF_SIZE 128
|
|
#define MAX_PROFILE 80
|
|
#define JCBBUF_LEN 256
|
|
|
|
#define lower(c) ((c > 'A' && c < 'Z') ? (c - 'A' + 'a') : c)
|
|
|
|
#define IDS_LENGTH 60
|
|
|
|
/* comm driver stuff */
|
|
#define COMM_INQUE 0x010 /* wm091385 */
|
|
#define COMM_OUTQUE 0x030 /* wm091385 */
|
|
#define COMM_OUTQUEPMODE 0x400 /* New size for pmode */
|
|
|
|
#define COMM_ERR_BIT 0x8000
|
|
#define TXTIMEOUT 45000 /* milliseconds */
|
|
#define DNSTIMEOUT 15000 /* milliseconds */
|
|
|
|
#define BAUDRATE 0
|
|
#define PARITY 1
|
|
#define BYTESIZE 2
|
|
#define STOPBITS 3
|
|
#define REPEAT 4
|
|
|
|
|
|
typedef struct {
|
|
int type; /* type of dialog. This will tell whether it is */
|
|
/* call back function or pure dialog etc */
|
|
int size; /* size of special function data */
|
|
int adr;
|
|
}DIALOGMARK;
|
|
|
|
#define SP_TEXT 0 /* text type */
|
|
#define SP_NOTTEXT 1 /* not text type */
|
|
#define SP_DIALOG 2 /* dialog type data */
|
|
#define SP_CALLBACK 3 /* call back type function */
|
|
|
|
#define MAXPORTLIST 20 /* max # ports listed in win.ini [ports] */
|
|
#define MAXPORT MAXPORTLIST
|
|
#define MAXSPOOL 100 /* max # jobs spooled per port */
|
|
#define MAXMAP 18
|
|
#define PORTINDENT 2
|
|
#define JOBINDENT 3
|
|
#define MAXPAGE 7 /* allow 7 pages at first */
|
|
#define INC_PAGE 8 /* increase by 8 pages at a time */
|
|
|
|
typedef struct {
|
|
int pnum;
|
|
int printeratom;
|
|
long txtimeout;
|
|
long dnstimeout;
|
|
}JCBQ;
|
|
|
|
typedef struct jcb {
|
|
unsigned type;
|
|
int pagecnt;
|
|
int maxpage;
|
|
int portnum;
|
|
HDC hDC;
|
|
int chBuf;
|
|
long timeSpooled;
|
|
char buffer[JCBBUF_LEN];
|
|
unsigned long size;
|
|
unsigned long iLastPage;
|
|
WORD psp; // the PSP of the app that started printing
|
|
char jobName[NAME_LEN];
|
|
int page[MAXPAGE];
|
|
}JCB;
|
|
|
|
typedef struct page {
|
|
int filenum;
|
|
unsigned maxdlg; /* max number of dialog */
|
|
unsigned dlgptr; /* number of dialogs */
|
|
long spoolsize;
|
|
OFSTRUCT fileBuf;
|
|
DIALOGMARK dialog[SP_DLGINIT];
|
|
}PAGE;
|
|
|
|
#define SP_COMM_PORT 0
|
|
#define SP_FILE_PORT 1
|
|
#define SP_REMOTE_QUEUE 2
|
|
#define SP_QUERYVALIDJOB 30
|
|
|
|
|
|
typedef struct
|
|
{
|
|
int type;
|
|
int fn;
|
|
long retry; /* system timer on first error */
|
|
} PORT;
|
|
|
|
|
|
/* exported routines */
|
|
BOOL WINAPI QueryJob(HANDLE, int);
|
|
BOOL WINAPI QueryAbort(HANDLE, int);
|
|
|
|
int WINAPI WriteDialog(HANDLE hJCB, LPSTR str, int n);
|
|
int WINAPI WriteSpool(HANDLE hJCB, LPSTR str, int n);
|
|
|
|
LONG WINAPI GetSpoolJob(int, long);
|
|
char WINAPI GetSpoolTempDrive(void);
|