diff win32/winspool.d @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/win32/winspool.d	Tue Apr 05 20:44:01 2011 +0200
@@ -0,0 +1,961 @@
+/***********************************************************************\
+*                              winspool.d                               *
+*                                                                       *
+*                       Windows API header module                       *
+*                                                                       *
+*                 Translated from MinGW Windows headers                 *
+*                                                                       *
+*                       Placed into public domain                       *
+\***********************************************************************/
+module win32.winspool;
+pragma(lib, "winspool.lib");
+
+private import win32.w32api, win32.windef, win32.wingdi;
+private import win32.winbase; // for SYSTEMTIME
+
+// FIXME: clean up Windows version support
+
+const DI_CHANNEL=1;
+const DI_CHANNEL_WRITE=2;
+const DI_READ_SPOOL_JOB=3;
+
+const FORM_BUILTIN=1;
+
+const JOB_CONTROL_PAUSE=1;
+const JOB_CONTROL_RESUME=2;
+const JOB_CONTROL_CANCEL=3;
+const JOB_CONTROL_RESTART=4;
+const JOB_CONTROL_DELETE=5;
+const JOB_STATUS_PAUSED=1;
+const JOB_STATUS_ERROR=2;
+const JOB_STATUS_DELETING=4;
+const JOB_STATUS_SPOOLING=8;
+const JOB_STATUS_PRINTING=16;
+const JOB_STATUS_OFFLINE=32;
+const JOB_STATUS_PAPEROUT=0x40;
+const JOB_STATUS_PRINTED=0x80;
+const JOB_STATUS_DELETED=0x100;
+const JOB_STATUS_BLOCKED_DEVQ=0x200;
+const JOB_STATUS_USER_INTERVENTION=0x400;
+
+const JOB_POSITION_UNSPECIFIED=0;
+
+const JOB_NOTIFY_TYPE=1;
+
+const JOB_NOTIFY_FIELD_PRINTER_NAME=0;
+const JOB_NOTIFY_FIELD_MACHINE_NAME=1;
+const JOB_NOTIFY_FIELD_PORT_NAME=2;
+const JOB_NOTIFY_FIELD_USER_NAME=3;
+const JOB_NOTIFY_FIELD_NOTIFY_NAME=4;
+const JOB_NOTIFY_FIELD_DATATYPE=5;
+const JOB_NOTIFY_FIELD_PRINT_PROCESSOR=6;
+const JOB_NOTIFY_FIELD_PARAMETERS=7;
+const JOB_NOTIFY_FIELD_DRIVER_NAME=8;
+const JOB_NOTIFY_FIELD_DEVMODE=9;
+const JOB_NOTIFY_FIELD_STATUS=10;
+const JOB_NOTIFY_FIELD_STATUS_STRING=11;
+const JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12;
+const JOB_NOTIFY_FIELD_DOCUMENT=13;
+const JOB_NOTIFY_FIELD_PRIORITY=14;
+const JOB_NOTIFY_FIELD_POSITION=15;
+const JOB_NOTIFY_FIELD_SUBMITTED=16;
+const JOB_NOTIFY_FIELD_START_TIME=17;
+const JOB_NOTIFY_FIELD_UNTIL_TIME=18;
+const JOB_NOTIFY_FIELD_TIME=19;
+const JOB_NOTIFY_FIELD_TOTAL_PAGES=20;
+const JOB_NOTIFY_FIELD_PAGES_PRINTED=21;
+const JOB_NOTIFY_FIELD_TOTAL_BYTES=22;
+const JOB_NOTIFY_FIELD_BYTES_PRINTED=23;
+
+const JOB_ACCESS_ADMINISTER = 16;
+const JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER;
+const JOB_READ       = STANDARD_RIGHTS_READ     | JOB_ACCESS_ADMINISTER;
+const JOB_WRITE      = STANDARD_RIGHTS_WRITE    | JOB_ACCESS_ADMINISTER;
+const JOB_EXECUTE    = STANDARD_RIGHTS_EXECUTE  | JOB_ACCESS_ADMINISTER;
+
+const PRINTER_NOTIFY_OPTIONS_REFRESH=1;
+const PRINTER_ACCESS_ADMINISTER=4;
+const PRINTER_ACCESS_USE=8;
+
+const PRINTER_ERROR_INFORMATION=0x80000000;
+const PRINTER_ERROR_WARNING=0x40000000;
+const PRINTER_ERROR_SEVERE=0x20000000;
+const PRINTER_ERROR_OUTOFPAPER=1;
+const PRINTER_ERROR_JAM=2;
+const PRINTER_ERROR_OUTOFTONER=4;
+
+const PRINTER_CONTROL_PAUSE=1;
+const PRINTER_CONTROL_RESUME=2;
+const PRINTER_CONTROL_PURGE=3;
+const PRINTER_CONTROL_SET_STATUS=4;
+
+const PRINTER_STATUS_PAUSED = 1;
+const PRINTER_STATUS_ERROR = 2;
+const PRINTER_STATUS_PENDING_DELETION = 4;
+const PRINTER_STATUS_PAPER_JAM = 8;
+const PRINTER_STATUS_PAPER_OUT = 0x10;
+const PRINTER_STATUS_MANUAL_FEED = 0x20;
+const PRINTER_STATUS_PAPER_PROBLEM = 0x40;
+const PRINTER_STATUS_OFFLINE = 0x80;
+const PRINTER_STATUS_IO_ACTIVE = 0x100;
+const PRINTER_STATUS_BUSY = 0x200;
+const PRINTER_STATUS_PRINTING = 0x400;
+const PRINTER_STATUS_OUTPUT_BIN_FULL = 0x800;
+const PRINTER_STATUS_NOT_AVAILABLE = 0x1000;
+const PRINTER_STATUS_WAITING = 0x2000;
+const PRINTER_STATUS_PROCESSING = 0x4000;
+const PRINTER_STATUS_INITIALIZING = 0x8000;
+const PRINTER_STATUS_WARMING_UP = 0x10000;
+const PRINTER_STATUS_TONER_LOW = 0x20000;
+const PRINTER_STATUS_NO_TONER = 0x40000;
+const PRINTER_STATUS_PAGE_PUNT = 0x80000;
+const PRINTER_STATUS_USER_INTERVENTION = 0x100000;
+const PRINTER_STATUS_OUT_OF_MEMORY = 0x200000;
+const PRINTER_STATUS_DOOR_OPEN = 0x400000;
+const PRINTER_STATUS_SERVER_UNKNOWN = 0x800000;
+const PRINTER_STATUS_POWER_SAVE = 0x1000000;
+
+const PRINTER_ATTRIBUTE_QUEUED=1;
+const PRINTER_ATTRIBUTE_DIRECT=2;
+const PRINTER_ATTRIBUTE_DEFAULT=4;
+const PRINTER_ATTRIBUTE_SHARED=8;
+const PRINTER_ATTRIBUTE_NETWORK=0x10;
+const PRINTER_ATTRIBUTE_HIDDEN=0x20;
+const PRINTER_ATTRIBUTE_LOCAL=0x40;
+const PRINTER_ATTRIBUTE_ENABLE_DEVQ=0x80;
+const PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS=0x100;
+const PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST=0x200;
+const PRINTER_ATTRIBUTE_WORK_OFFLINE=0x400;
+const PRINTER_ATTRIBUTE_ENABLE_BIDI=0x800;
+const PRINTER_ATTRIBUTE_RAW_ONLY=0x1000;
+const PRINTER_ATTRIBUTE_PUBLISHED=0x2000;
+
+const PRINTER_ENUM_DEFAULT=1;
+const PRINTER_ENUM_LOCAL=2;
+const PRINTER_ENUM_CONNECTIONS=4;
+const PRINTER_ENUM_FAVORITE=4;
+const PRINTER_ENUM_NAME=8;
+const PRINTER_ENUM_REMOTE=16;
+const PRINTER_ENUM_SHARED=32;
+const PRINTER_ENUM_NETWORK=0x40;
+const PRINTER_ENUM_EXPAND=0x4000;
+const PRINTER_ENUM_CONTAINER=0x8000;
+const PRINTER_ENUM_ICONMASK=0xff0000;
+const PRINTER_ENUM_ICON1=0x10000;
+const PRINTER_ENUM_ICON2=0x20000;
+const PRINTER_ENUM_ICON3=0x40000;
+const PRINTER_ENUM_ICON4=0x80000;
+const PRINTER_ENUM_ICON5=0x100000;
+const PRINTER_ENUM_ICON6=0x200000;
+const PRINTER_ENUM_ICON7=0x400000;
+const PRINTER_ENUM_ICON8=0x800000;
+
+const PRINTER_NOTIFY_TYPE=0;
+
+const PRINTER_NOTIFY_FIELD_SERVER_NAME=0;
+const PRINTER_NOTIFY_FIELD_PRINTER_NAME=1;
+const PRINTER_NOTIFY_FIELD_SHARE_NAME=2;
+const PRINTER_NOTIFY_FIELD_PORT_NAME=3;
+const PRINTER_NOTIFY_FIELD_DRIVER_NAME=4;
+const PRINTER_NOTIFY_FIELD_COMMENT=5;
+const PRINTER_NOTIFY_FIELD_LOCATION=6;
+const PRINTER_NOTIFY_FIELD_DEVMODE=7;
+const PRINTER_NOTIFY_FIELD_SEPFILE=8;
+const PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR=9;
+const PRINTER_NOTIFY_FIELD_PARAMETERS=10;
+const PRINTER_NOTIFY_FIELD_DATATYPE=11;
+const PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12;
+const PRINTER_NOTIFY_FIELD_ATTRIBUTES=13;
+const PRINTER_NOTIFY_FIELD_PRIORITY=14;
+const PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY=15;
+const PRINTER_NOTIFY_FIELD_START_TIME=16;
+const PRINTER_NOTIFY_FIELD_UNTIL_TIME=17;
+const PRINTER_NOTIFY_FIELD_STATUS=18;
+const PRINTER_NOTIFY_FIELD_STATUS_STRING=19;
+const PRINTER_NOTIFY_FIELD_CJOBS=20;
+const PRINTER_NOTIFY_FIELD_AVERAGE_PPM=21;
+const PRINTER_NOTIFY_FIELD_TOTAL_PAGES=22;
+const PRINTER_NOTIFY_FIELD_PAGES_PRINTED=23;
+const PRINTER_NOTIFY_FIELD_TOTAL_BYTES=24;
+const PRINTER_NOTIFY_FIELD_BYTES_PRINTED=25;
+
+const PRINTER_CHANGE_ADD_PRINTER=1;
+const PRINTER_CHANGE_SET_PRINTER=2;
+const PRINTER_CHANGE_DELETE_PRINTER=4;
+const PRINTER_CHANGE_FAILED_CONNECTION_PRINTER=8;
+const PRINTER_CHANGE_PRINTER=0xFF;
+const PRINTER_CHANGE_ADD_JOB=0x100;
+const PRINTER_CHANGE_SET_JOB=0x200;
+const PRINTER_CHANGE_DELETE_JOB=0x400;
+const PRINTER_CHANGE_WRITE_JOB=0x800;
+const PRINTER_CHANGE_JOB=0xFF00;
+const PRINTER_CHANGE_ADD_FORM=0x10000;
+const PRINTER_CHANGE_SET_FORM=0x20000;
+const PRINTER_CHANGE_DELETE_FORM=0x40000;
+const PRINTER_CHANGE_FORM=0x70000;
+const PRINTER_CHANGE_ADD_PORT=0x100000;
+const PRINTER_CHANGE_CONFIGURE_PORT=0x200000;
+const PRINTER_CHANGE_DELETE_PORT=0x400000;
+const PRINTER_CHANGE_PORT=0x700000;
+const PRINTER_CHANGE_ADD_PRINT_PROCESSOR=0x1000000;
+const PRINTER_CHANGE_DELETE_PRINT_PROCESSOR=0x4000000;
+const PRINTER_CHANGE_PRINT_PROCESSOR=0x7000000;
+const PRINTER_CHANGE_ADD_PRINTER_DRIVER=0x10000000;
+const PRINTER_CHANGE_SET_PRINTER_DRIVER=0x20000000;
+const PRINTER_CHANGE_DELETE_PRINTER_DRIVER=0x40000000;
+const PRINTER_CHANGE_PRINTER_DRIVER=0x70000000;
+const PRINTER_CHANGE_TIMEOUT=0x80000000;
+const PRINTER_CHANGE_ALL=0x7777FFFF;
+
+const PRINTER_NOTIFY_INFO_DISCARDED=1;
+const PRINTER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE);
+const PRINTER_READ=(STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE);
+const PRINTER_WRITE=(STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE);
+const PRINTER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE);
+const NO_PRIORITY=0;
+const MAX_PRIORITY=99;
+const MIN_PRIORITY=1;
+const DEF_PRIORITY=1;
+const PORT_TYPE_WRITE=1;
+const PORT_TYPE_READ=2;
+const PORT_TYPE_REDIRECTED=4;
+const PORT_TYPE_NET_ATTACHED=8;
+const SERVER_ACCESS_ADMINISTER=1;
+const SERVER_ACCESS_ENUMERATE=2;
+
+const SERVER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE);
+const SERVER_READ=(STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE);
+const SERVER_WRITE=(STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE);
+const SERVER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE);
+
+const PORT_STATUS_TYPE_ERROR=1;
+const PORT_STATUS_TYPE_WARNING=2;
+const PORT_STATUS_TYPE_INFO=3;
+
+const PORT_STATUS_OFFLINE=1;
+const PORT_STATUS_PAPER_JAM=2;
+const PORT_STATUS_PAPER_OUT=3;
+const PORT_STATUS_OUTPUT_BIN_FULL=4;
+const PORT_STATUS_PAPER_PROBLEM=5;
+const PORT_STATUS_NO_TONER=6;
+const PORT_STATUS_DOOR_OPEN=7;
+const PORT_STATUS_USER_INTERVENTION=8;
+const PORT_STATUS_OUT_OF_MEMORY=9;
+const PORT_STATUS_TONER_LOW=10;
+const PORT_STATUS_WARMING_UP=11;
+const PORT_STATUS_POWER_SAVE=12;
+
+struct ADDJOB_INFO_1A {
+	LPSTR Path;
+	DWORD JobId;
+}
+alias ADDJOB_INFO_1A* PADDJOB_INFO_1A, LPADDJOB_INFO_1A;
+
+struct ADDJOB_INFO_1W {
+	LPWSTR Path;
+	DWORD JobId;
+}
+alias ADDJOB_INFO_1W* PADDJOB_INFO_1W, LPADDJOB_INFO_1W;
+
+struct DATATYPES_INFO_1A {
+	LPSTR pName;
+}
+alias DATATYPES_INFO_1A* PDATATYPES_INFO_1A, LPDATATYPES_INFO_1A;
+
+struct DATATYPES_INFO_1W {
+	LPWSTR pName;
+}
+alias DATATYPES_INFO_1W* PDATATYPES_INFO_1W, LPDATATYPES_INFO_1W;
+
+struct JOB_INFO_1A {
+	DWORD JobId;
+	LPSTR pPrinterName;
+	LPSTR pMachineName;
+	LPSTR pUserName;
+	LPSTR pDocument;
+	LPSTR pDatatype;
+	LPSTR pStatus;
+	DWORD Status;
+	DWORD Priority;
+	DWORD Position;
+	DWORD TotalPages;
+	DWORD PagesPrinted;
+	SYSTEMTIME Submitted;
+}
+alias JOB_INFO_1A* PJOB_INFO_1A, LPJOB_INFO_1A;
+
+struct JOB_INFO_1W {
+	DWORD JobId;
+	LPWSTR pPrinterName;
+	LPWSTR pMachineName;
+	LPWSTR pUserName;
+	LPWSTR pDocument;
+	LPWSTR pDatatype;
+	LPWSTR pStatus;
+	DWORD Status;
+	DWORD Priority;
+	DWORD Position;
+	DWORD TotalPages;
+	DWORD PagesPrinted;
+	SYSTEMTIME Submitted;
+}
+alias JOB_INFO_1W* PJOB_INFO_1W, LPJOB_INFO_1W;
+
+struct JOB_INFO_2A {
+	DWORD JobId;
+	LPSTR pPrinterName;
+	LPSTR pMachineName;
+	LPSTR pUserName;
+	LPSTR pDocument;
+	LPSTR pNotifyName;
+	LPSTR pDatatype;
+	LPSTR pPrintProcessor;
+	LPSTR pParameters;
+	LPSTR pDriverName;
+	LPDEVMODEA pDevMode;
+	LPSTR pStatus;
+	PSECURITY_DESCRIPTOR pSecurityDescriptor;
+	DWORD Status;
+	DWORD Priority;
+	DWORD Position;
+	DWORD StartTime;
+	DWORD UntilTime;
+	DWORD TotalPages;
+	DWORD Size;
+	SYSTEMTIME Submitted;
+	DWORD Time;
+	DWORD PagesPrinted;
+}
+alias JOB_INFO_2A* PJOB_INFO_2A, LPJOB_INFO_2A;
+
+struct JOB_INFO_2W {
+	DWORD JobId;
+	LPWSTR pPrinterName;
+	LPWSTR pMachineName;
+	LPWSTR pUserName;
+	LPWSTR pDocument;
+	LPWSTR pNotifyName;
+	LPWSTR pDatatype;
+	LPWSTR pPrintProcessor;
+	LPWSTR pParameters;
+	LPWSTR pDriverName;
+	LPDEVMODEW pDevMode;
+	LPWSTR pStatus;
+	PSECURITY_DESCRIPTOR pSecurityDescriptor;
+	DWORD Status;
+	DWORD Priority;
+	DWORD Position;
+	DWORD StartTime;
+	DWORD UntilTime;
+	DWORD TotalPages;
+	DWORD Size;
+	SYSTEMTIME Submitted;
+	DWORD Time;
+	DWORD PagesPrinted;
+}
+alias JOB_INFO_2W* PJOB_INFO_2W, LPJOB_INFO_2W;
+
+struct DOC_INFO_1A {
+	LPSTR pDocName;
+	LPSTR pOutputFile;
+	LPSTR pDatatype;
+}
+alias DOC_INFO_1A* PDOC_INFO_1A, LPDOC_INFO_1A;
+
+struct DOC_INFO_1W {
+	LPWSTR pDocName;
+	LPWSTR pOutputFile;
+	LPWSTR pDatatype;
+}
+alias DOC_INFO_1W* PDOC_INFO_1W, LPDOC_INFO_1W;
+
+struct DOC_INFO_2A {
+	LPSTR pDocName;
+	LPSTR pOutputFile;
+	LPSTR pDatatype;
+	DWORD dwMode;
+	DWORD JobId;
+}
+alias DOC_INFO_2A* PDOC_INFO_2A, LPDOC_INFO_2A;
+
+struct DOC_INFO_2W {
+	LPWSTR pDocName;
+	LPWSTR pOutputFile;
+	LPWSTR pDatatype;
+	DWORD  dwMode;
+	DWORD  JobId;
+}
+alias DOC_INFO_2W* PDOC_INFO_2W, LPDOC_INFO_2W;
+
+struct DRIVER_INFO_1A {
+	LPSTR pName;
+}
+alias DRIVER_INFO_1A* PDRIVER_INFO_1A, LPDRIVER_INFO_1A;
+
+struct DRIVER_INFO_1W {
+	LPWSTR pName;
+}
+alias DRIVER_INFO_1W* PDRIVER_INFO_1W, LPDRIVER_INFO_1W;
+
+struct DRIVER_INFO_2A {
+	DWORD cVersion;
+	LPSTR pName;
+	LPSTR pEnvironment;
+	LPSTR pDriverPath;
+	LPSTR pDataFile;
+	LPSTR pConfigFile;
+}
+alias DRIVER_INFO_2A* PDRIVER_INFO_2A, LPDRIVER_INFO_2A;
+
+struct DRIVER_INFO_2W {
+	DWORD  cVersion;
+	LPWSTR pName;
+	LPWSTR pEnvironment;
+	LPWSTR pDriverPath;
+	LPWSTR pDataFile;
+	LPWSTR pConfigFile;
+}
+alias DRIVER_INFO_2W* PDRIVER_INFO_2W, LPDRIVER_INFO_2W;
+
+struct DRIVER_INFO_3A {
+	DWORD cVersion;
+	LPSTR pName;
+	LPSTR pEnvironment;
+	LPSTR pDriverPath;
+	LPSTR pDataFile;
+	LPSTR pConfigFile;
+	LPSTR pHelpFile;
+	LPSTR pDependentFiles;
+	LPSTR pMonitorName;
+	LPSTR pDefaultDataType;
+}
+alias DRIVER_INFO_3A* PDRIVER_INFO_3A, LPDRIVER_INFO_3A;
+
+struct DRIVER_INFO_3W {
+	DWORD  cVersion;
+	LPWSTR pName;
+	LPWSTR pEnvironment;
+	LPWSTR pDriverPath;
+	LPWSTR pDataFile;
+	LPWSTR pConfigFile;
+	LPWSTR pHelpFile;
+	LPWSTR pDependentFiles;
+	LPWSTR pMonitorName;
+	LPWSTR pDefaultDataType;
+}
+alias DRIVER_INFO_3W* PDRIVER_INFO_3W, LPDRIVER_INFO_3W;
+
+struct MONITOR_INFO_1A {
+	LPSTR pName;
+}
+alias MONITOR_INFO_1A* PMONITOR_INFO_1A, LPMONITOR_INFO_1A;
+
+struct MONITOR_INFO_1W {
+	LPWSTR pName;
+}
+alias MONITOR_INFO_1W* PMONITOR_INFO_1W, LPMONITOR_INFO_1W;
+
+struct PORT_INFO_1A {
+	LPSTR pName;
+}
+alias PORT_INFO_1A* PPORT_INFO_1A, LPPORT_INFO_1A;
+
+struct PORT_INFO_1W {
+	LPWSTR pName;
+}
+alias PORT_INFO_1W* PPORT_INFO_1W, LPPORT_INFO_1W;
+
+struct MONITOR_INFO_2A {
+	LPSTR pName;
+	LPSTR pEnvironment;
+	LPSTR pDLLName;
+}
+alias MONITOR_INFO_2A* PMONITOR_INFO_2A, LPMONITOR_INFO_2A;
+
+struct MONITOR_INFO_2W {
+	LPWSTR pName;
+	LPWSTR pEnvironment;
+	LPWSTR pDLLName;
+}
+alias MONITOR_INFO_2W* PMONITOR_INFO_2W, LPMONITOR_INFO_2W;
+
+struct PORT_INFO_2A {
+	LPSTR pPortName;
+	LPSTR pMonitorName;
+	LPSTR pDescription;
+	DWORD fPortType;
+	DWORD Reserved;
+}
+alias PORT_INFO_2A* PPORT_INFO_2A, LPPORT_INFO_2A;
+
+struct PORT_INFO_2W {
+	LPWSTR pPortName;
+	LPWSTR pMonitorName;
+	LPWSTR pDescription;
+	DWORD fPortType;
+	DWORD Reserved;
+}
+alias PORT_INFO_2W* PPORT_INFO_2W, LPPORT_INFO_2W;
+
+struct PORT_INFO_3A {
+	DWORD dwStatus;
+	LPSTR pszStatus;
+	DWORD dwSeverity;
+}
+alias PORT_INFO_3A* PPORT_INFO_3A, LPPORT_INFO_3A;
+
+struct PORT_INFO_3W {
+	DWORD dwStatus;
+	LPWSTR pszStatus;
+	DWORD dwSeverity;
+}
+alias PORT_INFO_3W* PPORT_INFO_3W, LPPORT_INFO_3W;
+
+struct PRINTER_INFO_1A {
+	DWORD Flags;
+	LPSTR pDescription;
+	LPSTR pName;
+	LPSTR pComment;
+}
+alias PRINTER_INFO_1A* PPRINTER_INFO_1A, LPPRINTER_INFO_1A;
+
+struct PRINTER_INFO_1W {
+	DWORD  Flags;
+	LPWSTR pDescription;
+	LPWSTR pName;
+	LPWSTR pComment;
+}
+alias PRINTER_INFO_1W* PPRINTER_INFO_1W, LPPRINTER_INFO_1W;
+
+struct PRINTER_INFO_2A {
+	LPSTR pServerName;
+	LPSTR pPrinterName;
+	LPSTR pShareName;
+	LPSTR pPortName;
+	LPSTR pDriverName;
+	LPSTR pComment;
+	LPSTR pLocation;
+	LPDEVMODEA pDevMode;
+	LPSTR pSepFile;
+	LPSTR pPrintProcessor;
+	LPSTR pDatatype;
+	LPSTR pParameters;
+	PSECURITY_DESCRIPTOR pSecurityDescriptor;
+	DWORD Attributes;
+	DWORD Priority;
+	DWORD DefaultPriority;
+	DWORD StartTime;
+	DWORD UntilTime;
+	DWORD Status;
+	DWORD cJobs;
+	DWORD AveragePPM;
+}
+alias PRINTER_INFO_2A* PPRINTER_INFO_2A, LPPRINTER_INFO_2A;
+
+struct PRINTER_INFO_2W {
+	LPWSTR pServerName;
+	LPWSTR pPrinterName;
+	LPWSTR pShareName;
+	LPWSTR pPortName;
+	LPWSTR pDriverName;
+	LPWSTR pComment;
+	LPWSTR pLocation;
+	LPDEVMODEW pDevMode;
+	LPWSTR pSepFile;
+	LPWSTR pPrintProcessor;
+	LPWSTR pDatatype;
+	LPWSTR pParameters;
+	PSECURITY_DESCRIPTOR pSecurityDescriptor;
+	DWORD Attributes;
+	DWORD Priority;
+	DWORD DefaultPriority;
+	DWORD StartTime;
+	DWORD UntilTime;
+	DWORD Status;
+	DWORD cJobs;
+	DWORD AveragePPM;
+}
+alias PRINTER_INFO_2W* PPRINTER_INFO_2W, LPPRINTER_INFO_2W;
+
+struct PRINTER_INFO_3 {
+	PSECURITY_DESCRIPTOR pSecurityDescriptor;
+}
+alias PRINTER_INFO_3* PPRINTER_INFO_3, LPPRINTER_INFO_3;
+
+struct PRINTER_INFO_4A {
+	LPSTR pPrinterName;
+	LPSTR pServerName;
+	DWORD Attributes;
+}
+alias PRINTER_INFO_4A* PPRINTER_INFO_4A, LPPRINTER_INFO_4A;
+
+struct PRINTER_INFO_4W {
+	LPWSTR pPrinterName;
+	LPWSTR pServerName;
+	DWORD Attributes;
+}
+alias PRINTER_INFO_4W* PPRINTER_INFO_4W, LPPRINTER_INFO_4W;
+
+struct PRINTER_INFO_5A {
+	LPSTR pPrinterName;
+	LPSTR pPortName;
+	DWORD Attributes;
+	DWORD DeviceNotSelectedTimeout;
+	DWORD TransmissionRetryTimeout;
+}
+alias PRINTER_INFO_5A* PPRINTER_INFO_5A, LPPRINTER_INFO_5A;
+
+struct PRINTER_INFO_5W {
+	LPWSTR pPrinterName;
+	LPWSTR pPortName;
+	DWORD Attributes;
+	DWORD DeviceNotSelectedTimeout;
+	DWORD TransmissionRetryTimeout;
+}
+alias PRINTER_INFO_5W* PPRINTER_INFO_5W, LPPRINTER_INFO_5W;
+
+struct PRINTER_INFO_6 {
+	DWORD dwStatus;
+}
+alias PRINTER_INFO_6* PPRINTER_INFO_6, LPPRINTER_INFO_6;
+
+struct PRINTPROCESSOR_INFO_1A {
+	LPSTR pName;
+}
+alias PRINTPROCESSOR_INFO_1A* PPRINTPROCESSOR_INFO_1A, LPPRINTPROCESSOR_INFO_1A;
+
+struct PRINTPROCESSOR_INFO_1W {
+	LPWSTR pName;
+}
+alias PRINTPROCESSOR_INFO_1W* PPRINTPROCESSOR_INFO_1W, LPPRINTPROCESSOR_INFO_1W;
+
+struct PRINTER_NOTIFY_INFO_DATA {
+	WORD  Type;
+	WORD  Field;
+	DWORD Reserved;
+	DWORD Id;
+	union _NotifyData {
+		DWORD adwData[2];
+		struct Data {
+			DWORD cbBuf;
+			PVOID pBuf;
+		}
+	}
+	_NotifyData NotifyData;	
+}
+alias PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA, LPPRINTER_NOTIFY_INFO_DATA;
+
+struct PRINTER_NOTIFY_INFO {
+	DWORD Version;
+	DWORD Flags;
+	DWORD Count;
+	PRINTER_NOTIFY_INFO_DATA aData[1];
+}
+alias PRINTER_NOTIFY_INFO* PPRINTER_NOTIFY_INFO, LPPRINTER_NOTIFY_INFO;
+
+struct FORM_INFO_1A {
+	DWORD Flags;
+	LPSTR pName;
+	SIZEL Size;
+	RECTL ImageableArea;
+}
+alias FORM_INFO_1A* PFORM_INFO_1A, LPFORM_INFO_1A;
+
+struct FORM_INFO_1W {
+	DWORD  Flags;
+	LPWSTR pName;
+	SIZEL  Size;
+	RECTL  ImageableArea;
+}
+alias FORM_INFO_1W* PFORM_INFO_1W, LPFORM_INFO_1W;
+
+struct PRINTER_DEFAULTSA {
+	LPSTR       pDatatype;
+	LPDEVMODE   pDevMode;
+	ACCESS_MASK DesiredAccess;
+}
+alias PRINTER_DEFAULTSA* PPRINTER_DEFAULTSA, LPPRINTER_DEFAULTSA;
+
+struct PRINTER_DEFAULTSW {
+	LPWSTR pDatatype;
+	LPDEVMODE pDevMode;
+	ACCESS_MASK DesiredAccess;
+}
+alias PRINTER_DEFAULTSW* PPRINTER_DEFAULTSW, LPPRINTER_DEFAULTSW;
+
+extern (Windows):
+BOOL AbortPrinter(HANDLE);
+BOOL AddFormA(HANDLE, DWORD, PBYTE);
+BOOL AddFormW(HANDLE, DWORD, PBYTE);
+BOOL AddJobA(HANDLE, DWORD, PBYTE, DWORD, PDWORD);
+BOOL AddJobW(HANDLE, DWORD, PBYTE, DWORD, PDWORD);
+BOOL AddMonitorA(LPSTR, DWORD, PBYTE);
+BOOL AddMonitorW(LPWSTR, DWORD, PBYTE);
+BOOL AddPortA(LPSTR, HWND, LPSTR);
+BOOL AddPortW(LPWSTR, HWND, LPWSTR);
+HANDLE AddPrinterA(LPSTR, DWORD, PBYTE);
+HANDLE AddPrinterW(LPWSTR, DWORD, PBYTE);
+BOOL AddPrinterConnectionA(LPSTR);
+BOOL AddPrinterConnectionW(LPWSTR);
+BOOL AddPrinterDriverA(LPSTR, DWORD, PBYTE);
+BOOL AddPrinterDriverW(LPWSTR, DWORD, PBYTE);
+BOOL AddPrintProcessorA(LPSTR, LPSTR, LPSTR, LPSTR);
+BOOL AddPrintProcessorW(LPWSTR, LPWSTR, LPWSTR, LPWSTR);
+BOOL AddPrintProvidorA(LPSTR, DWORD, PBYTE);
+BOOL AddPrintProvidorW(LPWSTR, DWORD, PBYTE);
+LONG AdvancedDocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODE, PDEVMODEA);
+LONG AdvancedDocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODE, PDEVMODEW);
+BOOL ClosePrinter(HANDLE);
+BOOL ConfigurePortA(LPSTR, HWND, LPSTR);
+BOOL ConfigurePortW(LPWSTR, HWND, LPWSTR);
+HANDLE ConnectToPrinterDlg(HWND, DWORD);
+BOOL DeleteFormA(HANDLE, LPSTR);
+BOOL DeleteFormW(HANDLE, LPWSTR);
+BOOL DeleteMonitorA(LPSTR, LPSTR, LPSTR);
+BOOL DeleteMonitorW(LPWSTR, LPWSTR, LPWSTR);
+BOOL DeletePortA(LPSTR, HWND, LPSTR);
+BOOL DeletePortW(LPWSTR, HWND, LPWSTR);
+BOOL DeletePrinter(HANDLE);
+BOOL DeletePrinterConnectionA(LPSTR);
+BOOL DeletePrinterConnectionW(LPWSTR);
+DWORD DeletePrinterDataA(HANDLE, LPSTR);
+DWORD DeletePrinterDataW(HANDLE, LPWSTR);
+BOOL DeletePrinterDriverA(LPSTR, LPSTR, LPSTR);
+BOOL DeletePrinterDriverW(LPWSTR, LPWSTR, LPWSTR);
+BOOL DeletePrintProcessorA(LPSTR, LPSTR, LPSTR);
+BOOL DeletePrintProcessorW(LPWSTR, LPWSTR, LPWSTR);
+BOOL DeletePrintProvidorA(LPSTR, LPSTR, LPSTR);
+BOOL DeletePrintProvidorW(LPWSTR, LPWSTR, LPWSTR);
+LONG DocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODEA, PDEVMODEA, DWORD);
+LONG DocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODEW, PDEVMODEW, DWORD);
+BOOL EndDocPrinter(HANDLE);
+BOOL EndPagePrinter(HANDLE);
+BOOL EnumFormsA(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumFormsW(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumJobsA(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumJobsW(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumMonitorsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumMonitorsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumPortsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumPortsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+DWORD EnumPrinterDataA(HANDLE, DWORD, LPSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD);
+DWORD EnumPrinterDataW(HANDLE, DWORD, LPWSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD);
+BOOL EnumPrinterDriversA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumPrinterDriversW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumPrintersA(DWORD, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumPrintersW(DWORD, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumPrintProcessorDatatypesA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumPrintProcessorDatatypesW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumPrintProcessorsA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL EnumPrintProcessorsW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD);
+BOOL FindClosePrinterChangeNotification(HANDLE);
+HANDLE FindFirstPrinterChangeNotification(HANDLE, DWORD, DWORD, PVOID);
+HANDLE FindNextPrinterChangeNotification(HANDLE, PDWORD, PVOID, PVOID*);
+BOOL FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO);
+
+static if (_WIN32_WINNT >= 0x0500) {
+BOOL GetDefaultPrinterA(LPSTR, LPDWORD);
+BOOL GetDefaultPrinterW(LPWSTR, LPDWORD);
+}
+
+BOOL GetFormA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD);
+BOOL GetFormW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD);
+BOOL GetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD);
+BOOL GetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD);
+BOOL GetPrinterA(HANDLE, DWORD, PBYTE, DWORD, PDWORD);
+BOOL GetPrinterW(HANDLE, DWORD, PBYTE, DWORD, PDWORD);
+DWORD GetPrinterDataA(HANDLE, LPSTR, PDWORD, PBYTE, DWORD, PDWORD);
+DWORD GetPrinterDataW(HANDLE, LPWSTR, PDWORD, PBYTE, DWORD, PDWORD);
+DWORD GetPrinterDriverA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD);
+DWORD GetPrinterDriverW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD);
+DWORD GetPrinterDriverDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD);
+DWORD GetPrinterDriverDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD);
+DWORD GetPrintProcessorDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD);
+DWORD GetPrintProcessorDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD);
+BOOL OpenPrinterA(LPSTR, PHANDLE, LPPRINTER_DEFAULTSA);
+BOOL OpenPrinterW(LPWSTR, PHANDLE, LPPRINTER_DEFAULTSW);
+DWORD PrinterMessageBoxA(HANDLE, DWORD, HWND, LPSTR, LPSTR, DWORD);
+DWORD PrinterMessageBoxW(HANDLE, DWORD, HWND, LPWSTR, LPWSTR, DWORD);
+BOOL PrinterProperties(HWND, HANDLE);
+BOOL ReadPrinter(HANDLE, PVOID, DWORD, PDWORD);
+BOOL ResetPrinterA(HANDLE, LPPRINTER_DEFAULTSA);
+BOOL ResetPrinterW(HANDLE, LPPRINTER_DEFAULTSW);
+BOOL ScheduleJob(HANDLE, DWORD);
+BOOL SetFormA(HANDLE, LPSTR, DWORD, PBYTE);
+BOOL SetFormW(HANDLE, LPWSTR, DWORD, PBYTE);
+BOOL SetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD);
+BOOL SetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD);
+BOOL SetPrinterA(HANDLE, DWORD, PBYTE, DWORD);
+BOOL SetPrinterW(HANDLE, DWORD, PBYTE, DWORD);
+BOOL SetPrinterDataA(HANDLE, LPSTR, DWORD, PBYTE, DWORD);
+BOOL SetPrinterDataW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD);
+DWORD StartDocPrinterA(HANDLE, DWORD, PBYTE);
+DWORD StartDocPrinterW(HANDLE, DWORD, PBYTE);
+BOOL StartPagePrinter(HANDLE);
+DWORD WaitForPrinterChange(HANDLE, DWORD);
+BOOL WritePrinter(HANDLE, PVOID, DWORD, PDWORD);
+
+version(Unicode) {
+
+alias JOB_INFO_1W JOB_INFO_1;
+alias JOB_INFO_2W JOB_INFO_2;
+alias ADDJOB_INFO_1W ADDJOB_INFO_1;
+alias DATATYPES_INFO_1W DATATYPES_INFO_1;
+alias MONITOR_INFO_1W MONITOR_INFO_1;
+alias MONITOR_INFO_2W MONITOR_INFO_2;
+alias DOC_INFO_1W DOC_INFO_1;
+alias DOC_INFO_2W DOC_INFO_2;
+alias PORT_INFO_1W PORT_INFO_1;
+alias PORT_INFO_2W PORT_INFO_2;
+alias PORT_INFO_3W PORT_INFO_3;
+alias DRIVER_INFO_2W DRIVER_INFO_2;
+alias PRINTER_INFO_1W PRINTER_INFO_1;
+alias PRINTER_INFO_2W PRINTER_INFO_2;
+alias PRINTER_INFO_4W PRINTER_INFO_4;
+alias PRINTER_INFO_5W PRINTER_INFO_5;
+alias PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1;
+alias FORM_INFO_1W FORM_INFO_1;
+alias PRINTER_DEFAULTSW PRINTER_DEFAULTS;
+
+alias AddFormW AddForm;
+alias AddJobW AddJob;
+alias AddMonitorW AddMonitor;
+alias AddPortW AddPort;
+alias AddPrinterW AddPrinter;
+alias AddPrinterConnectionW AddPrinterConnection;
+alias AddPrinterDriverW AddPrinterDriver;
+alias AddPrintProcessorW AddPrintProcessor;
+alias AddPrintProvidorW AddPrintProvidor;
+alias AdvancedDocumentPropertiesW AdvancedDocumentProperties;
+alias ConfigurePortW ConfigurePort;
+alias DeleteFormW DeleteForm;
+alias DeleteMonitorW DeleteMonitor;
+alias DeletePortW DeletePort;
+alias DeletePrinterConnectionW DeletePrinterConnection;
+alias DeletePrinterDataW DeletePrinterData;
+alias DeletePrinterDriverW DeletePrinterDriver;
+alias DeletePrintProcessorW DeletePrintProcessor;
+alias DeletePrintProvidorW DeletePrintProvidor;
+alias DocumentPropertiesW DocumentProperties;
+alias EnumFormsW EnumForms;
+alias EnumJobsW EnumJobs;
+alias EnumMonitorsW EnumMonitors;
+alias EnumPortsW EnumPorts;
+alias EnumPrinterDataW EnumPrinterData;
+alias EnumPrinterDriversW EnumPrinterDrivers;
+alias EnumPrintersW EnumPrinters;
+alias EnumPrintProcessorDatatypesW EnumPrintProcessorDatatypes;
+alias EnumPrintProcessorsW EnumPrintProcessors;
+
+static if (_WIN32_WINNT >= 0x0500) {
+alias GetDefaultPrinterW GetDefaultPrinter;
+}
+
+alias GetFormW GetForm;
+alias GetJobW GetJob;
+alias GetPrinterW GetPrinter;
+alias GetPrinterDataW GetPrinterData;
+alias GetPrinterDriverW GetPrinterDriver;
+alias GetPrinterDriverDirectoryW GetPrinterDriverDirectory;
+alias GetPrintProcessorDirectoryW GetPrintProcessorDirectory;
+alias OpenPrinterW OpenPrinter;
+alias PrinterMessageBoxW PrinterMessageBox;
+alias ResetPrinterW ResetPrinter;
+alias SetFormW SetForm;
+alias SetJobW SetJob;
+alias SetPrinterW SetPrinter;
+alias SetPrinterDataW SetPrinterData;
+alias StartDocPrinterW StartDocPrinter;
+
+} else {
+
+alias JOB_INFO_1A JOB_INFO_1;
+alias JOB_INFO_2A JOB_INFO_2;
+alias ADDJOB_INFO_1A ADDJOB_INFO_1;
+alias DATATYPES_INFO_1A DATATYPES_INFO_1;
+alias MONITOR_INFO_1A MONITOR_INFO_1;
+alias MONITOR_INFO_2A MONITOR_INFO_2;
+alias DOC_INFO_1A DOC_INFO_1;
+alias DOC_INFO_2A DOC_INFO_2;
+alias PORT_INFO_1A PORT_INFO_1;
+alias PORT_INFO_2A PORT_INFO_2;
+alias PORT_INFO_3A PORT_INFO_3;
+alias DRIVER_INFO_2A DRIVER_INFO_2;
+alias PRINTER_INFO_1A PRINTER_INFO_1;
+alias PRINTER_INFO_2A PRINTER_INFO_2;
+alias PRINTER_INFO_4A PRINTER_INFO_4;
+alias PRINTER_INFO_5A PRINTER_INFO_5;
+alias PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1;
+alias FORM_INFO_1A FORM_INFO_1;
+alias PRINTER_DEFAULTSA PRINTER_DEFAULTS;
+
+alias AddFormA AddForm;
+alias AddJobA AddJob;
+alias AddMonitorA AddMonitor;
+alias AddPortA AddPort;
+alias AddPrinterA AddPrinter;
+alias AddPrinterConnectionA AddPrinterConnection;
+alias AddPrinterDriverA AddPrinterDriver;
+alias AddPrintProcessorA AddPrintProcessor;
+alias AddPrintProvidorA AddPrintProvidor;
+alias AdvancedDocumentPropertiesA AdvancedDocumentProperties;
+alias ConfigurePortA ConfigurePort;
+alias DeleteFormA DeleteForm;
+alias DeleteMonitorA DeleteMonitor;
+alias DeletePortA DeletePort;
+alias DeletePrinterConnectionA DeletePrinterConnection;
+alias DeletePrinterDataA DeletePrinterData;
+alias DeletePrinterDriverA DeletePrinterDriver;
+alias DeletePrintProcessorA DeletePrintProcessor;
+alias DeletePrintProvidorA DeletePrintProvidor;
+alias DocumentPropertiesA DocumentProperties;
+alias EnumFormsA EnumForms;
+alias EnumJobsA EnumJobs;
+alias EnumMonitorsA EnumMonitors;
+alias EnumPortsA EnumPorts;
+alias EnumPrinterDataA EnumPrinterData;
+alias EnumPrinterDriversA EnumPrinterDrivers;
+alias EnumPrintersA EnumPrinters;
+alias EnumPrintProcessorDatatypesA EnumPrintProcessorDatatypes;
+alias EnumPrintProcessorsA EnumPrintProcessors;
+
+static if (_WIN32_WINNT >= 0x0500) {
+alias GetDefaultPrinterA GetDefaultPrinter;
+}
+
+alias GetFormA GetForm;
+alias GetJobA GetJob;
+alias GetPrinterA GetPrinter;
+alias GetPrinterDataA GetPrinterData;
+alias GetPrinterDriverA GetPrinterDriver;
+alias GetPrinterDriverDirectoryA GetPrinterDriverDirectory;
+alias GetPrintProcessorDirectoryA GetPrintProcessorDirectory;
+alias OpenPrinterA OpenPrinter;
+alias PrinterMessageBoxA PrinterMessageBox;
+alias ResetPrinterA ResetPrinter;
+alias SetFormA SetForm;
+alias SetJobA SetJob;
+alias SetPrinterA SetPrinter;
+alias SetPrinterDataA SetPrinterData;
+alias StartDocPrinterA StartDocPrinter;
+}
+
+alias JOB_INFO_1* PJOB_INFO_1, LPJOB_INFO_1;
+alias JOB_INFO_2* PJOB_INFO_2, LPJOB_INFO_2;
+alias ADDJOB_INFO_1* PADDJOB_INFO_1, LPADDJOB_INFO_1;
+alias DATATYPES_INFO_1* PDATATYPES_INFO_1, LPDATATYPES_INFO_1;
+alias MONITOR_INFO_1* PMONITOR_INFO_1, LPMONITOR_INFO_1;
+alias MONITOR_INFO_2* PMONITOR_INFO_2, LPMONITOR_INFO_2;
+alias DOC_INFO_1* PDOC_INFO_1, LPDOC_INFO_1;
+alias DOC_INFO_2* PDOC_INFO_2, LPDOC_INFO_2;
+alias PORT_INFO_1* PPORT_INFO_1, LPPORT_INFO_1;
+alias PORT_INFO_2* PPORT_INFO_2, LPPORT_INFO_2;
+alias PORT_INFO_3* PPORT_INFO_3, LPPORT_INFO_3;
+alias DRIVER_INFO_2* PDRIVER_INFO_2, LPDRIVER_INFO_2;
+alias PRINTER_INFO_1* PPRINTER_INFO_1, LPPRINTER_INFO_1;
+alias PRINTER_INFO_2* PPRINTER_INFO_2, LPPRINTER_INFO_2;
+alias PRINTER_INFO_4* PPRINTER_INFO_4, LPPRINTER_INFO_4;
+alias PRINTER_INFO_5* PPRINTER_INFO_5, LPPRINTER_INFO_5;
+alias PRINTPROCESSOR_INFO_1* PPRINTPROCESSOR_INFO_1, LPPRINTPROCESSOR_INFO_1;
+alias FORM_INFO_1* PFORM_INFO_1, LPFORM_INFO_1;
+alias PRINTER_DEFAULTS* PPRINTER_DEFAULTS, LPPRINTER_DEFAULTS;