home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / winspool.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  72.6 KB  |  2,730 lines

  1. /*++
  2.  
  3. Copyright (c) 1990-1998  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     WinSpool.h
  8.  
  9. Abstract:
  10.  
  11.     Header file for Print APIs
  12.  
  13. Revision History:
  14.  
  15. --*/
  16.  
  17. #ifndef _WINSPOOL_
  18. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  19. #define _WINSPOOL_
  20.  
  21. #ifdef _WINUSER_
  22. #include <prsht.h>
  23. #endif
  24.  
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28.  
  29. typedef struct _PRINTER_INFO_1A {
  30.     DWORD   Flags;
  31.     LPSTR   pDescription;
  32.     LPSTR   pName;
  33.     LPSTR   pComment;
  34. } PRINTER_INFO_1A, *PPRINTER_INFO_1A, *LPPRINTER_INFO_1A;
  35. typedef struct _PRINTER_INFO_1W {
  36.     DWORD   Flags;
  37.     LPWSTR  pDescription;
  38.     LPWSTR  pName;
  39.     LPWSTR  pComment;
  40. } PRINTER_INFO_1W, *PPRINTER_INFO_1W, *LPPRINTER_INFO_1W;
  41. #ifdef UNICODE
  42. typedef PRINTER_INFO_1W PRINTER_INFO_1;
  43. typedef PPRINTER_INFO_1W PPRINTER_INFO_1;
  44. typedef LPPRINTER_INFO_1W LPPRINTER_INFO_1;
  45. #else
  46. typedef PRINTER_INFO_1A PRINTER_INFO_1;
  47. typedef PPRINTER_INFO_1A PPRINTER_INFO_1;
  48. typedef LPPRINTER_INFO_1A LPPRINTER_INFO_1;
  49. #endif // UNICODE
  50.  
  51. typedef struct _PRINTER_INFO_2A {
  52.     LPSTR     pServerName;
  53.     LPSTR     pPrinterName;
  54.     LPSTR     pShareName;
  55.     LPSTR     pPortName;
  56.     LPSTR     pDriverName;
  57.     LPSTR     pComment;
  58.     LPSTR     pLocation;
  59.     LPDEVMODEA pDevMode;
  60.     LPSTR     pSepFile;
  61.     LPSTR     pPrintProcessor;
  62.     LPSTR     pDatatype;
  63.     LPSTR     pParameters;
  64.     PSECURITY_DESCRIPTOR pSecurityDescriptor;
  65.     DWORD   Attributes;
  66.     DWORD   Priority;
  67.     DWORD   DefaultPriority;
  68.     DWORD   StartTime;
  69.     DWORD   UntilTime;
  70.     DWORD   Status;
  71.     DWORD   cJobs;
  72.     DWORD   AveragePPM;
  73. } PRINTER_INFO_2A, *PPRINTER_INFO_2A, *LPPRINTER_INFO_2A;
  74. typedef struct _PRINTER_INFO_2W {
  75.     LPWSTR    pServerName;
  76.     LPWSTR    pPrinterName;
  77.     LPWSTR    pShareName;
  78.     LPWSTR    pPortName;
  79.     LPWSTR    pDriverName;
  80.     LPWSTR    pComment;
  81.     LPWSTR    pLocation;
  82.     LPDEVMODEW pDevMode;
  83.     LPWSTR    pSepFile;
  84.     LPWSTR    pPrintProcessor;
  85.     LPWSTR    pDatatype;
  86.     LPWSTR    pParameters;
  87.     PSECURITY_DESCRIPTOR pSecurityDescriptor;
  88.     DWORD   Attributes;
  89.     DWORD   Priority;
  90.     DWORD   DefaultPriority;
  91.     DWORD   StartTime;
  92.     DWORD   UntilTime;
  93.     DWORD   Status;
  94.     DWORD   cJobs;
  95.     DWORD   AveragePPM;
  96. } PRINTER_INFO_2W, *PPRINTER_INFO_2W, *LPPRINTER_INFO_2W;
  97. #ifdef UNICODE
  98. typedef PRINTER_INFO_2W PRINTER_INFO_2;
  99. typedef PPRINTER_INFO_2W PPRINTER_INFO_2;
  100. typedef LPPRINTER_INFO_2W LPPRINTER_INFO_2;
  101. #else
  102. typedef PRINTER_INFO_2A PRINTER_INFO_2;
  103. typedef PPRINTER_INFO_2A PPRINTER_INFO_2;
  104. typedef LPPRINTER_INFO_2A LPPRINTER_INFO_2;
  105. #endif // UNICODE
  106.  
  107. typedef struct _PRINTER_INFO_3 {
  108.     PSECURITY_DESCRIPTOR pSecurityDescriptor;
  109. } PRINTER_INFO_3, *PPRINTER_INFO_3, *LPPRINTER_INFO_3;
  110.  
  111. typedef struct _PRINTER_INFO_4A {
  112.     LPSTR   pPrinterName;
  113.     LPSTR   pServerName;
  114.     DWORD   Attributes;
  115. } PRINTER_INFO_4A, *PPRINTER_INFO_4A, *LPPRINTER_INFO_4A;
  116. typedef struct _PRINTER_INFO_4W {
  117.     LPWSTR  pPrinterName;
  118.     LPWSTR  pServerName;
  119.     DWORD   Attributes;
  120. } PRINTER_INFO_4W, *PPRINTER_INFO_4W, *LPPRINTER_INFO_4W;
  121. #ifdef UNICODE
  122. typedef PRINTER_INFO_4W PRINTER_INFO_4;
  123. typedef PPRINTER_INFO_4W PPRINTER_INFO_4;
  124. typedef LPPRINTER_INFO_4W LPPRINTER_INFO_4;
  125. #else
  126. typedef PRINTER_INFO_4A PRINTER_INFO_4;
  127. typedef PPRINTER_INFO_4A PPRINTER_INFO_4;
  128. typedef LPPRINTER_INFO_4A LPPRINTER_INFO_4;
  129. #endif // UNICODE
  130.  
  131. typedef struct _PRINTER_INFO_5A {
  132.     LPSTR   pPrinterName;
  133.     LPSTR   pPortName;
  134.     DWORD   Attributes;
  135.     DWORD   DeviceNotSelectedTimeout;
  136.     DWORD   TransmissionRetryTimeout;
  137. } PRINTER_INFO_5A, *PPRINTER_INFO_5A, *LPPRINTER_INFO_5A;
  138. typedef struct _PRINTER_INFO_5W {
  139.     LPWSTR  pPrinterName;
  140.     LPWSTR  pPortName;
  141.     DWORD   Attributes;
  142.     DWORD   DeviceNotSelectedTimeout;
  143.     DWORD   TransmissionRetryTimeout;
  144. } PRINTER_INFO_5W, *PPRINTER_INFO_5W, *LPPRINTER_INFO_5W;
  145. #ifdef UNICODE
  146. typedef PRINTER_INFO_5W PRINTER_INFO_5;
  147. typedef PPRINTER_INFO_5W PPRINTER_INFO_5;
  148. typedef LPPRINTER_INFO_5W LPPRINTER_INFO_5;
  149. #else
  150. typedef PRINTER_INFO_5A PRINTER_INFO_5;
  151. typedef PPRINTER_INFO_5A PPRINTER_INFO_5;
  152. typedef LPPRINTER_INFO_5A LPPRINTER_INFO_5;
  153. #endif // UNICODE
  154.  
  155. typedef struct _PRINTER_INFO_6 {
  156.     DWORD   dwStatus;
  157. } PRINTER_INFO_6, *PPRINTER_INFO_6, *LPPRINTER_INFO_6;
  158.  
  159.  
  160. typedef struct _PRINTER_INFO_7A {
  161.   LPSTR    pszObjectGUID;
  162.   DWORD    dwAction;
  163. } PRINTER_INFO_7A, *PPRINTER_INFO_7A, *LPPRINTER_INFO_7A;
  164. typedef struct _PRINTER_INFO_7W {
  165.   LPWSTR   pszObjectGUID;
  166.   DWORD    dwAction;
  167. } PRINTER_INFO_7W, *PPRINTER_INFO_7W, *LPPRINTER_INFO_7W;
  168. #ifdef UNICODE
  169. typedef PRINTER_INFO_7W PRINTER_INFO_7;
  170. typedef PPRINTER_INFO_7W PPRINTER_INFO_7;
  171. typedef LPPRINTER_INFO_7W LPPRINTER_INFO_7;
  172. #else
  173. typedef PRINTER_INFO_7A PRINTER_INFO_7;
  174. typedef PPRINTER_INFO_7A PPRINTER_INFO_7;
  175. typedef LPPRINTER_INFO_7A LPPRINTER_INFO_7;
  176. #endif // UNICODE
  177.  
  178. #define DSPRINT_PUBLISH         0x00000001
  179. #define DSPRINT_UPDATE          0x00000002
  180. #define DSPRINT_UNPUBLISH       0x00000004
  181. #define DSPRINT_REPUBLISH       0x00000008
  182. #define DSPRINT_PENDING         0x80000000
  183.  
  184. typedef struct _PRINTER_INFO_8A {
  185.     LPDEVMODEA pDevMode;
  186. } PRINTER_INFO_8A, *PPRINTER_INFO_8A, *LPPRINTER_INFO_8A;
  187. typedef struct _PRINTER_INFO_8W {
  188.     LPDEVMODEW pDevMode;
  189. } PRINTER_INFO_8W, *PPRINTER_INFO_8W, *LPPRINTER_INFO_8W;
  190. #ifdef UNICODE
  191. typedef PRINTER_INFO_8W PRINTER_INFO_8;
  192. typedef PPRINTER_INFO_8W PPRINTER_INFO_8;
  193. typedef LPPRINTER_INFO_8W LPPRINTER_INFO_8;
  194. #else
  195. typedef PRINTER_INFO_8A PRINTER_INFO_8;
  196. typedef PPRINTER_INFO_8A PPRINTER_INFO_8;
  197. typedef LPPRINTER_INFO_8A LPPRINTER_INFO_8;
  198. #endif // UNICODE
  199.  
  200. typedef struct _PRINTER_INFO_9A {
  201.     LPDEVMODEA pDevMode;
  202. } PRINTER_INFO_9A, *PPRINTER_INFO_9A, *LPPRINTER_INFO_9A;
  203. typedef struct _PRINTER_INFO_9W {
  204.     LPDEVMODEW pDevMode;
  205. } PRINTER_INFO_9W, *PPRINTER_INFO_9W, *LPPRINTER_INFO_9W;
  206. #ifdef UNICODE
  207. typedef PRINTER_INFO_9W PRINTER_INFO_9;
  208. typedef PPRINTER_INFO_9W PPRINTER_INFO_9;
  209. typedef LPPRINTER_INFO_9W LPPRINTER_INFO_9;
  210. #else
  211. typedef PRINTER_INFO_9A PRINTER_INFO_9;
  212. typedef PPRINTER_INFO_9A PPRINTER_INFO_9;
  213. typedef LPPRINTER_INFO_9A LPPRINTER_INFO_9;
  214. #endif // UNICODE
  215.  
  216. #define PRINTER_CONTROL_PAUSE            1
  217. #define PRINTER_CONTROL_RESUME           2
  218. #define PRINTER_CONTROL_PURGE            3
  219. #define PRINTER_CONTROL_SET_STATUS       4
  220.  
  221. #define PRINTER_STATUS_PAUSED            0x00000001
  222. #define PRINTER_STATUS_ERROR             0x00000002
  223. #define PRINTER_STATUS_PENDING_DELETION  0x00000004
  224. #define PRINTER_STATUS_PAPER_JAM         0x00000008
  225. #define PRINTER_STATUS_PAPER_OUT         0x00000010
  226. #define PRINTER_STATUS_MANUAL_FEED       0x00000020
  227. #define PRINTER_STATUS_PAPER_PROBLEM     0x00000040
  228. #define PRINTER_STATUS_OFFLINE           0x00000080
  229. #define PRINTER_STATUS_IO_ACTIVE         0x00000100
  230. #define PRINTER_STATUS_BUSY              0x00000200
  231. #define PRINTER_STATUS_PRINTING          0x00000400
  232. #define PRINTER_STATUS_OUTPUT_BIN_FULL   0x00000800
  233. #define PRINTER_STATUS_NOT_AVAILABLE     0x00001000
  234. #define PRINTER_STATUS_WAITING           0x00002000
  235. #define PRINTER_STATUS_PROCESSING        0x00004000
  236. #define PRINTER_STATUS_INITIALIZING      0x00008000
  237. #define PRINTER_STATUS_WARMING_UP        0x00010000
  238. #define PRINTER_STATUS_TONER_LOW         0x00020000
  239. #define PRINTER_STATUS_NO_TONER          0x00040000
  240. #define PRINTER_STATUS_PAGE_PUNT         0x00080000
  241. #define PRINTER_STATUS_USER_INTERVENTION 0x00100000
  242. #define PRINTER_STATUS_OUT_OF_MEMORY     0x00200000
  243. #define PRINTER_STATUS_DOOR_OPEN         0x00400000
  244. #define PRINTER_STATUS_SERVER_UNKNOWN    0x00800000
  245. #define PRINTER_STATUS_POWER_SAVE        0x01000000
  246.  
  247.  
  248. #define PRINTER_ATTRIBUTE_QUEUED         0x00000001
  249. #define PRINTER_ATTRIBUTE_DIRECT         0x00000002
  250. #define PRINTER_ATTRIBUTE_DEFAULT        0x00000004
  251. #define PRINTER_ATTRIBUTE_SHARED         0x00000008
  252. #define PRINTER_ATTRIBUTE_NETWORK        0x00000010
  253. #define PRINTER_ATTRIBUTE_HIDDEN         0x00000020
  254. #define PRINTER_ATTRIBUTE_LOCAL          0x00000040
  255.  
  256. #define PRINTER_ATTRIBUTE_ENABLE_DEVQ       0x00000080
  257. #define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS   0x00000100
  258. #define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200
  259.  
  260. #define PRINTER_ATTRIBUTE_WORK_OFFLINE   0x00000400
  261. #define PRINTER_ATTRIBUTE_ENABLE_BIDI    0x00000800
  262. #define PRINTER_ATTRIBUTE_RAW_ONLY       0x00001000
  263. #define PRINTER_ATTRIBUTE_PUBLISHED      0x00002000
  264.  
  265.  
  266. #define NO_PRIORITY   0
  267. #define MAX_PRIORITY 99
  268. #define MIN_PRIORITY  1
  269. #define DEF_PRIORITY  1
  270.  
  271. typedef struct _JOB_INFO_1A {
  272.    DWORD    JobId;
  273.    LPSTR      pPrinterName;
  274.    LPSTR      pMachineName;
  275.    LPSTR      pUserName;
  276.    LPSTR      pDocument;
  277.    LPSTR      pDatatype;
  278.    LPSTR      pStatus;
  279.    DWORD    Status;
  280.    DWORD    Priority;
  281.    DWORD    Position;
  282.    DWORD    TotalPages;
  283.    DWORD    PagesPrinted;
  284.    SYSTEMTIME Submitted;
  285. } JOB_INFO_1A, *PJOB_INFO_1A, *LPJOB_INFO_1A;
  286. typedef struct _JOB_INFO_1W {
  287.    DWORD    JobId;
  288.    LPWSTR     pPrinterName;
  289.    LPWSTR     pMachineName;
  290.    LPWSTR     pUserName;
  291.    LPWSTR     pDocument;
  292.    LPWSTR     pDatatype;
  293.    LPWSTR     pStatus;
  294.    DWORD    Status;
  295.    DWORD    Priority;
  296.    DWORD    Position;
  297.    DWORD    TotalPages;
  298.    DWORD    PagesPrinted;
  299.    SYSTEMTIME Submitted;
  300. } JOB_INFO_1W, *PJOB_INFO_1W, *LPJOB_INFO_1W;
  301. #ifdef UNICODE
  302. typedef JOB_INFO_1W JOB_INFO_1;
  303. typedef PJOB_INFO_1W PJOB_INFO_1;
  304. typedef LPJOB_INFO_1W LPJOB_INFO_1;
  305. #else
  306. typedef JOB_INFO_1A JOB_INFO_1;
  307. typedef PJOB_INFO_1A PJOB_INFO_1;
  308. typedef LPJOB_INFO_1A LPJOB_INFO_1;
  309. #endif // UNICODE
  310.  
  311. typedef struct _JOB_INFO_2A {
  312.    DWORD    JobId;
  313.    LPSTR      pPrinterName;
  314.    LPSTR      pMachineName;
  315.    LPSTR      pUserName;
  316.    LPSTR      pDocument;
  317.    LPSTR      pNotifyName;
  318.    LPSTR      pDatatype;
  319.    LPSTR      pPrintProcessor;
  320.    LPSTR      pParameters;
  321.    LPSTR      pDriverName;
  322.    LPDEVMODEA pDevMode;
  323.    LPSTR      pStatus;
  324.    PSECURITY_DESCRIPTOR pSecurityDescriptor;
  325.    DWORD    Status;
  326.    DWORD    Priority;
  327.    DWORD    Position;
  328.    DWORD    StartTime;
  329.    DWORD    UntilTime;
  330.    DWORD    TotalPages;
  331.    DWORD    Size;
  332.    SYSTEMTIME Submitted;    // Time the job was spooled
  333.    DWORD    Time;           // How many seconds the job has been printing
  334.    DWORD    PagesPrinted;
  335. } JOB_INFO_2A, *PJOB_INFO_2A, *LPJOB_INFO_2A;
  336. typedef struct _JOB_INFO_2W {
  337.    DWORD    JobId;
  338.    LPWSTR     pPrinterName;
  339.    LPWSTR     pMachineName;
  340.    LPWSTR     pUserName;
  341.    LPWSTR     pDocument;
  342.    LPWSTR     pNotifyName;
  343.    LPWSTR     pDatatype;
  344.    LPWSTR     pPrintProcessor;
  345.    LPWSTR     pParameters;
  346.    LPWSTR     pDriverName;
  347.    LPDEVMODEW pDevMode;
  348.    LPWSTR     pStatus;
  349.    PSECURITY_DESCRIPTOR pSecurityDescriptor;
  350.    DWORD    Status;
  351.    DWORD    Priority;
  352.    DWORD    Position;
  353.    DWORD    StartTime;
  354.    DWORD    UntilTime;
  355.    DWORD    TotalPages;
  356.    DWORD    Size;
  357.    SYSTEMTIME Submitted;    // Time the job was spooled
  358.    DWORD    Time;           // How many seconds the job has been printing
  359.    DWORD    PagesPrinted;
  360. } JOB_INFO_2W, *PJOB_INFO_2W, *LPJOB_INFO_2W;
  361. #ifdef UNICODE
  362. typedef JOB_INFO_2W JOB_INFO_2;
  363. typedef PJOB_INFO_2W PJOB_INFO_2;
  364. typedef LPJOB_INFO_2W LPJOB_INFO_2;
  365. #else
  366. typedef JOB_INFO_2A JOB_INFO_2;
  367. typedef PJOB_INFO_2A PJOB_INFO_2;
  368. typedef LPJOB_INFO_2A LPJOB_INFO_2;
  369. #endif // UNICODE
  370.  
  371. typedef struct _JOB_INFO_3 {
  372.     DWORD   JobId;
  373.     DWORD   NextJobId;
  374.     DWORD   Reserved;
  375. } JOB_INFO_3, *PJOB_INFO_3, *LPJOB_INFO_3;
  376.  
  377. #define JOB_CONTROL_PAUSE              1
  378. #define JOB_CONTROL_RESUME             2
  379. #define JOB_CONTROL_CANCEL             3
  380. #define JOB_CONTROL_RESTART            4
  381. #define JOB_CONTROL_DELETE             5
  382. #define JOB_CONTROL_SENT_TO_PRINTER    6
  383. #define JOB_CONTROL_LAST_PAGE_EJECTED  7
  384.  
  385. #define JOB_STATUS_PAUSED               0x00000001
  386. #define JOB_STATUS_ERROR                0x00000002
  387. #define JOB_STATUS_DELETING             0x00000004
  388. #define JOB_STATUS_SPOOLING             0x00000008
  389. #define JOB_STATUS_PRINTING             0x00000010
  390. #define JOB_STATUS_OFFLINE              0x00000020
  391. #define JOB_STATUS_PAPEROUT             0x00000040
  392. #define JOB_STATUS_PRINTED              0x00000080
  393. #define JOB_STATUS_DELETED              0x00000100
  394. #define JOB_STATUS_BLOCKED_DEVQ         0x00000200
  395. #define JOB_STATUS_USER_INTERVENTION    0x00000400
  396. #define JOB_STATUS_RESTART              0x00000800
  397.  
  398. #define JOB_POSITION_UNSPECIFIED       0
  399.  
  400. typedef struct _ADDJOB_INFO_1A {
  401.     LPSTR     Path;
  402.     DWORD   JobId;
  403. } ADDJOB_INFO_1A, *PADDJOB_INFO_1A, *LPADDJOB_INFO_1A;
  404. typedef struct _ADDJOB_INFO_1W {
  405.     LPWSTR    Path;
  406.     DWORD   JobId;
  407. } ADDJOB_INFO_1W, *PADDJOB_INFO_1W, *LPADDJOB_INFO_1W;
  408. #ifdef UNICODE
  409. typedef ADDJOB_INFO_1W ADDJOB_INFO_1;
  410. typedef PADDJOB_INFO_1W PADDJOB_INFO_1;
  411. typedef LPADDJOB_INFO_1W LPADDJOB_INFO_1;
  412. #else
  413. typedef ADDJOB_INFO_1A ADDJOB_INFO_1;
  414. typedef PADDJOB_INFO_1A PADDJOB_INFO_1;
  415. typedef LPADDJOB_INFO_1A LPADDJOB_INFO_1;
  416. #endif // UNICODE
  417.  
  418.  
  419. typedef struct _DRIVER_INFO_1A {
  420.     LPSTR     pName;              // QMS 810
  421. } DRIVER_INFO_1A, *PDRIVER_INFO_1A, *LPDRIVER_INFO_1A;
  422. typedef struct _DRIVER_INFO_1W {
  423.     LPWSTR    pName;              // QMS 810
  424. } DRIVER_INFO_1W, *PDRIVER_INFO_1W, *LPDRIVER_INFO_1W;
  425. #ifdef UNICODE
  426. typedef DRIVER_INFO_1W DRIVER_INFO_1;
  427. typedef PDRIVER_INFO_1W PDRIVER_INFO_1;
  428. typedef LPDRIVER_INFO_1W LPDRIVER_INFO_1;
  429. #else
  430. typedef DRIVER_INFO_1A DRIVER_INFO_1;
  431. typedef PDRIVER_INFO_1A PDRIVER_INFO_1;
  432. typedef LPDRIVER_INFO_1A LPDRIVER_INFO_1;
  433. #endif // UNICODE
  434.  
  435. typedef struct _DRIVER_INFO_2A {
  436.     DWORD   cVersion;
  437.     LPSTR     pName;              // QMS 810
  438.     LPSTR     pEnvironment;       // Win32 x86
  439.     LPSTR     pDriverPath;        // c:\drivers\pscript.dll
  440.     LPSTR     pDataFile;          // c:\drivers\QMS810.PPD
  441.     LPSTR     pConfigFile;        // c:\drivers\PSCRPTUI.DLL
  442. } DRIVER_INFO_2A, *PDRIVER_INFO_2A, *LPDRIVER_INFO_2A;
  443. typedef struct _DRIVER_INFO_2W {
  444.     DWORD   cVersion;
  445.     LPWSTR    pName;              // QMS 810
  446.     LPWSTR    pEnvironment;       // Win32 x86
  447.     LPWSTR    pDriverPath;        // c:\drivers\pscript.dll
  448.     LPWSTR    pDataFile;          // c:\drivers\QMS810.PPD
  449.     LPWSTR    pConfigFile;        // c:\drivers\PSCRPTUI.DLL
  450. } DRIVER_INFO_2W, *PDRIVER_INFO_2W, *LPDRIVER_INFO_2W;
  451. #ifdef UNICODE
  452. typedef DRIVER_INFO_2W DRIVER_INFO_2;
  453. typedef PDRIVER_INFO_2W PDRIVER_INFO_2;
  454. typedef LPDRIVER_INFO_2W LPDRIVER_INFO_2;
  455. #else
  456. typedef DRIVER_INFO_2A DRIVER_INFO_2;
  457. typedef PDRIVER_INFO_2A PDRIVER_INFO_2;
  458. typedef LPDRIVER_INFO_2A LPDRIVER_INFO_2;
  459. #endif // UNICODE
  460.  
  461. typedef struct _DRIVER_INFO_3A {
  462.     DWORD   cVersion;
  463.     LPSTR     pName;                    // QMS 810
  464.     LPSTR     pEnvironment;             // Win32 x86
  465.     LPSTR     pDriverPath;              // c:\drivers\pscript.dll
  466.     LPSTR     pDataFile;                // c:\drivers\QMS810.PPD
  467.     LPSTR     pConfigFile;              // c:\drivers\PSCRPTUI.DLL
  468.     LPSTR     pHelpFile;                // c:\drivers\PSCRPTUI.HLP
  469.     LPSTR     pDependentFiles;          // PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0
  470.     LPSTR     pMonitorName;             // "PJL monitor"
  471.     LPSTR     pDefaultDataType;         // "EMF"
  472. } DRIVER_INFO_3A, *PDRIVER_INFO_3A, *LPDRIVER_INFO_3A;
  473. typedef struct _DRIVER_INFO_3W {
  474.     DWORD   cVersion;
  475.     LPWSTR    pName;                    // QMS 810
  476.     LPWSTR    pEnvironment;             // Win32 x86
  477.     LPWSTR    pDriverPath;              // c:\drivers\pscript.dll
  478.     LPWSTR    pDataFile;                // c:\drivers\QMS810.PPD
  479.     LPWSTR    pConfigFile;              // c:\drivers\PSCRPTUI.DLL
  480.     LPWSTR    pHelpFile;                // c:\drivers\PSCRPTUI.HLP
  481.     LPWSTR    pDependentFiles;          // PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0
  482.     LPWSTR    pMonitorName;             // "PJL monitor"
  483.     LPWSTR    pDefaultDataType;         // "EMF"
  484. } DRIVER_INFO_3W, *PDRIVER_INFO_3W, *LPDRIVER_INFO_3W;
  485. #ifdef UNICODE
  486. typedef DRIVER_INFO_3W DRIVER_INFO_3;
  487. typedef PDRIVER_INFO_3W PDRIVER_INFO_3;
  488. typedef LPDRIVER_INFO_3W LPDRIVER_INFO_3;
  489. #else
  490. typedef DRIVER_INFO_3A DRIVER_INFO_3;
  491. typedef PDRIVER_INFO_3A PDRIVER_INFO_3;
  492. typedef LPDRIVER_INFO_3A LPDRIVER_INFO_3;
  493. #endif // UNICODE
  494.  
  495. typedef struct _DRIVER_INFO_4A {
  496.     DWORD   cVersion;
  497.     LPSTR     pName;                    // QMS 810
  498.     LPSTR     pEnvironment;             // Win32 x86
  499.     LPSTR     pDriverPath;              // c:\drivers\pscript.dll
  500.     LPSTR     pDataFile;                // c:\drivers\QMS810.PPD
  501.     LPSTR     pConfigFile;              // c:\drivers\PSCRPTUI.DLL
  502.     LPSTR     pHelpFile;                // c:\drivers\PSCRPTUI.HLP
  503.     LPSTR     pDependentFiles;          // PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0
  504.     LPSTR     pMonitorName;             // "PJL monitor"
  505.     LPSTR     pDefaultDataType;         // "EMF"
  506.     LPSTR     pszzPreviousNames;        // "OldName1\0OldName2\0\0
  507. } DRIVER_INFO_4A, *PDRIVER_INFO_4A, *LPDRIVER_INFO_4A;
  508. typedef struct _DRIVER_INFO_4W {
  509.     DWORD   cVersion;
  510.     LPWSTR    pName;                    // QMS 810
  511.     LPWSTR    pEnvironment;             // Win32 x86
  512.     LPWSTR    pDriverPath;              // c:\drivers\pscript.dll
  513.     LPWSTR    pDataFile;                // c:\drivers\QMS810.PPD
  514.     LPWSTR    pConfigFile;              // c:\drivers\PSCRPTUI.DLL
  515.     LPWSTR    pHelpFile;                // c:\drivers\PSCRPTUI.HLP
  516.     LPWSTR    pDependentFiles;          // PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0
  517.     LPWSTR    pMonitorName;             // "PJL monitor"
  518.     LPWSTR    pDefaultDataType;         // "EMF"
  519.     LPWSTR    pszzPreviousNames;        // "OldName1\0OldName2\0\0
  520. } DRIVER_INFO_4W, *PDRIVER_INFO_4W, *LPDRIVER_INFO_4W;
  521. #ifdef UNICODE
  522. typedef DRIVER_INFO_4W DRIVER_INFO_4;
  523. typedef PDRIVER_INFO_4W PDRIVER_INFO_4;
  524. typedef LPDRIVER_INFO_4W LPDRIVER_INFO_4;
  525. #else
  526. typedef DRIVER_INFO_4A DRIVER_INFO_4;
  527. typedef PDRIVER_INFO_4A PDRIVER_INFO_4;
  528. typedef LPDRIVER_INFO_4A LPDRIVER_INFO_4;
  529. #endif // UNICODE
  530.  
  531. typedef struct _DRIVER_INFO_5A {
  532.     DWORD   cVersion;
  533.     LPSTR     pName;                    // QMS 810
  534.     LPSTR     pEnvironment;             // Win32 x86
  535.     LPSTR     pDriverPath;              // c:\drivers\pscript.dll
  536.     LPSTR     pDataFile;                // c:\drivers\QMS810.PPD
  537.     LPSTR     pConfigFile;              // c:\drivers\PSCRPTUI.DLL
  538.     DWORD     dwDriverAttributes;       // driver attributes (like UMPD/KMPD)
  539.     DWORD     dwConfigVersion;          // version number of the config file since reboot
  540.     DWORD     dwDriverVersion;          // version number of the driver file since reboot
  541. } DRIVER_INFO_5A, *PDRIVER_INFO_5A, *LPDRIVER_INFO_5A;
  542. typedef struct _DRIVER_INFO_5W {
  543.     DWORD   cVersion;
  544.     LPWSTR    pName;                    // QMS 810
  545.     LPWSTR    pEnvironment;             // Win32 x86
  546.     LPWSTR    pDriverPath;              // c:\drivers\pscript.dll
  547.     LPWSTR    pDataFile;                // c:\drivers\QMS810.PPD
  548.     LPWSTR    pConfigFile;              // c:\drivers\PSCRPTUI.DLL
  549.     DWORD     dwDriverAttributes;       // driver attributes (like UMPD/KMPD)
  550.     DWORD     dwConfigVersion;          // version number of the config file since reboot
  551.     DWORD     dwDriverVersion;          // version number of the driver file since reboot
  552. } DRIVER_INFO_5W, *PDRIVER_INFO_5W, *LPDRIVER_INFO_5W;
  553. #ifdef UNICODE
  554. typedef DRIVER_INFO_5W DRIVER_INFO_5;
  555. typedef PDRIVER_INFO_5W PDRIVER_INFO_5;
  556. typedef LPDRIVER_INFO_5W LPDRIVER_INFO_5;
  557. #else
  558. typedef DRIVER_INFO_5A DRIVER_INFO_5;
  559. typedef PDRIVER_INFO_5A PDRIVER_INFO_5;
  560. typedef LPDRIVER_INFO_5A LPDRIVER_INFO_5;
  561. #endif // UNICODE
  562.  
  563. typedef struct _DRIVER_INFO_6A {
  564.     DWORD     cVersion;
  565.     LPSTR     pName;                    // QMS 810
  566.     LPSTR     pEnvironment;             // Win32 x86
  567.     LPSTR     pDriverPath;              // c:\drivers\pscript.dll
  568.     LPSTR     pDataFile;                // c:\drivers\QMS810.PPD
  569.     LPSTR     pConfigFile;              // c:\drivers\PSCRPTUI.DLL
  570.     LPSTR     pHelpFile;                // c:\drivers\PSCRPTUI.HLP
  571.     LPSTR     pDependentFiles;          // PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0
  572.     LPSTR     pMonitorName;             // "PJL monitor"
  573.     LPSTR     pDefaultDataType;         // "EMF"
  574.     LPSTR     pszzPreviousNames;        // "OldName1\0OldName2\0\0
  575.     FILETIME  ftDriverDate;
  576.     DWORDLONG dwlDriverVersion;
  577.     LPSTR      pszMfgName;
  578.     LPSTR      pszOEMUrl;
  579.     LPSTR      pszHardwareID;
  580.     LPSTR      pszProvider;
  581. } DRIVER_INFO_6A, *PDRIVER_INFO_6A, *LPDRIVER_INFO_6A;
  582. typedef struct _DRIVER_INFO_6W {
  583.     DWORD     cVersion;
  584.     LPWSTR    pName;                    // QMS 810
  585.     LPWSTR    pEnvironment;             // Win32 x86
  586.     LPWSTR    pDriverPath;              // c:\drivers\pscript.dll
  587.     LPWSTR    pDataFile;                // c:\drivers\QMS810.PPD
  588.     LPWSTR    pConfigFile;              // c:\drivers\PSCRPTUI.DLL
  589.     LPWSTR    pHelpFile;                // c:\drivers\PSCRPTUI.HLP
  590.     LPWSTR    pDependentFiles;          // PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0
  591.     LPWSTR    pMonitorName;             // "PJL monitor"
  592.     LPWSTR    pDefaultDataType;         // "EMF"
  593.     LPWSTR    pszzPreviousNames;        // "OldName1\0OldName2\0\0
  594.     FILETIME  ftDriverDate;
  595.     DWORDLONG dwlDriverVersion;
  596.     LPWSTR     pszMfgName;
  597.     LPWSTR     pszOEMUrl;
  598.     LPWSTR     pszHardwareID;
  599.     LPWSTR     pszProvider;
  600. } DRIVER_INFO_6W, *PDRIVER_INFO_6W, *LPDRIVER_INFO_6W;
  601. #ifdef UNICODE
  602. typedef DRIVER_INFO_6W DRIVER_INFO_6;
  603. typedef PDRIVER_INFO_6W PDRIVER_INFO_6;
  604. typedef LPDRIVER_INFO_6W LPDRIVER_INFO_6;
  605. #else
  606. typedef DRIVER_INFO_6A DRIVER_INFO_6;
  607. typedef PDRIVER_INFO_6A PDRIVER_INFO_6;
  608. typedef LPDRIVER_INFO_6A LPDRIVER_INFO_6;
  609. #endif // UNICODE
  610.  
  611. // FLAGS for dwDriverAttributes
  612. #define DRIVER_KERNELMODE                0x00000001
  613. #define DRIVER_USERMODE                  0x00000002
  614.  
  615. // FLAGS for DeletePrinterDriverEx.
  616. #define DPD_DELETE_UNUSED_FILES          0x00000001
  617. #define DPD_DELETE_SPECIFIC_VERSION      0x00000002
  618. #define DPD_DELETE_ALL_FILES             0x00000004
  619.  
  620. // FLAGS for AddPrinterDriverEx.
  621. #define APD_STRICT_UPGRADE               0x00000001
  622. #define APD_STRICT_DOWNGRADE             0x00000002
  623. #define APD_COPY_ALL_FILES               0x00000004
  624. #define APD_COPY_NEW_FILES               0x00000008
  625.  
  626. typedef struct _DOC_INFO_1A {
  627.     LPSTR     pDocName;
  628.     LPSTR     pOutputFile;
  629.     LPSTR     pDatatype;
  630. } DOC_INFO_1A, *PDOC_INFO_1A, *LPDOC_INFO_1A;
  631. typedef struct _DOC_INFO_1W {
  632.     LPWSTR    pDocName;
  633.     LPWSTR    pOutputFile;
  634.     LPWSTR    pDatatype;
  635. } DOC_INFO_1W, *PDOC_INFO_1W, *LPDOC_INFO_1W;
  636. #ifdef UNICODE
  637. typedef DOC_INFO_1W DOC_INFO_1;
  638. typedef PDOC_INFO_1W PDOC_INFO_1;
  639. typedef LPDOC_INFO_1W LPDOC_INFO_1;
  640. #else
  641. typedef DOC_INFO_1A DOC_INFO_1;
  642. typedef PDOC_INFO_1A PDOC_INFO_1;
  643. typedef LPDOC_INFO_1A LPDOC_INFO_1;
  644. #endif // UNICODE
  645.  
  646. typedef struct _FORM_INFO_1A {
  647.     DWORD   Flags;
  648.     LPSTR     pName;
  649.     SIZEL   Size;
  650.     RECTL   ImageableArea;
  651. } FORM_INFO_1A, *PFORM_INFO_1A, *LPFORM_INFO_1A;
  652. typedef struct _FORM_INFO_1W {
  653.     DWORD   Flags;
  654.     LPWSTR    pName;
  655.     SIZEL   Size;
  656.     RECTL   ImageableArea;
  657. } FORM_INFO_1W, *PFORM_INFO_1W, *LPFORM_INFO_1W;
  658. #ifdef UNICODE
  659. typedef FORM_INFO_1W FORM_INFO_1;
  660. typedef PFORM_INFO_1W PFORM_INFO_1;
  661. typedef LPFORM_INFO_1W LPFORM_INFO_1;
  662. #else
  663. typedef FORM_INFO_1A FORM_INFO_1;
  664. typedef PFORM_INFO_1A PFORM_INFO_1;
  665. typedef LPFORM_INFO_1A LPFORM_INFO_1;
  666. #endif // UNICODE
  667.  
  668. typedef struct _DOC_INFO_2A {
  669.     LPSTR     pDocName;
  670.     LPSTR     pOutputFile;
  671.     LPSTR     pDatatype;
  672.     DWORD   dwMode;
  673.     DWORD   JobId;
  674. } DOC_INFO_2A, *PDOC_INFO_2A, *LPDOC_INFO_2A;
  675. typedef struct _DOC_INFO_2W {
  676.     LPWSTR    pDocName;
  677.     LPWSTR    pOutputFile;
  678.     LPWSTR    pDatatype;
  679.     DWORD   dwMode;
  680.     DWORD   JobId;
  681. } DOC_INFO_2W, *PDOC_INFO_2W, *LPDOC_INFO_2W;
  682. #ifdef UNICODE
  683. typedef DOC_INFO_2W DOC_INFO_2;
  684. typedef PDOC_INFO_2W PDOC_INFO_2;
  685. typedef LPDOC_INFO_2W LPDOC_INFO_2;
  686. #else
  687. typedef DOC_INFO_2A DOC_INFO_2;
  688. typedef PDOC_INFO_2A PDOC_INFO_2;
  689. typedef LPDOC_INFO_2A LPDOC_INFO_2;
  690. #endif // UNICODE
  691.  
  692. #define DI_CHANNEL              1    // start direct read/write channel,
  693.  
  694.  
  695. #define DI_READ_SPOOL_JOB       3
  696.  
  697. typedef struct _DOC_INFO_3A {
  698.     LPSTR     pDocName;
  699.     LPSTR     pOutputFile;
  700.     LPSTR     pDatatype;
  701.     DWORD     dwFlags;
  702. } DOC_INFO_3A, *PDOC_INFO_3A, *LPDOC_INFO_3A;
  703. typedef struct _DOC_INFO_3W {
  704.     LPWSTR    pDocName;
  705.     LPWSTR    pOutputFile;
  706.     LPWSTR    pDatatype;
  707.     DWORD     dwFlags;
  708. } DOC_INFO_3W, *PDOC_INFO_3W, *LPDOC_INFO_3W;
  709. #ifdef UNICODE
  710. typedef DOC_INFO_3W DOC_INFO_3;
  711. typedef PDOC_INFO_3W PDOC_INFO_3;
  712. typedef LPDOC_INFO_3W LPDOC_INFO_3;
  713. #else
  714. typedef DOC_INFO_3A DOC_INFO_3;
  715. typedef PDOC_INFO_3A PDOC_INFO_3;
  716. typedef LPDOC_INFO_3A LPDOC_INFO_3;
  717. #endif // UNICODE
  718.  
  719. #define DI_MEMORYMAP_WRITE   0x00000001
  720.  
  721. #define FORM_USER       0x00000000
  722. #define FORM_BUILTIN    0x00000001
  723. #define FORM_PRINTER    0x00000002
  724.  
  725. typedef struct _PRINTPROCESSOR_INFO_1A {
  726.     LPSTR     pName;
  727. } PRINTPROCESSOR_INFO_1A, *PPRINTPROCESSOR_INFO_1A, *LPPRINTPROCESSOR_INFO_1A;
  728. typedef struct _PRINTPROCESSOR_INFO_1W {
  729.     LPWSTR    pName;
  730. } PRINTPROCESSOR_INFO_1W, *PPRINTPROCESSOR_INFO_1W, *LPPRINTPROCESSOR_INFO_1W;
  731. #ifdef UNICODE
  732. typedef PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1;
  733. typedef PPRINTPROCESSOR_INFO_1W PPRINTPROCESSOR_INFO_1;
  734. typedef LPPRINTPROCESSOR_INFO_1W LPPRINTPROCESSOR_INFO_1;
  735. #else
  736. typedef PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1;
  737. typedef PPRINTPROCESSOR_INFO_1A PPRINTPROCESSOR_INFO_1;
  738. typedef LPPRINTPROCESSOR_INFO_1A LPPRINTPROCESSOR_INFO_1;
  739. #endif // UNICODE
  740.  
  741. typedef struct _PORT_INFO_1A {
  742.     LPSTR     pName;
  743. } PORT_INFO_1A, *PPORT_INFO_1A, *LPPORT_INFO_1A;
  744. typedef struct _PORT_INFO_1W {
  745.     LPWSTR    pName;
  746. } PORT_INFO_1W, *PPORT_INFO_1W, *LPPORT_INFO_1W;
  747. #ifdef UNICODE
  748. typedef PORT_INFO_1W PORT_INFO_1;
  749. typedef PPORT_INFO_1W PPORT_INFO_1;
  750. typedef LPPORT_INFO_1W LPPORT_INFO_1;
  751. #else
  752. typedef PORT_INFO_1A PORT_INFO_1;
  753. typedef PPORT_INFO_1A PPORT_INFO_1;
  754. typedef LPPORT_INFO_1A LPPORT_INFO_1;
  755. #endif // UNICODE
  756.  
  757. typedef struct _PORT_INFO_2A {
  758.     LPSTR     pPortName;
  759.     LPSTR     pMonitorName;
  760.     LPSTR     pDescription;
  761.     DWORD     fPortType;
  762.     DWORD     Reserved;
  763. } PORT_INFO_2A, *PPORT_INFO_2A, *LPPORT_INFO_2A;
  764. typedef struct _PORT_INFO_2W {
  765.     LPWSTR    pPortName;
  766.     LPWSTR    pMonitorName;
  767.     LPWSTR    pDescription;
  768.     DWORD     fPortType;
  769.     DWORD     Reserved;
  770. } PORT_INFO_2W, *PPORT_INFO_2W, *LPPORT_INFO_2W;
  771. #ifdef UNICODE
  772. typedef PORT_INFO_2W PORT_INFO_2;
  773. typedef PPORT_INFO_2W PPORT_INFO_2;
  774. typedef LPPORT_INFO_2W LPPORT_INFO_2;
  775. #else
  776. typedef PORT_INFO_2A PORT_INFO_2;
  777. typedef PPORT_INFO_2A PPORT_INFO_2;
  778. typedef LPPORT_INFO_2A LPPORT_INFO_2;
  779. #endif // UNICODE
  780.  
  781. #define PORT_TYPE_WRITE         0x0001
  782. #define PORT_TYPE_READ          0x0002
  783. #define PORT_TYPE_REDIRECTED    0x0004
  784. #define PORT_TYPE_NET_ATTACHED  0x0008
  785.  
  786. typedef struct _PORT_INFO_3A {
  787.     DWORD   dwStatus;
  788.     LPSTR   pszStatus;
  789.     DWORD   dwSeverity;
  790. } PORT_INFO_3A, *PPORT_INFO_3A, *LPPORT_INFO_3A;
  791. typedef struct _PORT_INFO_3W {
  792.     DWORD   dwStatus;
  793.     LPWSTR  pszStatus;
  794.     DWORD   dwSeverity;
  795. } PORT_INFO_3W, *PPORT_INFO_3W, *LPPORT_INFO_3W;
  796. #ifdef UNICODE
  797. typedef PORT_INFO_3W PORT_INFO_3;
  798. typedef PPORT_INFO_3W PPORT_INFO_3;
  799. typedef LPPORT_INFO_3W LPPORT_INFO_3;
  800. #else
  801. typedef PORT_INFO_3A PORT_INFO_3;
  802. typedef PPORT_INFO_3A PPORT_INFO_3;
  803. typedef LPPORT_INFO_3A LPPORT_INFO_3;
  804. #endif // UNICODE
  805.  
  806. #define PORT_STATUS_TYPE_ERROR      1
  807. #define PORT_STATUS_TYPE_WARNING    2
  808. #define PORT_STATUS_TYPE_INFO       3
  809.  
  810. #define     PORT_STATUS_OFFLINE                 1
  811. #define     PORT_STATUS_PAPER_JAM               2
  812. #define     PORT_STATUS_PAPER_OUT               3
  813. #define     PORT_STATUS_OUTPUT_BIN_FULL         4
  814. #define     PORT_STATUS_PAPER_PROBLEM           5
  815. #define     PORT_STATUS_NO_TONER                6
  816. #define     PORT_STATUS_DOOR_OPEN               7
  817. #define     PORT_STATUS_USER_INTERVENTION       8
  818. #define     PORT_STATUS_OUT_OF_MEMORY           9
  819.  
  820. #define     PORT_STATUS_TONER_LOW              10
  821.  
  822. #define     PORT_STATUS_WARMING_UP             11
  823. #define     PORT_STATUS_POWER_SAVE             12
  824.  
  825.  
  826. typedef struct _MONITOR_INFO_1A{
  827.     LPSTR     pName;
  828. } MONITOR_INFO_1A, *PMONITOR_INFO_1A, *LPMONITOR_INFO_1A;
  829. typedef struct _MONITOR_INFO_1W{
  830.     LPWSTR    pName;
  831. } MONITOR_INFO_1W, *PMONITOR_INFO_1W, *LPMONITOR_INFO_1W;
  832. #ifdef UNICODE
  833. typedef MONITOR_INFO_1W MONITOR_INFO_1;
  834. typedef PMONITOR_INFO_1W PMONITOR_INFO_1;
  835. typedef LPMONITOR_INFO_1W LPMONITOR_INFO_1;
  836. #else
  837. typedef MONITOR_INFO_1A MONITOR_INFO_1;
  838. typedef PMONITOR_INFO_1A PMONITOR_INFO_1;
  839. typedef LPMONITOR_INFO_1A LPMONITOR_INFO_1;
  840. #endif // UNICODE
  841.  
  842. typedef struct _MONITOR_INFO_2A{
  843.     LPSTR     pName;
  844.     LPSTR     pEnvironment;
  845.     LPSTR     pDLLName;
  846. } MONITOR_INFO_2A, *PMONITOR_INFO_2A, *LPMONITOR_INFO_2A;
  847. typedef struct _MONITOR_INFO_2W{
  848.     LPWSTR    pName;
  849.     LPWSTR    pEnvironment;
  850.     LPWSTR    pDLLName;
  851. } MONITOR_INFO_2W, *PMONITOR_INFO_2W, *LPMONITOR_INFO_2W;
  852. #ifdef UNICODE
  853. typedef MONITOR_INFO_2W MONITOR_INFO_2;
  854. typedef PMONITOR_INFO_2W PMONITOR_INFO_2;
  855. typedef LPMONITOR_INFO_2W LPMONITOR_INFO_2;
  856. #else
  857. typedef MONITOR_INFO_2A MONITOR_INFO_2;
  858. typedef PMONITOR_INFO_2A PMONITOR_INFO_2;
  859. typedef LPMONITOR_INFO_2A LPMONITOR_INFO_2;
  860. #endif // UNICODE
  861.  
  862. typedef struct _DATATYPES_INFO_1A{
  863.     LPSTR     pName;
  864. } DATATYPES_INFO_1A, *PDATATYPES_INFO_1A, *LPDATATYPES_INFO_1A;
  865. typedef struct _DATATYPES_INFO_1W{
  866.     LPWSTR    pName;
  867. } DATATYPES_INFO_1W, *PDATATYPES_INFO_1W, *LPDATATYPES_INFO_1W;
  868. #ifdef UNICODE
  869. typedef DATATYPES_INFO_1W DATATYPES_INFO_1;
  870. typedef PDATATYPES_INFO_1W PDATATYPES_INFO_1;
  871. typedef LPDATATYPES_INFO_1W LPDATATYPES_INFO_1;
  872. #else
  873. typedef DATATYPES_INFO_1A DATATYPES_INFO_1;
  874. typedef PDATATYPES_INFO_1A PDATATYPES_INFO_1;
  875. typedef LPDATATYPES_INFO_1A LPDATATYPES_INFO_1;
  876. #endif // UNICODE
  877.  
  878. typedef struct _PRINTER_DEFAULTSA{
  879.     LPSTR         pDatatype;
  880.     LPDEVMODEA pDevMode;
  881.     ACCESS_MASK DesiredAccess;
  882. } PRINTER_DEFAULTSA, *PPRINTER_DEFAULTSA, *LPPRINTER_DEFAULTSA;
  883. typedef struct _PRINTER_DEFAULTSW{
  884.     LPWSTR        pDatatype;
  885.     LPDEVMODEW pDevMode;
  886.     ACCESS_MASK DesiredAccess;
  887. } PRINTER_DEFAULTSW, *PPRINTER_DEFAULTSW, *LPPRINTER_DEFAULTSW;
  888. #ifdef UNICODE
  889. typedef PRINTER_DEFAULTSW PRINTER_DEFAULTS;
  890. typedef PPRINTER_DEFAULTSW PPRINTER_DEFAULTS;
  891. typedef LPPRINTER_DEFAULTSW LPPRINTER_DEFAULTS;
  892. #else
  893. typedef PRINTER_DEFAULTSA PRINTER_DEFAULTS;
  894. typedef PPRINTER_DEFAULTSA PPRINTER_DEFAULTS;
  895. typedef LPPRINTER_DEFAULTSA LPPRINTER_DEFAULTS;
  896. #endif // UNICODE
  897.  
  898. typedef struct _PRINTER_ENUM_VALUESA {
  899.     LPSTR   pValueName;
  900.     DWORD   cbValueName;
  901.     DWORD   dwType;
  902.     LPBYTE  pData;
  903.     DWORD   cbData;
  904. } PRINTER_ENUM_VALUESA, *PPRINTER_ENUM_VALUESA, *LPPRINTER_ENUM_VALUESA;
  905. typedef struct _PRINTER_ENUM_VALUESW {
  906.     LPWSTR  pValueName;
  907.     DWORD   cbValueName;
  908.     DWORD   dwType;
  909.     LPBYTE  pData;
  910.     DWORD   cbData;
  911. } PRINTER_ENUM_VALUESW, *PPRINTER_ENUM_VALUESW, *LPPRINTER_ENUM_VALUESW;
  912. #ifdef UNICODE
  913. typedef PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUES;
  914. typedef PPRINTER_ENUM_VALUESW PPRINTER_ENUM_VALUES;
  915. typedef LPPRINTER_ENUM_VALUESW LPPRINTER_ENUM_VALUES;
  916. #else
  917. typedef PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUES;
  918. typedef PPRINTER_ENUM_VALUESA PPRINTER_ENUM_VALUES;
  919. typedef LPPRINTER_ENUM_VALUESA LPPRINTER_ENUM_VALUES;
  920. #endif // UNICODE
  921.  
  922. BOOL
  923. WINAPI
  924. EnumPrintersA(
  925.     IN DWORD   Flags,
  926.     IN LPSTR Name,
  927.     IN DWORD   Level,
  928.     OUT LPBYTE  pPrinterEnum,
  929.     IN DWORD   cbBuf,
  930.     OUT LPDWORD pcbNeeded,
  931.     OUT LPDWORD pcReturned
  932. );
  933. BOOL
  934. WINAPI
  935. EnumPrintersW(
  936.     IN DWORD   Flags,
  937.     IN LPWSTR Name,
  938.     IN DWORD   Level,
  939.     OUT LPBYTE  pPrinterEnum,
  940.     IN DWORD   cbBuf,
  941.     OUT LPDWORD pcbNeeded,
  942.     OUT LPDWORD pcReturned
  943. );
  944. #ifdef UNICODE
  945. #define EnumPrinters  EnumPrintersW
  946. #else
  947. #define EnumPrinters  EnumPrintersA
  948. #endif // !UNICODE
  949.  
  950. #define PRINTER_ENUM_DEFAULT     0x00000001
  951. #define PRINTER_ENUM_LOCAL       0x00000002
  952. #define PRINTER_ENUM_CONNECTIONS 0x00000004
  953. #define PRINTER_ENUM_FAVORITE    0x00000004
  954. #define PRINTER_ENUM_NAME        0x00000008
  955. #define PRINTER_ENUM_REMOTE      0x00000010
  956. #define PRINTER_ENUM_SHARED      0x00000020
  957. #define PRINTER_ENUM_NETWORK     0x00000040
  958.  
  959. #define PRINTER_ENUM_EXPAND      0x00004000
  960. #define PRINTER_ENUM_CONTAINER   0x00008000
  961.  
  962. #define PRINTER_ENUM_ICONMASK    0x00ff0000
  963. #define PRINTER_ENUM_ICON1       0x00010000
  964. #define PRINTER_ENUM_ICON2       0x00020000
  965. #define PRINTER_ENUM_ICON3       0x00040000
  966. #define PRINTER_ENUM_ICON4       0x00080000
  967. #define PRINTER_ENUM_ICON5       0x00100000
  968. #define PRINTER_ENUM_ICON6       0x00200000
  969. #define PRINTER_ENUM_ICON7       0x00400000
  970. #define PRINTER_ENUM_ICON8       0x00800000
  971. #define PRINTER_ENUM_HIDE        0x01000000
  972.  
  973.  
  974.  
  975. #define SPOOL_FILE_PERSISTENT    0x00000001
  976. #define SPOOL_FILE_TEMPORARY     0x00000002
  977.  
  978.  
  979. BOOL
  980. WINAPI
  981. OpenPrinterA(
  982.    IN LPSTR    pPrinterName,
  983.    OUT LPHANDLE phPrinter,
  984.    IN LPPRINTER_DEFAULTSA pDefault
  985. );
  986. BOOL
  987. WINAPI
  988. OpenPrinterW(
  989.    IN LPWSTR    pPrinterName,
  990.    OUT LPHANDLE phPrinter,
  991.    IN LPPRINTER_DEFAULTSW pDefault
  992. );
  993. #ifdef UNICODE
  994. #define OpenPrinter  OpenPrinterW
  995. #else
  996. #define OpenPrinter  OpenPrinterA
  997. #endif // !UNICODE
  998.  
  999. BOOL
  1000. WINAPI
  1001. ResetPrinterA(
  1002.    IN HANDLE   hPrinter,
  1003.    IN LPPRINTER_DEFAULTSA pDefault
  1004. );
  1005. BOOL
  1006. WINAPI
  1007. ResetPrinterW(
  1008.    IN HANDLE   hPrinter,
  1009.    IN LPPRINTER_DEFAULTSW pDefault
  1010. );
  1011. #ifdef UNICODE
  1012. #define ResetPrinter  ResetPrinterW
  1013. #else
  1014. #define ResetPrinter  ResetPrinterA
  1015. #endif // !UNICODE
  1016.  
  1017. BOOL
  1018. WINAPI
  1019. SetJobA(
  1020.     IN HANDLE  hPrinter,
  1021.     IN DWORD   JobId,
  1022.     IN DWORD   Level,
  1023.     IN LPBYTE  pJob,
  1024.     IN DWORD   Command
  1025. );
  1026. BOOL
  1027. WINAPI
  1028. SetJobW(
  1029.     IN HANDLE  hPrinter,
  1030.     IN DWORD   JobId,
  1031.     IN DWORD   Level,
  1032.     IN LPBYTE  pJob,
  1033.     IN DWORD   Command
  1034. );
  1035. #ifdef UNICODE
  1036. #define SetJob  SetJobW
  1037. #else
  1038. #define SetJob  SetJobA
  1039. #endif // !UNICODE
  1040.  
  1041. BOOL
  1042. WINAPI
  1043. GetJobA(
  1044.    IN HANDLE   hPrinter,
  1045.    IN DWORD    JobId,
  1046.    IN DWORD    Level,
  1047.    OUT LPBYTE   pJob,
  1048.    IN DWORD    cbBuf,
  1049.    OUT LPDWORD  pcbNeeded
  1050. );
  1051. BOOL
  1052. WINAPI
  1053. GetJobW(
  1054.    IN HANDLE   hPrinter,
  1055.    IN DWORD    JobId,
  1056.    IN DWORD    Level,
  1057.    OUT LPBYTE   pJob,
  1058.    IN DWORD    cbBuf,
  1059.    OUT LPDWORD  pcbNeeded
  1060. );
  1061. #ifdef UNICODE
  1062. #define GetJob  GetJobW
  1063. #else
  1064. #define GetJob  GetJobA
  1065. #endif // !UNICODE
  1066.  
  1067. BOOL
  1068. WINAPI
  1069. EnumJobsA(
  1070.     IN HANDLE  hPrinter,
  1071.     IN DWORD   FirstJob,
  1072.     IN DWORD   NoJobs,
  1073.     IN DWORD   Level,
  1074.     OUT LPBYTE  pJob,
  1075.     IN DWORD   cbBuf,
  1076.     OUT LPDWORD pcbNeeded,
  1077.     OUT LPDWORD pcReturned
  1078. );
  1079. BOOL
  1080. WINAPI
  1081. EnumJobsW(
  1082.     IN HANDLE  hPrinter,
  1083.     IN DWORD   FirstJob,
  1084.     IN DWORD   NoJobs,
  1085.     IN DWORD   Level,
  1086.     OUT LPBYTE  pJob,
  1087.     IN DWORD   cbBuf,
  1088.     OUT LPDWORD pcbNeeded,
  1089.     OUT LPDWORD pcReturned
  1090. );
  1091. #ifdef UNICODE
  1092. #define EnumJobs  EnumJobsW
  1093. #else
  1094. #define EnumJobs  EnumJobsA
  1095. #endif // !UNICODE
  1096.  
  1097. HANDLE
  1098. WINAPI
  1099. AddPrinterA(
  1100.     IN LPSTR   pName,
  1101.     IN DWORD   Level,
  1102.     IN LPBYTE  pPrinter
  1103. );
  1104. HANDLE
  1105. WINAPI
  1106. AddPrinterW(
  1107.     IN LPWSTR   pName,
  1108.     IN DWORD   Level,
  1109.     IN LPBYTE  pPrinter
  1110. );
  1111. #ifdef UNICODE
  1112. #define AddPrinter  AddPrinterW
  1113. #else
  1114. #define AddPrinter  AddPrinterA
  1115. #endif // !UNICODE
  1116.  
  1117. BOOL
  1118. WINAPI
  1119. DeletePrinter(
  1120.    IN OUT HANDLE   hPrinter
  1121. );
  1122.  
  1123. BOOL
  1124. WINAPI
  1125. SetPrinterA(
  1126.     IN HANDLE  hPrinter,
  1127.     IN DWORD   Level,
  1128.     IN LPBYTE  pPrinter,
  1129.     IN DWORD   Command
  1130. );
  1131. BOOL
  1132. WINAPI
  1133. SetPrinterW(
  1134.     IN HANDLE  hPrinter,
  1135.     IN DWORD   Level,
  1136.     IN LPBYTE  pPrinter,
  1137.     IN DWORD   Command
  1138. );
  1139. #ifdef UNICODE
  1140. #define SetPrinter  SetPrinterW
  1141. #else
  1142. #define SetPrinter  SetPrinterA
  1143. #endif // !UNICODE
  1144.  
  1145. BOOL
  1146. WINAPI
  1147. GetPrinterA(
  1148.     IN HANDLE  hPrinter,
  1149.     IN DWORD   Level,
  1150.     OUT LPBYTE  pPrinter,
  1151.     IN DWORD   cbBuf,
  1152.     OUT LPDWORD pcbNeeded
  1153. );
  1154. BOOL
  1155. WINAPI
  1156. GetPrinterW(
  1157.     IN HANDLE  hPrinter,
  1158.     IN DWORD   Level,
  1159.     OUT LPBYTE  pPrinter,
  1160.     IN DWORD   cbBuf,
  1161.     OUT LPDWORD pcbNeeded
  1162. );
  1163. #ifdef UNICODE
  1164. #define GetPrinter  GetPrinterW
  1165. #else
  1166. #define GetPrinter  GetPrinterA
  1167. #endif // !UNICODE
  1168.  
  1169. BOOL
  1170. WINAPI
  1171. AddPrinterDriverA(
  1172.     IN LPSTR   pName,
  1173.     IN  DWORD   Level,
  1174.     OUT LPBYTE  pDriverInfo
  1175. );
  1176. BOOL
  1177. WINAPI
  1178. AddPrinterDriverW(
  1179.     IN LPWSTR   pName,
  1180.     IN  DWORD   Level,
  1181.     OUT LPBYTE  pDriverInfo
  1182. );
  1183. #ifdef UNICODE
  1184. #define AddPrinterDriver  AddPrinterDriverW
  1185. #else
  1186. #define AddPrinterDriver  AddPrinterDriverA
  1187. #endif // !UNICODE
  1188.  
  1189. BOOL
  1190. WINAPI
  1191. AddPrinterDriverExA(
  1192.     IN LPSTR   pName,
  1193.     IN DWORD     Level,
  1194.     IN OUT LPBYTE pDriverInfo,
  1195.     IN DWORD     dwFileCopyFlags
  1196. );
  1197. BOOL
  1198. WINAPI
  1199. AddPrinterDriverExW(
  1200.     IN LPWSTR   pName,
  1201.     IN DWORD     Level,
  1202.     IN OUT LPBYTE pDriverInfo,
  1203.     IN DWORD     dwFileCopyFlags
  1204. );
  1205. #ifdef UNICODE
  1206. #define AddPrinterDriverEx  AddPrinterDriverExW
  1207. #else
  1208. #define AddPrinterDriverEx  AddPrinterDriverExA
  1209. #endif // !UNICODE
  1210.  
  1211. BOOL
  1212. WINAPI
  1213. EnumPrinterDriversA(
  1214.     IN LPSTR   pName,
  1215.     IN LPSTR   pEnvironment,
  1216.     IN DWORD   Level,
  1217.     OUT LPBYTE  pDriverInfo,
  1218.     IN DWORD   cbBuf,
  1219.     OUT LPDWORD pcbNeeded,
  1220.     OUT LPDWORD pcReturned
  1221. );
  1222. BOOL
  1223. WINAPI
  1224. EnumPrinterDriversW(
  1225.     IN LPWSTR   pName,
  1226.     IN LPWSTR   pEnvironment,
  1227.     IN DWORD   Level,
  1228.     OUT LPBYTE  pDriverInfo,
  1229.     IN DWORD   cbBuf,
  1230.     OUT LPDWORD pcbNeeded,
  1231.     OUT LPDWORD pcReturned
  1232. );
  1233. #ifdef UNICODE
  1234. #define EnumPrinterDrivers  EnumPrinterDriversW
  1235. #else
  1236. #define EnumPrinterDrivers  EnumPrinterDriversA
  1237. #endif // !UNICODE
  1238.  
  1239. BOOL
  1240. WINAPI
  1241. GetPrinterDriverA(
  1242.     IN HANDLE  hPrinter,
  1243.     IN LPSTR   pEnvironment,
  1244.     IN DWORD   Level,
  1245.     OUT LPBYTE  pDriverInfo,
  1246.     IN DWORD   cbBuf,
  1247.     OUT LPDWORD pcbNeeded
  1248. );
  1249. BOOL
  1250. WINAPI
  1251. GetPrinterDriverW(
  1252.     IN HANDLE  hPrinter,
  1253.     IN LPWSTR   pEnvironment,
  1254.     IN DWORD   Level,
  1255.     OUT LPBYTE  pDriverInfo,
  1256.     IN DWORD   cbBuf,
  1257.     OUT LPDWORD pcbNeeded
  1258. );
  1259. #ifdef UNICODE
  1260. #define GetPrinterDriver  GetPrinterDriverW
  1261. #else
  1262. #define GetPrinterDriver  GetPrinterDriverA
  1263. #endif // !UNICODE
  1264.  
  1265. BOOL
  1266. WINAPI
  1267. GetPrinterDriverDirectoryA(
  1268.     IN LPSTR   pName,
  1269.     IN LPSTR   pEnvironment,
  1270.     IN DWORD   Level,
  1271.     OUT LPBYTE  pDriverDirectory,
  1272.     IN DWORD   cbBuf,
  1273.     OUT LPDWORD pcbNeeded
  1274. );
  1275. BOOL
  1276. WINAPI
  1277. GetPrinterDriverDirectoryW(
  1278.     IN LPWSTR   pName,
  1279.     IN LPWSTR   pEnvironment,
  1280.     IN DWORD   Level,
  1281.     OUT LPBYTE  pDriverDirectory,
  1282.     IN DWORD   cbBuf,
  1283.     OUT LPDWORD pcbNeeded
  1284. );
  1285. #ifdef UNICODE
  1286. #define GetPrinterDriverDirectory  GetPrinterDriverDirectoryW
  1287. #else
  1288. #define GetPrinterDriverDirectory  GetPrinterDriverDirectoryA
  1289. #endif // !UNICODE
  1290.  
  1291. BOOL
  1292. WINAPI
  1293. DeletePrinterDriverA(
  1294.    IN LPSTR    pName,
  1295.    IN LPSTR    pEnvironment,
  1296.    IN LPSTR    pDriverName
  1297. );
  1298. BOOL
  1299. WINAPI
  1300. DeletePrinterDriverW(
  1301.    IN LPWSTR    pName,
  1302.    IN LPWSTR    pEnvironment,
  1303.    IN LPWSTR    pDriverName
  1304. );
  1305. #ifdef UNICODE
  1306. #define DeletePrinterDriver  DeletePrinterDriverW
  1307. #else
  1308. #define DeletePrinterDriver  DeletePrinterDriverA
  1309. #endif // !UNICODE
  1310.  
  1311. BOOL
  1312. WINAPI
  1313. DeletePrinterDriverExA(
  1314.    IN LPSTR    pName,
  1315.    IN LPSTR    pEnvironment,
  1316.    IN LPSTR    pDriverName,
  1317.    IN DWORD      dwDeleteFlag,
  1318.    IN DWORD      dwVersionFlag
  1319. );
  1320. BOOL
  1321. WINAPI
  1322. DeletePrinterDriverExW(
  1323.    IN LPWSTR    pName,
  1324.    IN LPWSTR    pEnvironment,
  1325.    IN LPWSTR    pDriverName,
  1326.    IN DWORD      dwDeleteFlag,
  1327.    IN DWORD      dwVersionFlag
  1328. );
  1329. #ifdef UNICODE
  1330. #define DeletePrinterDriverEx  DeletePrinterDriverExW
  1331. #else
  1332. #define DeletePrinterDriverEx  DeletePrinterDriverExA
  1333. #endif // !UNICODE
  1334.  
  1335.  
  1336.  
  1337. BOOL
  1338. WINAPI
  1339. AddPrintProcessorA(
  1340.     IN LPSTR   pName,
  1341.     IN LPSTR   pEnvironment,
  1342.     IN LPSTR   pPathName,
  1343.     IN LPSTR   pPrintProcessorName
  1344. );
  1345. BOOL
  1346. WINAPI
  1347. AddPrintProcessorW(
  1348.     IN LPWSTR   pName,
  1349.     IN LPWSTR   pEnvironment,
  1350.     IN LPWSTR   pPathName,
  1351.     IN LPWSTR   pPrintProcessorName
  1352. );
  1353. #ifdef UNICODE
  1354. #define AddPrintProcessor  AddPrintProcessorW
  1355. #else
  1356. #define AddPrintProcessor  AddPrintProcessorA
  1357. #endif // !UNICODE
  1358.  
  1359. BOOL
  1360. WINAPI
  1361. EnumPrintProcessorsA(
  1362.     IN LPSTR   pName,
  1363.     IN LPSTR   pEnvironment,
  1364.     IN DWORD   Level,
  1365.     OUT LPBYTE  pPrintProcessorInfo,
  1366.     IN DWORD   cbBuf,
  1367.     OUT LPDWORD pcbNeeded,
  1368.     OUT LPDWORD pcReturned
  1369. );
  1370. BOOL
  1371. WINAPI
  1372. EnumPrintProcessorsW(
  1373.     IN LPWSTR   pName,
  1374.     IN LPWSTR   pEnvironment,
  1375.     IN DWORD   Level,
  1376.     OUT LPBYTE  pPrintProcessorInfo,
  1377.     IN DWORD   cbBuf,
  1378.     OUT LPDWORD pcbNeeded,
  1379.     OUT LPDWORD pcReturned
  1380. );
  1381. #ifdef UNICODE
  1382. #define EnumPrintProcessors  EnumPrintProcessorsW
  1383. #else
  1384. #define EnumPrintProcessors  EnumPrintProcessorsA
  1385. #endif // !UNICODE
  1386.  
  1387.  
  1388.  
  1389. BOOL
  1390. WINAPI
  1391. GetPrintProcessorDirectoryA(
  1392.     IN LPSTR   pName,
  1393.     IN LPSTR   pEnvironment,
  1394.     IN DWORD   Level,
  1395.     OUT LPBYTE  pPrintProcessorInfo,
  1396.     IN DWORD   cbBuf,
  1397.     OUT LPDWORD pcbNeeded
  1398. );
  1399. BOOL
  1400. WINAPI
  1401. GetPrintProcessorDirectoryW(
  1402.     IN LPWSTR   pName,
  1403.     IN LPWSTR   pEnvironment,
  1404.     IN DWORD   Level,
  1405.     OUT LPBYTE  pPrintProcessorInfo,
  1406.     IN DWORD   cbBuf,
  1407.     OUT LPDWORD pcbNeeded
  1408. );
  1409. #ifdef UNICODE
  1410. #define GetPrintProcessorDirectory  GetPrintProcessorDirectoryW
  1411. #else
  1412. #define GetPrintProcessorDirectory  GetPrintProcessorDirectoryA
  1413. #endif // !UNICODE
  1414.  
  1415. BOOL
  1416. WINAPI
  1417. EnumPrintProcessorDatatypesA(
  1418.     IN LPSTR   pName,
  1419.     IN LPSTR   pPrintProcessorName,
  1420.     IN DWORD   Level,
  1421.     OUT LPBYTE  pDatatypes,
  1422.     IN DWORD   cbBuf,
  1423.     OUT LPDWORD pcbNeeded,
  1424.     OUT LPDWORD pcReturned
  1425. );
  1426. BOOL
  1427. WINAPI
  1428. EnumPrintProcessorDatatypesW(
  1429.     IN LPWSTR   pName,
  1430.     IN LPWSTR   pPrintProcessorName,
  1431.     IN DWORD   Level,
  1432.     OUT LPBYTE  pDatatypes,
  1433.     IN DWORD   cbBuf,
  1434.     OUT LPDWORD pcbNeeded,
  1435.     OUT LPDWORD pcReturned
  1436. );
  1437. #ifdef UNICODE
  1438. #define EnumPrintProcessorDatatypes  EnumPrintProcessorDatatypesW
  1439. #else
  1440. #define EnumPrintProcessorDatatypes  EnumPrintProcessorDatatypesA
  1441. #endif // !UNICODE
  1442.  
  1443. BOOL
  1444. WINAPI
  1445. DeletePrintProcessorA(
  1446.     IN LPSTR   pName,
  1447.     IN LPSTR   pEnvironment,
  1448.     IN LPSTR   pPrintProcessorName
  1449. );
  1450. BOOL
  1451. WINAPI
  1452. DeletePrintProcessorW(
  1453.     IN LPWSTR   pName,
  1454.     IN LPWSTR   pEnvironment,
  1455.     IN LPWSTR   pPrintProcessorName
  1456. );
  1457. #ifdef UNICODE
  1458. #define DeletePrintProcessor  DeletePrintProcessorW
  1459. #else
  1460. #define DeletePrintProcessor  DeletePrintProcessorA
  1461. #endif // !UNICODE
  1462.  
  1463. DWORD
  1464. WINAPI
  1465. StartDocPrinterA(
  1466.     IN HANDLE  hPrinter,
  1467.     IN DWORD   Level,
  1468.     IN LPBYTE  pDocInfo
  1469. );
  1470. DWORD
  1471. WINAPI
  1472. StartDocPrinterW(
  1473.     IN HANDLE  hPrinter,
  1474.     IN DWORD   Level,
  1475.     IN LPBYTE  pDocInfo
  1476. );
  1477. #ifdef UNICODE
  1478. #define StartDocPrinter  StartDocPrinterW
  1479. #else
  1480. #define StartDocPrinter  StartDocPrinterA
  1481. #endif // !UNICODE
  1482.  
  1483. BOOL
  1484. WINAPI
  1485. StartPagePrinter(
  1486.     IN HANDLE  hPrinter
  1487. );
  1488.  
  1489. BOOL
  1490. WINAPI
  1491. WritePrinter(
  1492.     IN HANDLE  hPrinter,
  1493.     IN LPVOID  pBuf,
  1494.     IN DWORD   cbBuf,
  1495.     OUT LPDWORD pcWritten
  1496. );
  1497.  
  1498.  
  1499. BOOL
  1500. WINAPI
  1501. FlushPrinter(
  1502.     IN HANDLE   hPrinter,
  1503.     IN LPVOID   pBuf,
  1504.     IN DWORD    cbBuf,
  1505.     OUT LPDWORD pcWritten,
  1506.     IN DWORD    cSleep
  1507. );
  1508.  
  1509. BOOL
  1510. WINAPI
  1511. EndPagePrinter(
  1512.    IN HANDLE   hPrinter
  1513. );
  1514.  
  1515. BOOL
  1516. WINAPI
  1517. AbortPrinter(
  1518.    IN HANDLE   hPrinter
  1519. );
  1520.  
  1521. BOOL
  1522. WINAPI
  1523. ReadPrinter(
  1524.     IN HANDLE  hPrinter,
  1525.     OUT LPVOID  pBuf,
  1526.     IN DWORD   cbBuf,
  1527.     OUT LPDWORD pNoBytesRead
  1528. );
  1529.  
  1530. BOOL
  1531. WINAPI
  1532. EndDocPrinter(
  1533.    IN HANDLE   hPrinter
  1534. );
  1535.  
  1536. BOOL
  1537. WINAPI
  1538. AddJobA(
  1539.     IN HANDLE  hPrinter,
  1540.     IN DWORD   Level,
  1541.     OUT LPBYTE  pData,
  1542.     IN DWORD   cbBuf,
  1543.     OUT LPDWORD pcbNeeded
  1544. );
  1545. BOOL
  1546. WINAPI
  1547. AddJobW(
  1548.     IN HANDLE  hPrinter,
  1549.     IN DWORD   Level,
  1550.     OUT LPBYTE  pData,
  1551.     IN DWORD   cbBuf,
  1552.     OUT LPDWORD pcbNeeded
  1553. );
  1554. #ifdef UNICODE
  1555. #define AddJob  AddJobW
  1556. #else
  1557. #define AddJob  AddJobA
  1558. #endif // !UNICODE
  1559.  
  1560. BOOL
  1561. WINAPI
  1562. ScheduleJob(
  1563.     IN HANDLE  hPrinter,
  1564.     IN DWORD   JobId
  1565. );
  1566.  
  1567. BOOL
  1568. WINAPI
  1569. PrinterProperties(
  1570.     IN HWND    hWnd,
  1571.     IN HANDLE  hPrinter
  1572. );
  1573.  
  1574. LONG
  1575. WINAPI
  1576. DocumentPropertiesA(
  1577.     IN HWND      hWnd,
  1578.     IN HANDLE    hPrinter,
  1579.     IN LPSTR   pDeviceName,
  1580.     OUT PDEVMODEA pDevModeOutput,
  1581.     IN PDEVMODEA pDevModeInput,
  1582.     IN DWORD     fMode
  1583. );
  1584. LONG
  1585. WINAPI
  1586. DocumentPropertiesW(
  1587.     IN HWND      hWnd,
  1588.     IN HANDLE    hPrinter,
  1589.     IN LPWSTR   pDeviceName,
  1590.     OUT PDEVMODEW pDevModeOutput,
  1591.     IN PDEVMODEW pDevModeInput,
  1592.     IN DWORD     fMode
  1593. );
  1594. #ifdef UNICODE
  1595. #define DocumentProperties  DocumentPropertiesW
  1596. #else
  1597. #define DocumentProperties  DocumentPropertiesA
  1598. #endif // !UNICODE
  1599.  
  1600. LONG
  1601. WINAPI
  1602. AdvancedDocumentPropertiesA(
  1603.     IN HWND    hWnd,
  1604.     IN HANDLE  hPrinter,
  1605.     IN LPSTR   pDeviceName,
  1606.     OUT PDEVMODEA pDevModeOutput,
  1607.     IN PDEVMODEA pDevModeInput
  1608. );
  1609. LONG
  1610. WINAPI
  1611. AdvancedDocumentPropertiesW(
  1612.     IN HWND    hWnd,
  1613.     IN HANDLE  hPrinter,
  1614.     IN LPWSTR   pDeviceName,
  1615.     OUT PDEVMODEW pDevModeOutput,
  1616.     IN PDEVMODEW pDevModeInput
  1617. );
  1618. #ifdef UNICODE
  1619. #define AdvancedDocumentProperties  AdvancedDocumentPropertiesW
  1620. #else
  1621. #define AdvancedDocumentProperties  AdvancedDocumentPropertiesA
  1622. #endif // !UNICODE
  1623.  
  1624.  
  1625. DWORD
  1626. WINAPI
  1627. GetPrinterDataA(
  1628.     IN HANDLE   hPrinter,
  1629.     IN LPSTR  pValueName,
  1630.     OUT LPDWORD  pType,
  1631.     OUT LPBYTE   pData,
  1632.     IN DWORD    nSize,
  1633.     OUT LPDWORD  pcbNeeded
  1634. );
  1635. DWORD
  1636. WINAPI
  1637. GetPrinterDataW(
  1638.     IN HANDLE   hPrinter,
  1639.     IN LPWSTR  pValueName,
  1640.     OUT LPDWORD  pType,
  1641.     OUT LPBYTE   pData,
  1642.     IN DWORD    nSize,
  1643.     OUT LPDWORD  pcbNeeded
  1644. );
  1645. #ifdef UNICODE
  1646. #define GetPrinterData  GetPrinterDataW
  1647. #else
  1648. #define GetPrinterData  GetPrinterDataA
  1649. #endif // !UNICODE
  1650.  
  1651. DWORD
  1652. WINAPI
  1653. GetPrinterDataExA(
  1654.     IN HANDLE   hPrinter,
  1655.     IN LPCSTR pKeyName,
  1656.     IN LPCSTR pValueName,
  1657.     OUT LPDWORD  pType,
  1658.     OUT LPBYTE   pData,
  1659.     IN DWORD    nSize,
  1660.     OUT LPDWORD  pcbNeeded
  1661. );
  1662. DWORD
  1663. WINAPI
  1664. GetPrinterDataExW(
  1665.     IN HANDLE   hPrinter,
  1666.     IN LPCWSTR pKeyName,
  1667.     IN LPCWSTR pValueName,
  1668.     OUT LPDWORD  pType,
  1669.     OUT LPBYTE   pData,
  1670.     IN DWORD    nSize,
  1671.     OUT LPDWORD  pcbNeeded
  1672. );
  1673. #ifdef UNICODE
  1674. #define GetPrinterDataEx  GetPrinterDataExW
  1675. #else
  1676. #define GetPrinterDataEx  GetPrinterDataExA
  1677. #endif // !UNICODE
  1678.  
  1679. DWORD
  1680. WINAPI
  1681. EnumPrinterDataA(
  1682.     IN HANDLE   hPrinter,
  1683.     IN DWORD    dwIndex,
  1684.     OUT LPSTR  pValueName,
  1685.     IN DWORD    cbValueName,
  1686.     OUT LPDWORD  pcbValueName,
  1687.     OUT LPDWORD  pType,
  1688.     OUT LPBYTE   pData,
  1689.     IN DWORD    cbData,
  1690.     OUT LPDWORD  pcbData
  1691. );
  1692. DWORD
  1693. WINAPI
  1694. EnumPrinterDataW(
  1695.     IN HANDLE   hPrinter,
  1696.     IN DWORD    dwIndex,
  1697.     OUT LPWSTR  pValueName,
  1698.     IN DWORD    cbValueName,
  1699.     OUT LPDWORD  pcbValueName,
  1700.     OUT LPDWORD  pType,
  1701.     OUT LPBYTE   pData,
  1702.     IN DWORD    cbData,
  1703.     OUT LPDWORD  pcbData
  1704. );
  1705. #ifdef UNICODE
  1706. #define EnumPrinterData  EnumPrinterDataW
  1707. #else
  1708. #define EnumPrinterData  EnumPrinterDataA
  1709. #endif // !UNICODE
  1710.  
  1711. DWORD
  1712. WINAPI
  1713. EnumPrinterDataExA(
  1714.     IN HANDLE   hPrinter,
  1715.     IN LPCSTR pKeyName,
  1716.     OUT LPBYTE   pEnumValues,
  1717.     IN DWORD    cbEnumValues,
  1718.     OUT LPDWORD  pcbEnumValues,
  1719.     OUT LPDWORD  pnEnumValues
  1720. );
  1721. DWORD
  1722. WINAPI
  1723. EnumPrinterDataExW(
  1724.     IN HANDLE   hPrinter,
  1725.     IN LPCWSTR pKeyName,
  1726.     OUT LPBYTE   pEnumValues,
  1727.     IN DWORD    cbEnumValues,
  1728.     OUT LPDWORD  pcbEnumValues,
  1729.     OUT LPDWORD  pnEnumValues
  1730. );
  1731. #ifdef UNICODE
  1732. #define EnumPrinterDataEx  EnumPrinterDataExW
  1733. #else
  1734. #define EnumPrinterDataEx  EnumPrinterDataExA
  1735. #endif // !UNICODE
  1736.  
  1737. DWORD
  1738. WINAPI
  1739. EnumPrinterKeyA(
  1740.     IN HANDLE   hPrinter,
  1741.     IN LPCSTR pKeyName,
  1742.     OUT LPSTR  pSubkey,
  1743.     IN DWORD    cbSubkey,
  1744.     OUT LPDWORD  pcbSubkey
  1745. );
  1746. DWORD
  1747. WINAPI
  1748. EnumPrinterKeyW(
  1749.     IN HANDLE   hPrinter,
  1750.     IN LPCWSTR pKeyName,
  1751.     OUT LPWSTR  pSubkey,
  1752.     IN DWORD    cbSubkey,
  1753.     OUT LPDWORD  pcbSubkey
  1754. );
  1755. #ifdef UNICODE
  1756. #define EnumPrinterKey  EnumPrinterKeyW
  1757. #else
  1758. #define EnumPrinterKey  EnumPrinterKeyA
  1759. #endif // !UNICODE
  1760.  
  1761.  
  1762. DWORD
  1763. WINAPI
  1764. SetPrinterDataA(
  1765.     IN HANDLE  hPrinter,
  1766.     IN LPSTR pValueName,
  1767.     IN DWORD   Type,
  1768.     IN LPBYTE  pData,
  1769.     IN DWORD   cbData
  1770. );
  1771. DWORD
  1772. WINAPI
  1773. SetPrinterDataW(
  1774.     IN HANDLE  hPrinter,
  1775.     IN LPWSTR pValueName,
  1776.     IN DWORD   Type,
  1777.     IN LPBYTE  pData,
  1778.     IN DWORD   cbData
  1779. );
  1780. #ifdef UNICODE
  1781. #define SetPrinterData  SetPrinterDataW
  1782. #else
  1783. #define SetPrinterData  SetPrinterDataA
  1784. #endif // !UNICODE
  1785.  
  1786.  
  1787. DWORD
  1788. WINAPI
  1789. SetPrinterDataExA(
  1790.     IN HANDLE   hPrinter,
  1791.     IN LPCSTR pKeyName,
  1792.     IN LPCSTR pValueName,
  1793.     IN DWORD    Type,
  1794.     IN LPBYTE   pData,
  1795.     IN DWORD    cbData
  1796. );
  1797. DWORD
  1798. WINAPI
  1799. SetPrinterDataExW(
  1800.     IN HANDLE   hPrinter,
  1801.     IN LPCWSTR pKeyName,
  1802.     IN LPCWSTR pValueName,
  1803.     IN DWORD    Type,
  1804.     IN LPBYTE   pData,
  1805.     IN DWORD    cbData
  1806. );
  1807. #ifdef UNICODE
  1808. #define SetPrinterDataEx  SetPrinterDataExW
  1809. #else
  1810. #define SetPrinterDataEx  SetPrinterDataExA
  1811. #endif // !UNICODE
  1812.  
  1813.  
  1814.  
  1815. DWORD
  1816. WINAPI
  1817. DeletePrinterDataA(
  1818.     IN HANDLE  hPrinter,
  1819.     IN LPSTR pValueName
  1820. );
  1821. DWORD
  1822. WINAPI
  1823. DeletePrinterDataW(
  1824.     IN HANDLE  hPrinter,
  1825.     IN LPWSTR pValueName
  1826. );
  1827. #ifdef UNICODE
  1828. #define DeletePrinterData  DeletePrinterDataW
  1829. #else
  1830. #define DeletePrinterData  DeletePrinterDataA
  1831. #endif // !UNICODE
  1832.  
  1833.  
  1834. DWORD
  1835. WINAPI
  1836. DeletePrinterDataExA(
  1837.     IN HANDLE   hPrinter,
  1838.     IN LPCSTR pKeyName,
  1839.     IN LPCSTR pValueName
  1840. );
  1841. DWORD
  1842. WINAPI
  1843. DeletePrinterDataExW(
  1844.     IN HANDLE   hPrinter,
  1845.     IN LPCWSTR pKeyName,
  1846.     IN LPCWSTR pValueName
  1847. );
  1848. #ifdef UNICODE
  1849. #define DeletePrinterDataEx  DeletePrinterDataExW
  1850. #else
  1851. #define DeletePrinterDataEx  DeletePrinterDataExA
  1852. #endif // !UNICODE
  1853.  
  1854.  
  1855. DWORD
  1856. WINAPI
  1857. DeletePrinterKeyA(
  1858.     IN HANDLE   hPrinter,
  1859.     IN LPCSTR pKeyName
  1860. );
  1861. DWORD
  1862. WINAPI
  1863. DeletePrinterKeyW(
  1864.     IN HANDLE   hPrinter,
  1865.     IN LPCWSTR pKeyName
  1866. );
  1867. #ifdef UNICODE
  1868. #define DeletePrinterKey  DeletePrinterKeyW
  1869. #else
  1870. #define DeletePrinterKey  DeletePrinterKeyA
  1871. #endif // !UNICODE
  1872.  
  1873.  
  1874. #define PRINTER_NOTIFY_TYPE 0x00
  1875. #define JOB_NOTIFY_TYPE     0x01
  1876.  
  1877. #define PRINTER_NOTIFY_FIELD_SERVER_NAME             0x00
  1878. #define PRINTER_NOTIFY_FIELD_PRINTER_NAME            0x01
  1879. #define PRINTER_NOTIFY_FIELD_SHARE_NAME              0x02
  1880. #define PRINTER_NOTIFY_FIELD_PORT_NAME               0x03
  1881. #define PRINTER_NOTIFY_FIELD_DRIVER_NAME             0x04
  1882. #define PRINTER_NOTIFY_FIELD_COMMENT                 0x05
  1883. #define PRINTER_NOTIFY_FIELD_LOCATION                0x06
  1884. #define PRINTER_NOTIFY_FIELD_DEVMODE                 0x07
  1885. #define PRINTER_NOTIFY_FIELD_SEPFILE                 0x08
  1886. #define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR         0x09
  1887. #define PRINTER_NOTIFY_FIELD_PARAMETERS              0x0A
  1888. #define PRINTER_NOTIFY_FIELD_DATATYPE                0x0B
  1889. #define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR     0x0C
  1890. #define PRINTER_NOTIFY_FIELD_ATTRIBUTES              0x0D
  1891. #define PRINTER_NOTIFY_FIELD_PRIORITY                0x0E
  1892. #define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY        0x0F
  1893. #define PRINTER_NOTIFY_FIELD_START_TIME              0x10
  1894. #define PRINTER_NOTIFY_FIELD_UNTIL_TIME              0x11
  1895. #define PRINTER_NOTIFY_FIELD_STATUS                  0x12
  1896. #define PRINTER_NOTIFY_FIELD_STATUS_STRING           0x13
  1897. #define PRINTER_NOTIFY_FIELD_CJOBS                   0x14
  1898. #define PRINTER_NOTIFY_FIELD_AVERAGE_PPM             0x15
  1899. #define PRINTER_NOTIFY_FIELD_TOTAL_PAGES             0x16
  1900. #define PRINTER_NOTIFY_FIELD_PAGES_PRINTED           0x17
  1901. #define PRINTER_NOTIFY_FIELD_TOTAL_BYTES             0x18
  1902. #define PRINTER_NOTIFY_FIELD_BYTES_PRINTED           0x19
  1903. #define PRINTER_NOTIFY_FIELD_OBJECT_GUID             0x1A
  1904.  
  1905. #define JOB_NOTIFY_FIELD_PRINTER_NAME                0x00
  1906. #define JOB_NOTIFY_FIELD_MACHINE_NAME                0x01
  1907. #define JOB_NOTIFY_FIELD_PORT_NAME                   0x02
  1908. #define JOB_NOTIFY_FIELD_USER_NAME                   0x03
  1909. #define JOB_NOTIFY_FIELD_NOTIFY_NAME                 0x04
  1910. #define JOB_NOTIFY_FIELD_DATATYPE                    0x05
  1911. #define JOB_NOTIFY_FIELD_PRINT_PROCESSOR             0x06
  1912. #define JOB_NOTIFY_FIELD_PARAMETERS                  0x07
  1913. #define JOB_NOTIFY_FIELD_DRIVER_NAME                 0x08
  1914. #define JOB_NOTIFY_FIELD_DEVMODE                     0x09
  1915. #define JOB_NOTIFY_FIELD_STATUS                      0x0A
  1916. #define JOB_NOTIFY_FIELD_STATUS_STRING               0x0B
  1917. #define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR         0x0C
  1918. #define JOB_NOTIFY_FIELD_DOCUMENT                    0x0D
  1919. #define JOB_NOTIFY_FIELD_PRIORITY                    0x0E
  1920. #define JOB_NOTIFY_FIELD_POSITION                    0x0F
  1921. #define JOB_NOTIFY_FIELD_SUBMITTED                   0x10
  1922. #define JOB_NOTIFY_FIELD_START_TIME                  0x11
  1923. #define JOB_NOTIFY_FIELD_UNTIL_TIME                  0x12
  1924. #define JOB_NOTIFY_FIELD_TIME                        0x13
  1925. #define JOB_NOTIFY_FIELD_TOTAL_PAGES                 0x14
  1926. #define JOB_NOTIFY_FIELD_PAGES_PRINTED               0x15
  1927. #define JOB_NOTIFY_FIELD_TOTAL_BYTES                 0x16
  1928. #define JOB_NOTIFY_FIELD_BYTES_PRINTED               0x17
  1929.  
  1930.  
  1931. typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE {
  1932.     WORD Type;
  1933.     WORD Reserved0;
  1934.     DWORD Reserved1;
  1935.     DWORD Reserved2;
  1936.     DWORD Count;
  1937.     PWORD pFields;
  1938. } PRINTER_NOTIFY_OPTIONS_TYPE, *PPRINTER_NOTIFY_OPTIONS_TYPE, *LPPRINTER_NOTIFY_OPTIONS_TYPE;
  1939.  
  1940.  
  1941. #define PRINTER_NOTIFY_OPTIONS_REFRESH  0x01
  1942.  
  1943. typedef struct _PRINTER_NOTIFY_OPTIONS {
  1944.     DWORD Version;
  1945.     DWORD Flags;
  1946.     DWORD Count;
  1947.     PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
  1948. } PRINTER_NOTIFY_OPTIONS, *PPRINTER_NOTIFY_OPTIONS, *LPPRINTER_NOTIFY_OPTIONS;
  1949.  
  1950.  
  1951.  
  1952. #define PRINTER_NOTIFY_INFO_DISCARDED       0x01
  1953.  
  1954. typedef struct _PRINTER_NOTIFY_INFO_DATA {
  1955.     WORD Type;
  1956.     WORD Field;
  1957.     DWORD Reserved;
  1958.     DWORD Id;
  1959.     union {
  1960.         DWORD adwData[2];
  1961.         struct {
  1962.             DWORD  cbBuf;
  1963.             LPVOID pBuf;
  1964.         } Data;
  1965.     } NotifyData;
  1966. } PRINTER_NOTIFY_INFO_DATA, *PPRINTER_NOTIFY_INFO_DATA, *LPPRINTER_NOTIFY_INFO_DATA;
  1967.  
  1968. typedef struct _PRINTER_NOTIFY_INFO {
  1969.     DWORD Version;
  1970.     DWORD Flags;
  1971.     DWORD Count;
  1972.     PRINTER_NOTIFY_INFO_DATA aData[1];
  1973. } PRINTER_NOTIFY_INFO, *PPRINTER_NOTIFY_INFO, *LPPRINTER_NOTIFY_INFO;
  1974.  
  1975. DWORD
  1976. WINAPI
  1977. WaitForPrinterChange(
  1978.     IN HANDLE  hPrinter,
  1979.     IN DWORD   Flags
  1980. );
  1981.  
  1982. HANDLE
  1983. WINAPI
  1984. FindFirstPrinterChangeNotification(
  1985.     IN HANDLE  hPrinter,
  1986.     IN DWORD   fdwFlags,
  1987.     IN DWORD   fdwOptions,
  1988.     IN LPVOID  pPrinterNotifyOptions
  1989. );
  1990.  
  1991.  
  1992. BOOL
  1993. WINAPI
  1994. FindNextPrinterChangeNotification(
  1995.     IN HANDLE hChange,
  1996.     OUT PDWORD pdwChange,
  1997.     IN LPVOID pvReserved,
  1998.     OUT LPVOID *ppPrinterNotifyInfo
  1999. );
  2000.  
  2001. BOOL
  2002. WINAPI
  2003. FreePrinterNotifyInfo(
  2004.     IN PPRINTER_NOTIFY_INFO pPrinterNotifyInfo
  2005. );
  2006.  
  2007. BOOL
  2008. WINAPI
  2009. FindClosePrinterChangeNotification(
  2010.     IN HANDLE hChange
  2011. );
  2012.  
  2013. #define PRINTER_CHANGE_ADD_PRINTER              0x00000001
  2014. #define PRINTER_CHANGE_SET_PRINTER              0x00000002
  2015. #define PRINTER_CHANGE_DELETE_PRINTER           0x00000004
  2016. #define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER    0x00000008
  2017. #define PRINTER_CHANGE_PRINTER                  0x000000FF
  2018. #define PRINTER_CHANGE_ADD_JOB                  0x00000100
  2019. #define PRINTER_CHANGE_SET_JOB                  0x00000200
  2020. #define PRINTER_CHANGE_DELETE_JOB               0x00000400
  2021. #define PRINTER_CHANGE_WRITE_JOB                0x00000800
  2022. #define PRINTER_CHANGE_JOB                      0x0000FF00
  2023. #define PRINTER_CHANGE_ADD_FORM                 0x00010000
  2024. #define PRINTER_CHANGE_SET_FORM                 0x00020000
  2025. #define PRINTER_CHANGE_DELETE_FORM              0x00040000
  2026. #define PRINTER_CHANGE_FORM                     0x00070000
  2027. #define PRINTER_CHANGE_ADD_PORT                 0x00100000
  2028. #define PRINTER_CHANGE_CONFIGURE_PORT           0x00200000
  2029. #define PRINTER_CHANGE_DELETE_PORT              0x00400000
  2030. #define PRINTER_CHANGE_PORT                     0x00700000
  2031. #define PRINTER_CHANGE_ADD_PRINT_PROCESSOR      0x01000000
  2032. #define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR   0x04000000
  2033. #define PRINTER_CHANGE_PRINT_PROCESSOR          0x07000000
  2034. #define PRINTER_CHANGE_ADD_PRINTER_DRIVER       0x10000000
  2035. #define PRINTER_CHANGE_SET_PRINTER_DRIVER       0x20000000
  2036. #define PRINTER_CHANGE_DELETE_PRINTER_DRIVER    0x40000000
  2037. #define PRINTER_CHANGE_PRINTER_DRIVER           0x70000000
  2038. #define PRINTER_CHANGE_TIMEOUT                  0x80000000
  2039. #define PRINTER_CHANGE_ALL                      0x7777FFFF
  2040.  
  2041. DWORD
  2042. WINAPI
  2043. PrinterMessageBoxA(
  2044.     IN HANDLE  hPrinter,
  2045.     IN DWORD   Error,
  2046.     IN HWND    hWnd,
  2047.     IN LPSTR   pText,
  2048.     IN LPSTR   pCaption,
  2049.     IN DWORD   dwType
  2050. );
  2051. DWORD
  2052. WINAPI
  2053. PrinterMessageBoxW(
  2054.     IN HANDLE  hPrinter,
  2055.     IN DWORD   Error,
  2056.     IN HWND    hWnd,
  2057.     IN LPWSTR   pText,
  2058.     IN LPWSTR   pCaption,
  2059.     IN DWORD   dwType
  2060. );
  2061. #ifdef UNICODE
  2062. #define PrinterMessageBox  PrinterMessageBoxW
  2063. #else
  2064. #define PrinterMessageBox  PrinterMessageBoxA
  2065. #endif // !UNICODE
  2066.  
  2067.  
  2068.  
  2069. #define PRINTER_ERROR_INFORMATION   0x80000000
  2070. #define PRINTER_ERROR_WARNING       0x40000000
  2071. #define PRINTER_ERROR_SEVERE        0x20000000
  2072.  
  2073. #define PRINTER_ERROR_OUTOFPAPER    0x00000001
  2074. #define PRINTER_ERROR_JAM           0x00000002
  2075. #define PRINTER_ERROR_OUTOFTONER    0x00000004
  2076.  
  2077. BOOL
  2078. WINAPI
  2079. ClosePrinter(
  2080.     IN HANDLE hPrinter
  2081. );
  2082.  
  2083. BOOL
  2084. WINAPI
  2085. AddFormA(
  2086.     IN HANDLE  hPrinter,
  2087.     IN DWORD   Level,
  2088.     IN LPBYTE  pForm
  2089. );
  2090. BOOL
  2091. WINAPI
  2092. AddFormW(
  2093.     IN HANDLE  hPrinter,
  2094.     IN DWORD   Level,
  2095.     IN LPBYTE  pForm
  2096. );
  2097. #ifdef UNICODE
  2098. #define AddForm  AddFormW
  2099. #else
  2100. #define AddForm  AddFormA
  2101. #endif // !UNICODE
  2102.  
  2103.  
  2104.  
  2105. BOOL
  2106. WINAPI
  2107. DeleteFormA(
  2108.     IN HANDLE  hPrinter,
  2109.     IN LPSTR   pFormName
  2110. );
  2111. BOOL
  2112. WINAPI
  2113. DeleteFormW(
  2114.     IN HANDLE  hPrinter,
  2115.     IN LPWSTR   pFormName
  2116. );
  2117. #ifdef UNICODE
  2118. #define DeleteForm  DeleteFormW
  2119. #else
  2120. #define DeleteForm  DeleteFormA
  2121. #endif // !UNICODE
  2122.  
  2123.  
  2124.  
  2125. BOOL
  2126. WINAPI
  2127. GetFormA(
  2128.     IN HANDLE  hPrinter,
  2129.     IN LPSTR   pFormName,
  2130.     IN DWORD   Level,
  2131.     OUT LPBYTE  pForm,
  2132.     IN DWORD   cbBuf,
  2133.     OUT LPDWORD pcbNeeded
  2134. );
  2135. BOOL
  2136. WINAPI
  2137. GetFormW(
  2138.     IN HANDLE  hPrinter,
  2139.     IN LPWSTR   pFormName,
  2140.     IN DWORD   Level,
  2141.     OUT LPBYTE  pForm,
  2142.     IN DWORD   cbBuf,
  2143.     OUT LPDWORD pcbNeeded
  2144. );
  2145. #ifdef UNICODE
  2146. #define GetForm  GetFormW
  2147. #else
  2148. #define GetForm  GetFormA
  2149. #endif // !UNICODE
  2150.  
  2151.  
  2152.  
  2153. BOOL
  2154. WINAPI
  2155. SetFormA(
  2156.     IN HANDLE  hPrinter,
  2157.     IN LPSTR   pFormName,
  2158.     IN DWORD   Level,
  2159.     IN LPBYTE  pForm
  2160. );
  2161. BOOL
  2162. WINAPI
  2163. SetFormW(
  2164.     IN HANDLE  hPrinter,
  2165.     IN LPWSTR   pFormName,
  2166.     IN DWORD   Level,
  2167.     IN LPBYTE  pForm
  2168. );
  2169. #ifdef UNICODE
  2170. #define SetForm  SetFormW
  2171. #else
  2172. #define SetForm  SetFormA
  2173. #endif // !UNICODE
  2174.  
  2175.  
  2176.  
  2177. BOOL
  2178. WINAPI
  2179. EnumFormsA(
  2180.     IN HANDLE  hPrinter,
  2181.     IN DWORD   Level,
  2182.     OUT LPBYTE  pForm,
  2183.     IN DWORD   cbBuf,
  2184.     OUT LPDWORD pcbNeeded,
  2185.     OUT LPDWORD pcReturned
  2186. );
  2187. BOOL
  2188. WINAPI
  2189. EnumFormsW(
  2190.     IN HANDLE  hPrinter,
  2191.     IN DWORD   Level,
  2192.     OUT LPBYTE  pForm,
  2193.     IN DWORD   cbBuf,
  2194.     OUT LPDWORD pcbNeeded,
  2195.     OUT LPDWORD pcReturned
  2196. );
  2197. #ifdef UNICODE
  2198. #define EnumForms  EnumFormsW
  2199. #else
  2200. #define EnumForms  EnumFormsA
  2201. #endif // !UNICODE
  2202.  
  2203.  
  2204.  
  2205. BOOL
  2206. WINAPI
  2207. EnumMonitorsA(
  2208.     IN LPSTR   pName,
  2209.     IN DWORD   Level,
  2210.     OUT LPBYTE  pMonitors,
  2211.     IN DWORD   cbBuf,
  2212.     OUT LPDWORD pcbNeeded,
  2213.     OUT LPDWORD pcReturned
  2214. );
  2215. BOOL
  2216. WINAPI
  2217. EnumMonitorsW(
  2218.     IN LPWSTR   pName,
  2219.     IN DWORD   Level,
  2220.     OUT LPBYTE  pMonitors,
  2221.     IN DWORD   cbBuf,
  2222.     OUT LPDWORD pcbNeeded,
  2223.     OUT LPDWORD pcReturned
  2224. );
  2225. #ifdef UNICODE
  2226. #define EnumMonitors  EnumMonitorsW
  2227. #else
  2228. #define EnumMonitors  EnumMonitorsA
  2229. #endif // !UNICODE
  2230.  
  2231.  
  2232.  
  2233. BOOL
  2234. WINAPI
  2235. AddMonitorA(
  2236.     IN LPSTR   pName,
  2237.     IN DWORD   Level,
  2238.     IN LPBYTE  pMonitors
  2239. );
  2240. BOOL
  2241. WINAPI
  2242. AddMonitorW(
  2243.     IN LPWSTR   pName,
  2244.     IN DWORD   Level,
  2245.     IN LPBYTE  pMonitors
  2246. );
  2247. #ifdef UNICODE
  2248. #define AddMonitor  AddMonitorW
  2249. #else
  2250. #define AddMonitor  AddMonitorA
  2251. #endif // !UNICODE
  2252.  
  2253.  
  2254.  
  2255. BOOL
  2256. WINAPI
  2257. DeleteMonitorA(
  2258.     IN LPSTR   pName,
  2259.     IN LPSTR   pEnvironment,
  2260.     IN LPSTR   pMonitorName
  2261. );
  2262. BOOL
  2263. WINAPI
  2264. DeleteMonitorW(
  2265.     IN LPWSTR   pName,
  2266.     IN LPWSTR   pEnvironment,
  2267.     IN LPWSTR   pMonitorName
  2268. );
  2269. #ifdef UNICODE
  2270. #define DeleteMonitor  DeleteMonitorW
  2271. #else
  2272. #define DeleteMonitor  DeleteMonitorA
  2273. #endif // !UNICODE
  2274.  
  2275.  
  2276.  
  2277. BOOL
  2278. WINAPI
  2279. EnumPortsA(
  2280.     IN LPSTR   pName,
  2281.     IN DWORD   Level,
  2282.     OUT LPBYTE  pPorts,
  2283.     IN DWORD   cbBuf,
  2284.     OUT LPDWORD pcbNeeded,
  2285.     OUT LPDWORD pcReturned
  2286. );
  2287. BOOL
  2288. WINAPI
  2289. EnumPortsW(
  2290.     IN LPWSTR   pName,
  2291.     IN DWORD   Level,
  2292.     OUT LPBYTE  pPorts,
  2293.     IN DWORD   cbBuf,
  2294.     OUT LPDWORD pcbNeeded,
  2295.     OUT LPDWORD pcReturned
  2296. );
  2297. #ifdef UNICODE
  2298. #define EnumPorts  EnumPortsW
  2299. #else
  2300. #define EnumPorts  EnumPortsA
  2301. #endif // !UNICODE
  2302.  
  2303.  
  2304.  
  2305. BOOL
  2306. WINAPI
  2307. AddPortA(
  2308.     IN LPSTR   pName,
  2309.     IN HWND    hWnd,
  2310.     IN LPSTR   pMonitorName
  2311. );
  2312. BOOL
  2313. WINAPI
  2314. AddPortW(
  2315.     IN LPWSTR   pName,
  2316.     IN HWND    hWnd,
  2317.     IN LPWSTR   pMonitorName
  2318. );
  2319. #ifdef UNICODE
  2320. #define AddPort  AddPortW
  2321. #else
  2322. #define AddPort  AddPortA
  2323. #endif // !UNICODE
  2324.  
  2325.  
  2326.  
  2327. BOOL
  2328. WINAPI
  2329. ConfigurePortA(
  2330.     IN LPSTR   pName,
  2331.     IN HWND    hWnd,
  2332.     IN LPSTR   pPortName
  2333. );
  2334. BOOL
  2335. WINAPI
  2336. ConfigurePortW(
  2337.     IN LPWSTR   pName,
  2338.     IN HWND    hWnd,
  2339.     IN LPWSTR   pPortName
  2340. );
  2341. #ifdef UNICODE
  2342. #define ConfigurePort  ConfigurePortW
  2343. #else
  2344. #define ConfigurePort  ConfigurePortA
  2345. #endif // !UNICODE
  2346.  
  2347. BOOL
  2348. WINAPI
  2349. DeletePortA(
  2350.     IN LPSTR pName,
  2351.     IN HWND    hWnd,
  2352.     IN LPSTR pPortName
  2353. );
  2354. BOOL
  2355. WINAPI
  2356. DeletePortW(
  2357.     IN LPWSTR pName,
  2358.     IN HWND    hWnd,
  2359.     IN LPWSTR pPortName
  2360. );
  2361. #ifdef UNICODE
  2362. #define DeletePort  DeletePortW
  2363. #else
  2364. #define DeletePort  DeletePortA
  2365. #endif // !UNICODE
  2366.  
  2367. BOOL
  2368. WINAPI
  2369. XcvDataW(
  2370.     IN HANDLE  hXcv,
  2371.     IN PCWSTR  pszDataName,
  2372.     IN PBYTE   pInputData,
  2373.     IN DWORD   cbInputData,
  2374.     OUT PBYTE   pOutputData,
  2375.     IN DWORD   cbOutputData,
  2376.     OUT PDWORD  pcbOutputNeeded,
  2377.     OUT PDWORD  pdwStatus
  2378. );
  2379. #define XcvData  XcvDataW
  2380.  
  2381. BOOL
  2382. WINAPI
  2383. GetDefaultPrinterA(
  2384.     IN LPSTR   pszBuffer,
  2385.     IN LPDWORD  pcchBuffer
  2386.     );
  2387. BOOL
  2388. WINAPI
  2389. GetDefaultPrinterW(
  2390.     IN LPWSTR   pszBuffer,
  2391.     IN LPDWORD  pcchBuffer
  2392.     );
  2393. #ifdef UNICODE
  2394. #define GetDefaultPrinter  GetDefaultPrinterW
  2395. #else
  2396. #define GetDefaultPrinter  GetDefaultPrinterA
  2397. #endif // !UNICODE
  2398.  
  2399. BOOL
  2400. WINAPI
  2401. SetDefaultPrinterA(
  2402.     IN LPCSTR pszPrinter
  2403.     );
  2404. BOOL
  2405. WINAPI
  2406. SetDefaultPrinterW(
  2407.     IN LPCWSTR pszPrinter
  2408.     );
  2409. #ifdef UNICODE
  2410. #define SetDefaultPrinter  SetDefaultPrinterW
  2411. #else
  2412. #define SetDefaultPrinter  SetDefaultPrinterA
  2413. #endif // !UNICODE
  2414.  
  2415.  
  2416. BOOL
  2417. WINAPI
  2418. SetPortA(
  2419.     IN LPSTR     pName,
  2420.     IN LPSTR     pPortName,
  2421.     IN DWORD       dwLevel,
  2422.     IN LPBYTE      pPortInfo
  2423. );
  2424. BOOL
  2425. WINAPI
  2426. SetPortW(
  2427.     IN LPWSTR     pName,
  2428.     IN LPWSTR     pPortName,
  2429.     IN DWORD       dwLevel,
  2430.     IN LPBYTE      pPortInfo
  2431. );
  2432. #ifdef UNICODE
  2433. #define SetPort  SetPortW
  2434. #else
  2435. #define SetPort  SetPortA
  2436. #endif // !UNICODE
  2437.  
  2438.  
  2439.  
  2440. BOOL
  2441. WINAPI
  2442. AddPrinterConnectionA(
  2443.     IN LPSTR   pName
  2444. );
  2445. BOOL
  2446. WINAPI
  2447. AddPrinterConnectionW(
  2448.     IN LPWSTR   pName
  2449. );
  2450. #ifdef UNICODE
  2451. #define AddPrinterConnection  AddPrinterConnectionW
  2452. #else
  2453. #define AddPrinterConnection  AddPrinterConnectionA
  2454. #endif // !UNICODE
  2455.  
  2456.  
  2457.  
  2458. BOOL
  2459. WINAPI
  2460. DeletePrinterConnectionA(
  2461.     IN LPSTR   pName
  2462. );
  2463. BOOL
  2464. WINAPI
  2465. DeletePrinterConnectionW(
  2466.     IN LPWSTR   pName
  2467. );
  2468. #ifdef UNICODE
  2469. #define DeletePrinterConnection  DeletePrinterConnectionW
  2470. #else
  2471. #define DeletePrinterConnection  DeletePrinterConnectionA
  2472. #endif // !UNICODE
  2473.  
  2474.  
  2475.  
  2476. HANDLE
  2477. WINAPI
  2478. ConnectToPrinterDlg(
  2479.     IN HWND    hwnd,
  2480.     IN DWORD   Flags
  2481. );
  2482.  
  2483. typedef struct _PROVIDOR_INFO_1A{
  2484.     LPSTR     pName;
  2485.     LPSTR     pEnvironment;
  2486.     LPSTR     pDLLName;
  2487. } PROVIDOR_INFO_1A, *PPROVIDOR_INFO_1A, *LPPROVIDOR_INFO_1A;
  2488. typedef struct _PROVIDOR_INFO_1W{
  2489.     LPWSTR    pName;
  2490.     LPWSTR    pEnvironment;
  2491.     LPWSTR    pDLLName;
  2492. } PROVIDOR_INFO_1W, *PPROVIDOR_INFO_1W, *LPPROVIDOR_INFO_1W;
  2493. #ifdef UNICODE
  2494. typedef PROVIDOR_INFO_1W PROVIDOR_INFO_1;
  2495. typedef PPROVIDOR_INFO_1W PPROVIDOR_INFO_1;
  2496. typedef LPPROVIDOR_INFO_1W LPPROVIDOR_INFO_1;
  2497. #else
  2498. typedef PROVIDOR_INFO_1A PROVIDOR_INFO_1;
  2499. typedef PPROVIDOR_INFO_1A PPROVIDOR_INFO_1;
  2500. typedef LPPROVIDOR_INFO_1A LPPROVIDOR_INFO_1;
  2501. #endif // UNICODE
  2502.  
  2503. typedef struct _PROVIDOR_INFO_2A{
  2504.     LPSTR     pOrder;
  2505. } PROVIDOR_INFO_2A, *PPROVIDOR_INFO_2A, *LPPROVIDOR_INFO_2A;
  2506. typedef struct _PROVIDOR_INFO_2W{
  2507.     LPWSTR    pOrder;
  2508. } PROVIDOR_INFO_2W, *PPROVIDOR_INFO_2W, *LPPROVIDOR_INFO_2W;
  2509. #ifdef UNICODE
  2510. typedef PROVIDOR_INFO_2W PROVIDOR_INFO_2;
  2511. typedef PPROVIDOR_INFO_2W PPROVIDOR_INFO_2;
  2512. typedef LPPROVIDOR_INFO_2W LPPROVIDOR_INFO_2;
  2513. #else
  2514. typedef PROVIDOR_INFO_2A PROVIDOR_INFO_2;
  2515. typedef PPROVIDOR_INFO_2A PPROVIDOR_INFO_2;
  2516. typedef LPPROVIDOR_INFO_2A LPPROVIDOR_INFO_2;
  2517. #endif // UNICODE
  2518.  
  2519. BOOL
  2520. WINAPI
  2521. AddPrintProvidorA(
  2522.     IN LPSTR  pName,
  2523.     IN DWORD    level,
  2524.     IN LPBYTE   pProvidorInfo
  2525. );
  2526. BOOL
  2527. WINAPI
  2528. AddPrintProvidorW(
  2529.     IN LPWSTR  pName,
  2530.     IN DWORD    level,
  2531.     IN LPBYTE   pProvidorInfo
  2532. );
  2533. #ifdef UNICODE
  2534. #define AddPrintProvidor  AddPrintProvidorW
  2535. #else
  2536. #define AddPrintProvidor  AddPrintProvidorA
  2537. #endif // !UNICODE
  2538.  
  2539. BOOL
  2540. WINAPI
  2541. DeletePrintProvidorA(
  2542.     IN LPSTR   pName,
  2543.     IN LPSTR   pEnvironment,
  2544.     IN LPSTR   pPrintProvidorName
  2545. );
  2546. BOOL
  2547. WINAPI
  2548. DeletePrintProvidorW(
  2549.     IN LPWSTR   pName,
  2550.     IN LPWSTR   pEnvironment,
  2551.     IN LPWSTR   pPrintProvidorName
  2552. );
  2553. #ifdef UNICODE
  2554. #define DeletePrintProvidor  DeletePrintProvidorW
  2555. #else
  2556. #define DeletePrintProvidor  DeletePrintProvidorA
  2557. #endif // !UNICODE
  2558.  
  2559.  
  2560.  
  2561. /*
  2562.  * SetPrinterData and GetPrinterData Server Handle Key values
  2563.  */
  2564.  
  2565. #define    SPLREG_DEFAULT_SPOOL_DIRECTORY             TEXT("DefaultSpoolDirectory")
  2566. #define    SPLREG_PORT_THREAD_PRIORITY_DEFAULT        TEXT("PortThreadPriorityDefault")
  2567. #define    SPLREG_PORT_THREAD_PRIORITY                TEXT("PortThreadPriority")
  2568. #define    SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT   TEXT("SchedulerThreadPriorityDefault")
  2569. #define    SPLREG_SCHEDULER_THREAD_PRIORITY           TEXT("SchedulerThreadPriority")
  2570. #define    SPLREG_BEEP_ENABLED                        TEXT("BeepEnabled")
  2571. #define    SPLREG_NET_POPUP                           TEXT("NetPopup")
  2572. #define    SPLREG_RETRY_POPUP                         TEXT("RetryPopup")
  2573. #define    SPLREG_NET_POPUP_TO_COMPUTER               TEXT("NetPopupToComputer")
  2574. #define    SPLREG_EVENT_LOG                           TEXT("EventLog")
  2575. #define    SPLREG_MAJOR_VERSION                       TEXT("MajorVersion")
  2576. #define    SPLREG_MINOR_VERSION                       TEXT("MinorVersion")
  2577. #define    SPLREG_ARCHITECTURE                        TEXT("Architecture")
  2578. #define    SPLREG_OS_VERSION                          TEXT("OSVersion")
  2579. #define    SPLREG_DS_PRESENT                          TEXT("DsPresent")
  2580. #define    SPLREG_DS_PRESENT_FOR_USER                 TEXT("DsPresentForUser")
  2581. #define    SPLREG_REMOTE_FAX                          TEXT("RemoteFax")
  2582. #define    SPLREG_RESTART_JOB_ON_POOL_ERROR           TEXT("RestartJobOnPoolError")
  2583. #define    SPLREG_RESTART_JOB_ON_POOL_ENABLED         TEXT("RestartJobOnPoolEnabled")
  2584. #define    SPLREG_DNS_MACHINE_NAME                    TEXT("DNSMachineName")
  2585.  
  2586.  
  2587. #define SERVER_ACCESS_ADMINISTER    0x00000001
  2588. #define SERVER_ACCESS_ENUMERATE     0x00000002
  2589.  
  2590. #define PRINTER_ACCESS_ADMINISTER   0x00000004
  2591. #define PRINTER_ACCESS_USE          0x00000008
  2592.  
  2593. #define JOB_ACCESS_ADMINISTER       0x00000010
  2594.  
  2595.  
  2596. /*
  2597.  * Access rights for print servers
  2598.  */
  2599.  
  2600. #define SERVER_ALL_ACCESS    (STANDARD_RIGHTS_REQUIRED      |\
  2601.                               SERVER_ACCESS_ADMINISTER      |\
  2602.                               SERVER_ACCESS_ENUMERATE)
  2603.  
  2604. #define SERVER_READ          (STANDARD_RIGHTS_READ          |\
  2605.                               SERVER_ACCESS_ENUMERATE)
  2606.  
  2607. #define SERVER_WRITE         (STANDARD_RIGHTS_WRITE         |\
  2608.                               SERVER_ACCESS_ADMINISTER      |\
  2609.                               SERVER_ACCESS_ENUMERATE)
  2610.  
  2611. #define SERVER_EXECUTE       (STANDARD_RIGHTS_EXECUTE       |\
  2612.                               SERVER_ACCESS_ENUMERATE)
  2613.  
  2614. /*
  2615.  * Access rights for printers
  2616.  */
  2617.  
  2618. #define PRINTER_ALL_ACCESS    (STANDARD_RIGHTS_REQUIRED     |\
  2619.                                PRINTER_ACCESS_ADMINISTER    |\
  2620.                                PRINTER_ACCESS_USE)
  2621.  
  2622. #define PRINTER_READ          (STANDARD_RIGHTS_READ         |\
  2623.                                PRINTER_ACCESS_USE)
  2624.  
  2625. #define PRINTER_WRITE         (STANDARD_RIGHTS_WRITE        |\
  2626.                                PRINTER_ACCESS_USE)
  2627.  
  2628. #define PRINTER_EXECUTE       (STANDARD_RIGHTS_EXECUTE      |\
  2629.                                PRINTER_ACCESS_USE)
  2630.  
  2631. /*
  2632.  * Access rights for jobs
  2633.  */
  2634.  
  2635. #define JOB_ALL_ACCESS         (STANDARD_RIGHTS_REQUIRED    |\
  2636.                                 JOB_ACCESS_ADMINISTER)
  2637.  
  2638. #define JOB_READ               (STANDARD_RIGHTS_READ        |\
  2639.                                 JOB_ACCESS_ADMINISTER)
  2640.  
  2641. #define JOB_WRITE              (STANDARD_RIGHTS_WRITE       |\
  2642.                                 JOB_ACCESS_ADMINISTER)
  2643.  
  2644. #define JOB_EXECUTE            (STANDARD_RIGHTS_EXECUTE     |\
  2645.                                 JOB_ACCESS_ADMINISTER)
  2646.  
  2647.  
  2648.  
  2649. /*
  2650.  * DS Print-Queue property tables
  2651.  */
  2652.  
  2653.  
  2654. // Predefined Registry Keys used by Set/GetPrinterDataEx
  2655. #define SPLDS_SPOOLER_KEY                       TEXT("DsSpooler")
  2656. #define SPLDS_DRIVER_KEY                        TEXT("DsDriver")
  2657. #define SPLDS_USER_KEY                          TEXT("DsUser")
  2658.  
  2659.  
  2660. // DS Print-Queue properties
  2661.  
  2662. #define SPLDS_ASSET_NUMBER                      TEXT("assetNumber")
  2663. #define SPLDS_BYTES_PER_MINUTE                  TEXT("bytesPerMinute")
  2664. #define SPLDS_DESCRIPTION                       TEXT("description")
  2665. #define SPLDS_DRIVER_NAME                       TEXT("driverName")
  2666. #define SPLDS_DRIVER_VERSION                    TEXT("driverVersion")
  2667. #define SPLDS_LOCATION                          TEXT("location")
  2668. #define SPLDS_PORT_NAME                         TEXT("portName")
  2669. #define SPLDS_PRINT_ATTRIBUTES                  TEXT("printAttributes")
  2670. #define SPLDS_PRINT_BIN_NAMES                   TEXT("printBinNames")
  2671. #define SPLDS_PRINT_COLLATE                     TEXT("printCollate")
  2672. #define SPLDS_PRINT_COLOR                       TEXT("printColor")
  2673. #define SPLDS_PRINT_DUPLEX_SUPPORTED            TEXT("printDuplexSupported")
  2674. #define SPLDS_PRINT_END_TIME                    TEXT("printEndTime")
  2675. #define SPLDS_PRINTER_CLASS                     TEXT("printQueue")
  2676. #define SPLDS_PRINTER_NAME                      TEXT("printerName")
  2677. #define SPLDS_PRINT_KEEP_PRINTED_JOBS           TEXT("printKeepPrintedJobs")
  2678. #define SPLDS_PRINT_LANGUAGE                    TEXT("printLanguage")
  2679. #define SPLDS_PRINT_MAC_ADDRESS                 TEXT("printMACAddress")
  2680. #define SPLDS_PRINT_MAX_X_EXTENT                TEXT("printMaxXExtent")
  2681. #define SPLDS_PRINT_MAX_Y_EXTENT                TEXT("printMaxYExtent")
  2682. #define SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED    TEXT("printMaxResolutionSupported")
  2683. #define SPLDS_PRINT_MEDIA_READY                 TEXT("printMediaReady")
  2684. #define SPLDS_PRINT_MEDIA_SUPPORTED             TEXT("printMediaSupported")
  2685. #define SPLDS_PRINT_MEMORY                      TEXT("printMemory")
  2686. #define SPLDS_PRINT_MIN_X_EXTENT                TEXT("printMinXExtent")
  2687. #define SPLDS_PRINT_MIN_Y_EXTENT                TEXT("printMinYExtent")
  2688. #define SPLDS_PRINT_NETWORK_ADDRESS             TEXT("printNetworkAddress")
  2689. #define SPLDS_PRINT_NOTIFY                      TEXT("printNotify")
  2690. #define SPLDS_PRINT_NUMBER_UP                   TEXT("printNumberUp")
  2691. #define SPLDS_PRINT_ORIENTATIONS_SUPPORTED      TEXT("printOrientationsSupported")
  2692. #define SPLDS_PRINT_OWNER                       TEXT("printOwner")
  2693. #define SPLDS_PRINT_PAGES_PER_MINUTE            TEXT("printPagesPerMinute")
  2694. #define SPLDS_PRINT_RATE                        TEXT("printRate")
  2695. #define SPLDS_PRINT_RATE_UNIT                   TEXT("printRateUnit")
  2696. #define SPLDS_PRINT_SEPARATOR_FILE              TEXT("printSeparatorFile")
  2697. #define SPLDS_PRINT_SHARE_NAME                  TEXT("printShareName")
  2698. #define SPLDS_PRINT_SPOOLING                    TEXT("printSpooling")
  2699. #define SPLDS_PRINT_STAPLING_SUPPORTED          TEXT("printStaplingSupported")
  2700. #define SPLDS_PRINT_START_TIME                  TEXT("printStartTime")
  2701. #define SPLDS_PRINT_STATUS                      TEXT("printStatus")
  2702. #define SPLDS_PRIORITY                          TEXT("priority")
  2703. #define SPLDS_SERVER_NAME                       TEXT("serverName")
  2704. #define SPLDS_SHORT_SERVER_NAME                 TEXT("shortServerName")
  2705. #define SPLDS_UNC_NAME                          TEXT("uNCName")
  2706. #define SPLDS_URL                               TEXT("url")
  2707. #define SPLDS_FLAGS                             TEXT("flags")
  2708. #define SPLDS_VERSION_NUMBER                    TEXT("versionNumber")
  2709.  
  2710. /*
  2711.     -- Additional Print-Queue properties --
  2712.  
  2713.     These properties are not defined in the default Directory Services Schema,
  2714.     but should be used when extending the Schema so a consistent interface is maintained.
  2715.  
  2716. */
  2717.  
  2718. #define SPLDS_PRINTER_NAME_ALIASES              TEXT("printerNameAliases")      // MULTI_SZ
  2719. #define SPLDS_PRINTER_LOCATIONS                 TEXT("printerLocations")        // MULTI_SZ
  2720. #define SPLDS_PRINTER_MODEL                     TEXT("printerModel")            // SZ
  2721.  
  2722.  
  2723.  
  2724. #ifdef __cplusplus
  2725. }
  2726. #endif
  2727.  
  2728. #pragma option pop /*P_O_Pop*/
  2729. #endif // _WINSPOOL_
  2730.