Leaked source code of windows server 2003
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.

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