Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

279 lines
6.1 KiB

/******************************Module*Header*******************************\
* Module Name: ntgdispl.h
*
* Created: 21-Feb-1995 10:05:31
* Author: Eric Kutter [erick]
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
\**************************************************************************/
#define GDISPOOL_API 0x80000000
#ifndef W32KAPI
#define W32KAPI DECLSPEC_ADDRSAFE
#endif
// NON-API GDISPOOL calls must NOT have MSB set
#define GDISPOOL_TERMINATETHREAD 0x00000000
#define GDISPOOL_INPUT2SMALL 0x00000001
#define GDISPOOL_GETPATHNAME 0x00000002
#define GDISPOOL_UNLOADDRIVER_COMPLETE 0x00000003
// API GDISPOOL messages MUST have MSB set
#define GDISPOOL_WRITE 0x80000000
#define GDISPOOL_OPENPRINTER 0x80000001
#define GDISPOOL_CLOSEPRINTER 0x80000002
#define GDISPOOL_ABORTPRINTER 0x80000003
#define GDISPOOL_STARTDOCPRINTER 0x80000004
#define GDISPOOL_STARTPAGEPRINTER 0x80000005
#define GDISPOOL_ENDPAGEPRINTER 0x80000006
#define GDISPOOL_ENDDOCPRINTER 0x80000007
#define GDISPOOL_GETPRINTERDRIVER 0x80000008
#define GDISPOOL_GETPRINTERDATA 0x80000009
#define GDISPOOL_SETPRINTERDATA 0x8000000a
#define GDISPOOL_ENUMFORMS 0x8000000b
#define GDISPOOL_GETFORM 0x8000000c
#define GDISPOOL_GETPRINTER 0x8000000d
DECLARE_HANDLE(HSPOOLOBJ);
/*********************************Class************************************\
* SPOOLESC
*
* structure used to communicate between the kernel and spooler process
*
*
* History:
* 27-Mar-1995 -by- Eric Kutter [erick]
* Wrote it.
\**************************************************************************/
typedef struct _SPOOLESC
{
ULONG cj; // size of this structure including ajData[]
ULONG iMsg; // message index GDISPOOL_...
HANDLE hSpool; // spoolss spooler handle
ULONG cjOut; // required size of output buffer
HSPOOLOBJ hso; // kernel spool obj
ULONG ulRet; // return value from spooler API
BYTE ajData[1];
} SPOOLESC, *PSPOOLESC;
/****************************************************************************
* GREOPENPRINTER
* GRESTARTDOCPRINTER
* GREWRITEPRINTER
* GREGETPRINTERDATA
*
* The following structures are used package up the data unique to each
* spooler API
*
*
* History:
* 5/1/1995 by Gerrit van Wingerden [gerritv]
* Wrote it.
*****************************************************************************/
typedef struct _GREOPENPRINTER
{
LONG cj;
LONG cjName;
LONG cjDatatype;
LONG cjDevMode;
PRINTER_DEFAULTSW pd;
LONG alData[1];
} GREOPENPRINTER;
typedef struct _GREGETPRINTERDRIVER
{
LONG cj;
LONG cjEnv;
DWORD dwLevel;
LONG cjData;
LONG alData[1];
} GREGETPRINTERDRIVER;
typedef struct _GRESTARTDOCPRINTER
{
LONG cj;
LONG cjDocName;
LONG cjOutputFile;
HANDLE hFile;
DWORD TargetProcessID;
LONG cjDatatype;
LONG cjData;
LONG alData[1];
} GRESTARTDOCPRINTER;
typedef struct _GREWRITEPRINTER
{
LONG cj;
PULONG pUserModeData;
ULONG cjUserModeData;
LONG cjData;
LONG alData[1];
} GREWRITEPRINTER;
typedef struct _GREGETPRINTERDATA
{
LONG cj;
LONG cjValueName;
DWORD dwType;
DWORD dwNeeded;
LONG cjData;
LONG alData[1];
} GREGETPRINTERDATA;
typedef struct _GRESETPRINTERDATA
{
LONG cj;
LONG cjType;
LONG cjPrinterData;
DWORD dwType;
LONG alData[1];
} GRESETPRINTERDATA;
typedef struct _GREENUMFORMS
{
LONG cj;
DWORD dwLevel;
LONG cjData;
LONG nForms;
LONG alData[1];
} GREENUMFORMS;
typedef struct _GREGETPRINTER
{
LONG cj;
DWORD dwLevel;
LONG cjData;
LONG alData[1];
} GREGETPRINTER;
typedef struct _GREGETFORM
{
LONG cj;
LONG cjFormName;
DWORD dwLevel;
LONG cjData;
LONG alData[1];
} GREGETFORM;
typedef struct _GREINPUT2SMALL
{
LONG cj;
DWORD dwNeeded;
BYTE *pjPsm;
} GREINPUT2SMALL;
typedef struct _GETPATHNAME
{
LONG cj;
WCHAR awcPath[MAX_PATH+1];
} GREGETPATHNAME;
/**************************************************************************\
*
* gre internal spooler entry points
*
\**************************************************************************/
ULONG GreGetSpoolMessage(PSPOOLESC, PBYTE, ULONG, PULONG, ULONG);
BOOL WINAPI
GreEnumFormsW(
HANDLE hSpool,
GREENUMFORMS *pEnumForms,
GREENUMFORMS *pEnumFormsReturn,
LONG cjOut );
BOOL
GreGenericW(
HANDLE hSpool,
PULONG pX,
PULONG pXReturn,
LONG cjOut,
LONG MessageID,
ULONG ulFlag );
BOOL WINAPI
GreGetPrinterDriverW(
HANDLE hSpool,
GREGETPRINTERDRIVER *pGetPrinterDriver,
GREGETPRINTERDRIVER *pGetPrinterDriverReturn,
LONG cjOut );
DWORD
GreStartDocPrinterW(
HANDLE hSpool,
GRESTARTDOCPRINTER *pStartDocPrinter,
GRESTARTDOCPRINTER *pStartDocPrinterReturn
);
BOOL
WINAPI
GreOpenPrinterW(
GREOPENPRINTER *pOpenPrinter,
LPHANDLE phPrinter);
ULONG
GreWritePrinter(
HANDLE hSpool,
GREWRITEPRINTER *pWritePrinter);
BOOL
GrePrinterDriverUnloadW(
LPWSTR pDriverName);
W32KAPI
BOOL APIENTRY
NtGdiInitSpool();
W32KAPI
ULONG APIENTRY
NtGdiGetSpoolMessage(
PSPOOLESC psesc,
ULONG cjMsg,
PULONG pulOut,
ULONG cjOut);
ULONG APIENTRY
SendSimpleMessage(
HANDLE hSpool,
ULONG iMsg,
DWORD dwSpoolInstance);
BOOL APIENTRY
GdiInitSpool();
ULONG APIENTRY
GdiGetSpoolMessage(
PSPOOLESC psesc,
ULONG cjMsg,
PULONG pulOut,
ULONG cjOut);
ULONG APIENTRY
GdiSpoolEsc(
HANDLE hSpool,
ULONG iMsg,
PBYTE pjIn,
ULONG cjIn,
PBYTE pjOut,
ULONG cjOut);