Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2842 lines
73 KiB

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