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.

808 lines
46 KiB

  1. /*++
  2. Copyright (c) 1990-1996 Microsoft Corporation
  3. All rights reserved
  4. Module Name:
  5. data.h
  6. Abstract:
  7. Common definitions for structure offsets for pointer based data.
  8. Author:
  9. Environment:
  10. User Mode - Win32
  11. Revision History:
  12. Notes:
  13. FOR ADDING OR UPDATING Offset structures.
  14. All the offsets should appear in ascending order in the struct. This is critical
  15. for converting 32 bit structures into the corresponding 64 bit structures. Custom
  16. marshalling will break if this is not adhered to.
  17. See spllib\marshall.cxx for additional information
  18. --*/
  19. #ifndef _DATA_H
  20. #define _DATA_H
  21. #include <offsets.h>
  22. #include <winsprlp.h>
  23. #ifdef PRINTER_OFFSETS
  24. DWORD PrinterInfoStressOffsets[]={offsetof(PRINTER_INFO_STRESSA, pPrinterName),
  25. offsetof(PRINTER_INFO_STRESSA, pServerName),
  26. 0xFFFFFFFF};
  27. DWORD PrinterInfo1Offsets[]={offsetof(PRINTER_INFO_1A, pDescription),
  28. offsetof(PRINTER_INFO_1A, pName),
  29. offsetof(PRINTER_INFO_1A, pComment),
  30. 0xFFFFFFFF};
  31. DWORD PrinterInfo2Offsets[]={offsetof(PRINTER_INFO_2A, pServerName),
  32. offsetof(PRINTER_INFO_2A, pPrinterName),
  33. offsetof(PRINTER_INFO_2A, pShareName),
  34. offsetof(PRINTER_INFO_2A, pPortName),
  35. offsetof(PRINTER_INFO_2A, pDriverName),
  36. offsetof(PRINTER_INFO_2A, pComment),
  37. offsetof(PRINTER_INFO_2A, pLocation),
  38. offsetof(PRINTER_INFO_2A, pDevMode),
  39. offsetof(PRINTER_INFO_2A, pSepFile),
  40. offsetof(PRINTER_INFO_2A, pPrintProcessor),
  41. offsetof(PRINTER_INFO_2A, pDatatype),
  42. offsetof(PRINTER_INFO_2A, pParameters),
  43. offsetof(PRINTER_INFO_2A, pSecurityDescriptor),
  44. 0xFFFFFFFF};
  45. DWORD PrinterInfo3Offsets[]={offsetof(PRINTER_INFO_3, pSecurityDescriptor),
  46. 0xFFFFFFFF};
  47. DWORD PrinterInfo4Offsets[]={offsetof(PRINTER_INFO_4A, pPrinterName),
  48. offsetof(PRINTER_INFO_4A, pServerName),
  49. 0xFFFFFFFF};
  50. DWORD PrinterInfo5Offsets[]={offsetof(PRINTER_INFO_5A, pPrinterName),
  51. offsetof(PRINTER_INFO_5A, pPortName),
  52. 0xFFFFFFFF};
  53. DWORD PrinterInfo6Offsets[]={0xFFFFFFFF};
  54. DWORD PrinterInfo7Offsets[]={offsetof(PRINTER_INFO_7A, pszObjectGUID),
  55. 0xFFFFFFFF};
  56. DWORD PrinterInfo8Offsets[]={offsetof(PRINTER_INFO_8A, pDevMode),
  57. 0xFFFFFFFF};
  58. DWORD PrinterInfo9Offsets[]={offsetof(PRINTER_INFO_9A, pDevMode),
  59. 0xFFFFFFFF};
  60. #endif
  61. #ifdef PRINTER_STRINGS
  62. DWORD PrinterInfoStressStrings[]={offsetof(PRINTER_INFO_STRESSA, pPrinterName),
  63. offsetof(PRINTER_INFO_STRESSA, pServerName),
  64. 0xFFFFFFFF};
  65. DWORD PrinterInfo1Strings[]={offsetof(PRINTER_INFO_1A, pDescription),
  66. offsetof(PRINTER_INFO_1A, pName),
  67. offsetof(PRINTER_INFO_1A, pComment),
  68. 0xFFFFFFFF};
  69. DWORD PrinterInfo2Strings[]={offsetof(PRINTER_INFO_2A, pServerName),
  70. offsetof(PRINTER_INFO_2A, pPrinterName),
  71. offsetof(PRINTER_INFO_2A, pShareName),
  72. offsetof(PRINTER_INFO_2A, pPortName),
  73. offsetof(PRINTER_INFO_2A, pDriverName),
  74. offsetof(PRINTER_INFO_2A, pComment),
  75. offsetof(PRINTER_INFO_2A, pLocation),
  76. offsetof(PRINTER_INFO_2A, pSepFile),
  77. offsetof(PRINTER_INFO_2A, pPrintProcessor),
  78. offsetof(PRINTER_INFO_2A, pDatatype),
  79. offsetof(PRINTER_INFO_2A, pParameters),
  80. 0xFFFFFFFF};
  81. DWORD PrinterInfo3Strings[]={0xFFFFFFFF};
  82. DWORD PrinterInfo4Strings[]={offsetof(PRINTER_INFO_4A, pPrinterName),
  83. offsetof(PRINTER_INFO_4A, pServerName),
  84. 0xFFFFFFFF};
  85. DWORD PrinterInfo5Strings[]={offsetof(PRINTER_INFO_5A, pPrinterName),
  86. offsetof(PRINTER_INFO_5A, pPortName),
  87. 0xFFFFFFFF};
  88. DWORD PrinterInfo6Strings[]={0xFFFFFFFF};
  89. DWORD PrinterInfo7Strings[]={offsetof(PRINTER_INFO_7A, pszObjectGUID),
  90. 0xFFFFFFFF};
  91. DWORD PrinterInfo8Strings[]={0xFFFFFFFF};
  92. DWORD PrinterInfo9Strings[]={0xFFFFFFFF};
  93. #endif
  94. #ifdef JOB_OFFSETS
  95. DWORD JobInfo1Offsets[]={offsetof(JOB_INFO_1A, pPrinterName),
  96. offsetof(JOB_INFO_1A, pMachineName),
  97. offsetof(JOB_INFO_1A, pUserName),
  98. offsetof(JOB_INFO_1A, pDocument),
  99. offsetof(JOB_INFO_1A, pDatatype),
  100. offsetof(JOB_INFO_1A, pStatus),
  101. 0xFFFFFFFF};
  102. DWORD JobInfo2Offsets[]={offsetof(JOB_INFO_2, pPrinterName),
  103. offsetof(JOB_INFO_2, pMachineName),
  104. offsetof(JOB_INFO_2, pUserName),
  105. offsetof(JOB_INFO_2, pDocument),
  106. offsetof(JOB_INFO_2, pNotifyName),
  107. offsetof(JOB_INFO_2, pDatatype),
  108. offsetof(JOB_INFO_2, pPrintProcessor),
  109. offsetof(JOB_INFO_2, pParameters),
  110. offsetof(JOB_INFO_2, pDriverName),
  111. offsetof(JOB_INFO_2, pDevMode),
  112. offsetof(JOB_INFO_2, pStatus),
  113. offsetof(JOB_INFO_2, pSecurityDescriptor),
  114. 0xFFFFFFFF};
  115. DWORD JobInfo3Offsets[]={0xFFFFFFFF};
  116. #endif
  117. #ifdef JOB_STRINGS
  118. DWORD JobInfo1Strings[]={offsetof(JOB_INFO_1A, pPrinterName),
  119. offsetof(JOB_INFO_1A, pMachineName),
  120. offsetof(JOB_INFO_1A, pUserName),
  121. offsetof(JOB_INFO_1A, pDocument),
  122. offsetof(JOB_INFO_1A, pDatatype),
  123. offsetof(JOB_INFO_1A, pStatus),
  124. 0xFFFFFFFF};
  125. DWORD JobInfo2Strings[]={offsetof(JOB_INFO_2, pPrinterName),
  126. offsetof(JOB_INFO_2, pMachineName),
  127. offsetof(JOB_INFO_2, pUserName),
  128. offsetof(JOB_INFO_2, pDocument),
  129. offsetof(JOB_INFO_2, pNotifyName),
  130. offsetof(JOB_INFO_2, pDatatype),
  131. offsetof(JOB_INFO_2, pPrintProcessor),
  132. offsetof(JOB_INFO_2, pParameters),
  133. offsetof(JOB_INFO_2, pDriverName),
  134. offsetof(JOB_INFO_2, pStatus),
  135. 0xFFFFFFFF};
  136. DWORD JobInfo3Strings[]={0xFFFFFFFF};
  137. #endif
  138. #ifdef DRIVER_OFFSETS
  139. DWORD DriverInfo1Offsets[]={offsetof(DRIVER_INFO_1A, pName),
  140. 0xFFFFFFFF};
  141. DWORD DriverInfo2Offsets[]={offsetof(DRIVER_INFO_2A, pName),
  142. offsetof(DRIVER_INFO_2A, pEnvironment),
  143. offsetof(DRIVER_INFO_2A, pDriverPath),
  144. offsetof(DRIVER_INFO_2A, pDataFile),
  145. offsetof(DRIVER_INFO_2A, pConfigFile),
  146. 0xFFFFFFFF};
  147. DWORD DriverInfo3Offsets[]={offsetof(DRIVER_INFO_3A, pName),
  148. offsetof(DRIVER_INFO_3A, pEnvironment),
  149. offsetof(DRIVER_INFO_3A, pDriverPath),
  150. offsetof(DRIVER_INFO_3A, pDataFile),
  151. offsetof(DRIVER_INFO_3A, pConfigFile),
  152. offsetof(DRIVER_INFO_3A, pHelpFile),
  153. offsetof(DRIVER_INFO_3A, pDependentFiles),
  154. offsetof(DRIVER_INFO_3A, pMonitorName),
  155. offsetof(DRIVER_INFO_3A, pDefaultDataType),
  156. 0xFFFFFFFF};
  157. DWORD DriverInfo4Offsets[]={offsetof(DRIVER_INFO_4A, pName),
  158. offsetof(DRIVER_INFO_4A, pEnvironment),
  159. offsetof(DRIVER_INFO_4A, pDriverPath),
  160. offsetof(DRIVER_INFO_4A, pDataFile),
  161. offsetof(DRIVER_INFO_4A, pConfigFile),
  162. offsetof(DRIVER_INFO_4A, pHelpFile),
  163. offsetof(DRIVER_INFO_4A, pDependentFiles),
  164. offsetof(DRIVER_INFO_4A, pMonitorName),
  165. offsetof(DRIVER_INFO_4A, pDefaultDataType),
  166. offsetof(DRIVER_INFO_4A, pszzPreviousNames),
  167. 0xFFFFFFFF};
  168. DWORD DriverInfo5Offsets[]={offsetof(DRIVER_INFO_2A, pName),
  169. offsetof(DRIVER_INFO_2A, pEnvironment),
  170. offsetof(DRIVER_INFO_2A, pDriverPath),
  171. offsetof(DRIVER_INFO_2A, pDataFile),
  172. offsetof(DRIVER_INFO_2A, pConfigFile),
  173. 0xFFFFFFFF};
  174. DWORD DriverInfo6Offsets[]={offsetof(DRIVER_INFO_6A, pName),
  175. offsetof(DRIVER_INFO_6A, pEnvironment),
  176. offsetof(DRIVER_INFO_6A, pDriverPath),
  177. offsetof(DRIVER_INFO_6A, pDataFile),
  178. offsetof(DRIVER_INFO_6A, pConfigFile),
  179. offsetof(DRIVER_INFO_6A, pHelpFile),
  180. offsetof(DRIVER_INFO_6A, pDependentFiles),
  181. offsetof(DRIVER_INFO_6A, pMonitorName),
  182. offsetof(DRIVER_INFO_6A, pDefaultDataType),
  183. offsetof(DRIVER_INFO_6A, pszzPreviousNames),
  184. offsetof(DRIVER_INFO_6A, pszMfgName),
  185. offsetof(DRIVER_INFO_6A, pszOEMUrl),
  186. offsetof(DRIVER_INFO_6A, pszHardwareID),
  187. offsetof(DRIVER_INFO_6A, pszProvider),
  188. 0xFFFFFFFF};
  189. #endif
  190. #ifdef DRIVER_STRINGS
  191. DWORD DriverInfo1Strings[]={offsetof(DRIVER_INFO_1A, pName),
  192. 0xFFFFFFFF};
  193. DWORD DriverInfo2Strings[]={offsetof(DRIVER_INFO_2A, pName),
  194. offsetof(DRIVER_INFO_2A, pEnvironment),
  195. offsetof(DRIVER_INFO_2A, pDriverPath),
  196. offsetof(DRIVER_INFO_2A, pDataFile),
  197. offsetof(DRIVER_INFO_2A, pConfigFile),
  198. 0xFFFFFFFF};
  199. DWORD DriverInfo3Strings[]={offsetof(DRIVER_INFO_3A, pName),
  200. offsetof(DRIVER_INFO_3A, pEnvironment),
  201. offsetof(DRIVER_INFO_3A, pDriverPath),
  202. offsetof(DRIVER_INFO_3A, pDataFile),
  203. offsetof(DRIVER_INFO_3A, pConfigFile),
  204. offsetof(DRIVER_INFO_3A, pHelpFile),
  205. offsetof(DRIVER_INFO_3A, pMonitorName),
  206. offsetof(DRIVER_INFO_3A, pDefaultDataType),
  207. 0xFFFFFFFF};
  208. DWORD DriverInfo4Strings[]={offsetof(DRIVER_INFO_4A, pName),
  209. offsetof(DRIVER_INFO_4A, pEnvironment),
  210. offsetof(DRIVER_INFO_4A, pDriverPath),
  211. offsetof(DRIVER_INFO_4A, pDataFile),
  212. offsetof(DRIVER_INFO_4A, pConfigFile),
  213. offsetof(DRIVER_INFO_4A, pHelpFile),
  214. offsetof(DRIVER_INFO_4A, pMonitorName),
  215. offsetof(DRIVER_INFO_4A, pDefaultDataType),
  216. 0xFFFFFFFF};
  217. DWORD DriverInfo5Strings[]={offsetof(DRIVER_INFO_2A, pName),
  218. offsetof(DRIVER_INFO_2A, pEnvironment),
  219. offsetof(DRIVER_INFO_2A, pDriverPath),
  220. offsetof(DRIVER_INFO_2A, pDataFile),
  221. offsetof(DRIVER_INFO_2A, pConfigFile),
  222. 0xFFFFFFFF};
  223. DWORD DriverInfo6Strings[]={offsetof(DRIVER_INFO_6A, pName),
  224. offsetof(DRIVER_INFO_6A, pEnvironment),
  225. offsetof(DRIVER_INFO_6A, pDriverPath),
  226. offsetof(DRIVER_INFO_6A, pDataFile),
  227. offsetof(DRIVER_INFO_6A, pConfigFile),
  228. offsetof(DRIVER_INFO_6A, pHelpFile),
  229. offsetof(DRIVER_INFO_6A, pMonitorName),
  230. offsetof(DRIVER_INFO_6A, pDefaultDataType),
  231. offsetof(DRIVER_INFO_6A, pszMfgName),
  232. offsetof(DRIVER_INFO_6A, pszOEMUrl),
  233. offsetof(DRIVER_INFO_6A, pszHardwareID),
  234. offsetof(DRIVER_INFO_6A, pszProvider),
  235. 0xFFFFFFFF};
  236. DWORD DriverInfoVersionStrings[]={offsetof(DRIVER_INFO_VERSION, pName),
  237. offsetof(DRIVER_INFO_VERSION, pEnvironment),
  238. offsetof(DRIVER_INFO_VERSION, pMonitorName),
  239. offsetof(DRIVER_INFO_VERSION, pDefaultDataType),
  240. offsetof(DRIVER_INFO_VERSION, pszMfgName),
  241. offsetof(DRIVER_INFO_VERSION, pszOEMUrl),
  242. offsetof(DRIVER_INFO_VERSION, pszHardwareID),
  243. offsetof(DRIVER_INFO_VERSION, pszProvider),
  244. 0xFFFFFFFF};
  245. #endif
  246. #ifdef ADDJOB_OFFSETS
  247. DWORD AddJobOffsets[]={offsetof(ADDJOB_INFO_1A, Path),
  248. 0xFFFFFFFF};
  249. DWORD AddJob2Offsets[]={offsetof(ADDJOB_INFO_2W, pData),
  250. 0xFFFFFFFF};
  251. #endif
  252. #ifdef ADDJOB_STRINGS
  253. DWORD AddJobStrings[]={offsetof(ADDJOB_INFO_1A, Path),
  254. 0xFFFFFFFF};
  255. DWORD AddJob2Strings[]={offsetof(ADDJOB_INFO_2W, pData),
  256. 0xFFFFFFFF};
  257. #endif
  258. #ifdef FORM_OFFSETS
  259. DWORD FormInfo1Offsets[]={offsetof(FORM_INFO_1A, pName),
  260. 0xFFFFFFFF};
  261. #endif
  262. #ifdef FORM_STRINGS
  263. DWORD FormInfo1Strings[]={offsetof(FORM_INFO_1A, pName),
  264. 0xFFFFFFFF};
  265. #endif
  266. #ifdef PORT_OFFSETS
  267. DWORD PortInfo1Offsets[]={offsetof(PORT_INFO_1A, pName),
  268. 0xFFFFFFFF};
  269. DWORD PortInfo2Offsets[]={offsetof(PORT_INFO_2A, pPortName),
  270. offsetof(PORT_INFO_2A, pMonitorName),
  271. offsetof(PORT_INFO_2A, pDescription),
  272. 0xFFFFFFFF};
  273. DWORD PortInfo3Offsets[]={offsetof(PORT_INFO_3A, pszStatus),
  274. 0xFFFFFFFF};
  275. #endif
  276. #ifdef PORT_STRINGS
  277. DWORD PortInfo1Strings[]={offsetof(PORT_INFO_1A, pName),
  278. 0xFFFFFFFF};
  279. DWORD PortInfo2Strings[]={offsetof(PORT_INFO_2A, pPortName),
  280. offsetof(PORT_INFO_2A, pMonitorName),
  281. offsetof(PORT_INFO_2A, pDescription),
  282. 0xFFFFFFFF};
  283. #endif
  284. #ifdef PRINTPROCESSOR_OFFSETS
  285. DWORD PrintProcessorInfo1Offsets[]={offsetof(PRINTPROCESSOR_INFO_1A, pName),
  286. 0xFFFFFFFF};
  287. #endif
  288. #ifdef PRINTPROCESSOR_STRINGS
  289. DWORD PrintProcessorInfo1Strings[]={offsetof(PRINTPROCESSOR_INFO_1A, pName),
  290. 0xFFFFFFFF};
  291. #endif
  292. #ifdef MONITOR_OFFSETS
  293. DWORD MonitorInfo1Offsets[]={offsetof(MONITOR_INFO_1A, pName),
  294. 0xFFFFFFFF};
  295. DWORD MonitorInfo2Offsets[]={offsetof(MONITOR_INFO_2A, pName),
  296. offsetof(MONITOR_INFO_2A, pEnvironment),
  297. offsetof(MONITOR_INFO_2A, pDLLName),
  298. 0xFFFFFFFF};
  299. #endif
  300. #ifdef MONITOR_STRINGS
  301. DWORD MonitorInfo1Strings[]={offsetof(MONITOR_INFO_1A, pName),
  302. 0xFFFFFFFF};
  303. DWORD MonitorInfo2Strings[]={offsetof(MONITOR_INFO_2A, pName),
  304. offsetof(MONITOR_INFO_2A, pEnvironment),
  305. offsetof(MONITOR_INFO_2A, pDLLName),
  306. 0xFFFFFFFF};
  307. #endif
  308. #ifdef DOCINFO_OFFSETS
  309. DWORD DocInfo1Offsets[]={offsetof(DOC_INFO_1A, pDocName),
  310. offsetof(DOC_INFO_1A, pOutputFile),
  311. offsetof(DOC_INFO_1A, pDatatype),
  312. 0xFFFFFFFF};
  313. #endif
  314. #ifdef DOCINFO_STRINGS
  315. DWORD DocInfo1Strings[]={offsetof(DOC_INFO_1A, pDocName),
  316. offsetof(DOC_INFO_1A, pOutputFile),
  317. offsetof(DOC_INFO_1A, pDatatype),
  318. 0xFFFFFFFF};
  319. #endif
  320. #ifdef DATATYPE_OFFSETS
  321. DWORD DatatypeInfo1Offsets[]={offsetof(DATATYPES_INFO_1A, pName),
  322. 0xFFFFFFFF};
  323. #endif
  324. #ifdef DATATYPE_STRINGS
  325. DWORD DatatypeInfo1Strings[]={offsetof(DATATYPES_INFO_1A, pName),
  326. 0xFFFFFFFF};
  327. #endif
  328. #ifdef PRINTER_ENUM_VALUES_OFFSETS
  329. DWORD PrinterEnumValuesOffsets[] = {offsetof(PRINTER_ENUM_VALUESA, pValueName),
  330. offsetof(PRINTER_ENUM_VALUESA, pData),
  331. 0xFFFFFFFF};
  332. #endif
  333. #ifdef PROVIDOR_STRINGS
  334. DWORD ProvidorInfo1Strings[]={offsetof(PROVIDOR_INFO_1A, pName),
  335. offsetof(PROVIDOR_INFO_1A, pEnvironment),
  336. offsetof(PROVIDOR_INFO_1A, pDLLName),
  337. 0xFFFFFFFF};
  338. DWORD ProvidorInfo2Strings[]={0xFFFFFFFF};
  339. #endif
  340. #ifdef PRINTER_OFFSETS
  341. FieldInfo PrinterInfoStressFields[]={
  342. {offsetof(PRINTER_INFO_STRESSA, pPrinterName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  343. {offsetof(PRINTER_INFO_STRESSA, pServerName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  344. {offsetof(PRINTER_INFO_STRESSA, cJobs), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  345. {offsetof(PRINTER_INFO_STRESSA, cTotalJobs), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  346. {offsetof(PRINTER_INFO_STRESSA, cTotalBytes), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  347. {offsetof(PRINTER_INFO_STRESSA, stUpTime), sizeof(SYSTEMTIME), sizeof(DWORD), DATA_TYPE },
  348. {offsetof(PRINTER_INFO_STRESSA, MaxcRef), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  349. {offsetof(PRINTER_INFO_STRESSA, cTotalPagesPrinted), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  350. {offsetof(PRINTER_INFO_STRESSA, dwGetVersion), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  351. {offsetof(PRINTER_INFO_STRESSA, fFreeBuild), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  352. {offsetof(PRINTER_INFO_STRESSA, cSpooling), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  353. {offsetof(PRINTER_INFO_STRESSA, cMaxSpooling), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  354. {offsetof(PRINTER_INFO_STRESSA, cRef), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  355. {offsetof(PRINTER_INFO_STRESSA, cErrorOutOfPaper), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  356. {offsetof(PRINTER_INFO_STRESSA, cErrorNotReady), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  357. {offsetof(PRINTER_INFO_STRESSA, cJobError), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  358. {offsetof(PRINTER_INFO_STRESSA, dwNumberOfProcessors), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  359. {offsetof(PRINTER_INFO_STRESSA, dwProcessorType), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  360. {offsetof(PRINTER_INFO_STRESSA, dwHighPartTotalBytes), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  361. {offsetof(PRINTER_INFO_STRESSA, cChangeID), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  362. {offsetof(PRINTER_INFO_STRESSA, dwLastError), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  363. {offsetof(PRINTER_INFO_STRESSA, Status), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  364. {offsetof(PRINTER_INFO_STRESSA, cEnumerateNetworkPrinters), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  365. {offsetof(PRINTER_INFO_STRESSA, cAddNetPrinters), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  366. {offsetof(PRINTER_INFO_STRESSA, wProcessorArchitecture), sizeof(WORD), sizeof(WORD), DATA_TYPE },
  367. {offsetof(PRINTER_INFO_STRESSA, wProcessorLevel), sizeof(WORD), sizeof(WORD), DATA_TYPE },
  368. {offsetof(PRINTER_INFO_STRESSA, cRefIC), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  369. {offsetof(PRINTER_INFO_STRESSA, dwReserved2), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  370. {offsetof(PRINTER_INFO_STRESSA, dwReserved3), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  371. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  372. };
  373. FieldInfo PrinterInfo1Fields[]={
  374. {offsetof(PRINTER_INFO_1A, Flags), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  375. {offsetof(PRINTER_INFO_1A, pDescription), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  376. {offsetof(PRINTER_INFO_1A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  377. {offsetof(PRINTER_INFO_1A, pComment), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  378. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  379. };
  380. FieldInfo PrinterInfo2Fields[]={
  381. {offsetof(PRINTER_INFO_2A, pServerName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  382. {offsetof(PRINTER_INFO_2A, pPrinterName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  383. {offsetof(PRINTER_INFO_2A, pShareName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  384. {offsetof(PRINTER_INFO_2A, pPortName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  385. {offsetof(PRINTER_INFO_2A, pDriverName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  386. {offsetof(PRINTER_INFO_2A, pComment), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  387. {offsetof(PRINTER_INFO_2A, pLocation), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  388. {offsetof(PRINTER_INFO_2A, pDevMode), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  389. {offsetof(PRINTER_INFO_2A, pSepFile), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  390. {offsetof(PRINTER_INFO_2A, pPrintProcessor), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  391. {offsetof(PRINTER_INFO_2A, pDatatype), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  392. {offsetof(PRINTER_INFO_2A, pParameters), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  393. {offsetof(PRINTER_INFO_2A, pSecurityDescriptor), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  394. {offsetof(PRINTER_INFO_2A, Attributes), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  395. {offsetof(PRINTER_INFO_2A, Priority), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  396. {offsetof(PRINTER_INFO_2A, DefaultPriority), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  397. {offsetof(PRINTER_INFO_2A, StartTime), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  398. {offsetof(PRINTER_INFO_2A, UntilTime), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  399. {offsetof(PRINTER_INFO_2A, Status), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  400. {offsetof(PRINTER_INFO_2A, cJobs), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  401. {offsetof(PRINTER_INFO_2A, AveragePPM), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  402. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  403. };
  404. FieldInfo PrinterInfo3Fields[]={
  405. {offsetof(PRINTER_INFO_3, pSecurityDescriptor), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  406. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  407. };
  408. FieldInfo PrinterInfo4Fields[]={
  409. {offsetof(PRINTER_INFO_4A, pPrinterName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  410. {offsetof(PRINTER_INFO_4A, pServerName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  411. {offsetof(PRINTER_INFO_4A, Attributes), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  412. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  413. };
  414. FieldInfo PrinterInfo5Fields[]={
  415. {offsetof(PRINTER_INFO_5A, pPrinterName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  416. {offsetof(PRINTER_INFO_5A, pPortName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  417. {offsetof(PRINTER_INFO_5A, Attributes), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  418. {offsetof(PRINTER_INFO_5A, TransmissionRetryTimeout), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  419. {offsetof(PRINTER_INFO_5A, TransmissionRetryTimeout), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  420. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  421. };
  422. FieldInfo PrinterInfo6Fields[]={
  423. {offsetof(PRINTER_INFO_6, dwStatus), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  424. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  425. };
  426. FieldInfo PrinterInfo7Fields[]={
  427. {offsetof(PRINTER_INFO_7A, pszObjectGUID), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  428. {offsetof(PRINTER_INFO_7A, dwAction), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  429. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  430. };
  431. FieldInfo PrinterInfo8Fields[]={
  432. {offsetof(PRINTER_INFO_8A, pDevMode), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  433. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  434. };
  435. FieldInfo PrinterInfo9Fields[]={
  436. {offsetof(PRINTER_INFO_9A, pDevMode), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  437. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  438. };
  439. #endif
  440. #ifdef JOB_OFFSETS
  441. FieldInfo JobInfo1Fields[]= {
  442. {offsetof(JOB_INFO_1A, JobId), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  443. {offsetof(JOB_INFO_1A, pPrinterName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  444. {offsetof(JOB_INFO_1A, pMachineName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  445. {offsetof(JOB_INFO_1A, pUserName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  446. {offsetof(JOB_INFO_1A, pDocument), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  447. {offsetof(JOB_INFO_1A, pDatatype), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  448. {offsetof(JOB_INFO_1A, pStatus), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  449. {offsetof(JOB_INFO_1A, Status), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  450. {offsetof(JOB_INFO_1A, Priority), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  451. {offsetof(JOB_INFO_1A, Position), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  452. {offsetof(JOB_INFO_1A, TotalPages), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  453. {offsetof(JOB_INFO_1A, PagesPrinted), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  454. {offsetof(JOB_INFO_1A, Submitted), sizeof(SYSTEMTIME), sizeof(DWORD), DATA_TYPE },
  455. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  456. };
  457. FieldInfo JobInfo2Fields[]= {
  458. {offsetof(JOB_INFO_2A, JobId), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  459. {offsetof(JOB_INFO_2A, pPrinterName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  460. {offsetof(JOB_INFO_2A, pMachineName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  461. {offsetof(JOB_INFO_2A, pUserName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  462. {offsetof(JOB_INFO_2A, pDocument), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  463. {offsetof(JOB_INFO_2A, pNotifyName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  464. {offsetof(JOB_INFO_2A, pDatatype), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  465. {offsetof(JOB_INFO_2A, pPrintProcessor), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  466. {offsetof(JOB_INFO_2A, pParameters), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  467. {offsetof(JOB_INFO_2A, pDriverName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  468. {offsetof(JOB_INFO_2A, pDevMode), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  469. {offsetof(JOB_INFO_2A, pStatus), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  470. {offsetof(JOB_INFO_2A, pSecurityDescriptor), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  471. {offsetof(JOB_INFO_2A, Status), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  472. {offsetof(JOB_INFO_2A, Priority), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  473. {offsetof(JOB_INFO_2A, Position), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  474. {offsetof(JOB_INFO_2A, StartTime), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  475. {offsetof(JOB_INFO_2A, UntilTime), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  476. {offsetof(JOB_INFO_2A, TotalPages), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  477. {offsetof(JOB_INFO_2A, Size), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  478. {offsetof(JOB_INFO_2A, Submitted), sizeof(SYSTEMTIME), sizeof(DWORD), DATA_TYPE },
  479. {offsetof(JOB_INFO_2A, Time), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  480. {offsetof(JOB_INFO_2A, PagesPrinted), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  481. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  482. };
  483. FieldInfo JobInfo3Fields[]= {
  484. {offsetof(JOB_INFO_3, JobId), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  485. {offsetof(JOB_INFO_3, NextJobId), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  486. {offsetof(JOB_INFO_3, Reserved), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  487. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  488. };
  489. #endif
  490. #ifdef DRIVER_OFFSETS
  491. FieldInfo DriverInfo1Fields[]= {
  492. {offsetof(DRIVER_INFO_1A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  493. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  494. };
  495. FieldInfo DriverInfo2Fields[]= {
  496. {offsetof(DRIVER_INFO_2A, cVersion), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  497. {offsetof(DRIVER_INFO_2A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  498. {offsetof(DRIVER_INFO_2A, pEnvironment), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  499. {offsetof(DRIVER_INFO_2A, pDriverPath), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  500. {offsetof(DRIVER_INFO_2A, pDataFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  501. {offsetof(DRIVER_INFO_2A, pConfigFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  502. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  503. };
  504. FieldInfo DriverInfo3Fields[]= {
  505. {offsetof(DRIVER_INFO_3A, cVersion), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  506. {offsetof(DRIVER_INFO_3A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  507. {offsetof(DRIVER_INFO_3A, pEnvironment), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  508. {offsetof(DRIVER_INFO_3A, pDriverPath), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  509. {offsetof(DRIVER_INFO_3A, pDataFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  510. {offsetof(DRIVER_INFO_3A, pConfigFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  511. {offsetof(DRIVER_INFO_3A, pHelpFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  512. {offsetof(DRIVER_INFO_3A, pDependentFiles), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  513. {offsetof(DRIVER_INFO_3A, pMonitorName), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  514. {offsetof(DRIVER_INFO_3A, pDefaultDataType), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  515. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  516. };
  517. FieldInfo DriverInfo4Fields[]= {
  518. {offsetof(DRIVER_INFO_4A, cVersion), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  519. {offsetof(DRIVER_INFO_4A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  520. {offsetof(DRIVER_INFO_4A, pEnvironment), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  521. {offsetof(DRIVER_INFO_4A, pDriverPath), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  522. {offsetof(DRIVER_INFO_4A, pDataFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  523. {offsetof(DRIVER_INFO_4A, pConfigFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  524. {offsetof(DRIVER_INFO_4A, pHelpFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  525. {offsetof(DRIVER_INFO_4A, pDependentFiles), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  526. {offsetof(DRIVER_INFO_4A, pMonitorName), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  527. {offsetof(DRIVER_INFO_4A, pDefaultDataType), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  528. {offsetof(DRIVER_INFO_4A, pszzPreviousNames), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  529. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  530. };
  531. FieldInfo DriverInfo5Fields[]= {
  532. {offsetof(DRIVER_INFO_5A, cVersion), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  533. {offsetof(DRIVER_INFO_5A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  534. {offsetof(DRIVER_INFO_5A, pEnvironment), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  535. {offsetof(DRIVER_INFO_5A, pDriverPath), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  536. {offsetof(DRIVER_INFO_5A, pDataFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  537. {offsetof(DRIVER_INFO_5A, pConfigFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  538. {offsetof(DRIVER_INFO_5A, dwDriverAttributes), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  539. {offsetof(DRIVER_INFO_5A, dwConfigVersion), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  540. {offsetof(DRIVER_INFO_5A, dwDriverVersion), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  541. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  542. };
  543. FieldInfo DriverInfo6Fields[]= {
  544. {offsetof(DRIVER_INFO_6A, cVersion), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  545. {offsetof(DRIVER_INFO_6A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  546. {offsetof(DRIVER_INFO_6A, pEnvironment), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  547. {offsetof(DRIVER_INFO_6A, pDriverPath), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  548. {offsetof(DRIVER_INFO_6A, pDataFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  549. {offsetof(DRIVER_INFO_6A, pConfigFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  550. {offsetof(DRIVER_INFO_6A, pHelpFile), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  551. {offsetof(DRIVER_INFO_6A, pDependentFiles), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  552. {offsetof(DRIVER_INFO_6A, pMonitorName), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  553. {offsetof(DRIVER_INFO_6A, pDefaultDataType), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  554. {offsetof(DRIVER_INFO_6A, pszzPreviousNames), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  555. {offsetof(DRIVER_INFO_6A, ftDriverDate), sizeof(FILETIME), sizeof(DWORD), DATA_TYPE },
  556. {offsetof(DRIVER_INFO_6A, dwlDriverVersion), sizeof(DWORDLONG), sizeof(DWORDLONG), DATA_TYPE },
  557. {offsetof(DRIVER_INFO_6A, pszMfgName), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  558. {offsetof(DRIVER_INFO_6A, pszOEMUrl), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  559. {offsetof(DRIVER_INFO_6A, pszHardwareID), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  560. {offsetof(DRIVER_INFO_6A, pszProvider), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  561. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  562. };
  563. FieldInfo DriverInfoVersionFields[]= {
  564. {offsetof(DRIVER_INFO_VERSION, cVersion), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  565. {offsetof(DRIVER_INFO_VERSION, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  566. {offsetof(DRIVER_INFO_VERSION, pEnvironment), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  567. {offsetof(DRIVER_INFO_VERSION, pFileInfo), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  568. {offsetof(DRIVER_INFO_VERSION, dwFileCount), sizeof(DWORD),sizeof(DWORD), DATA_TYPE },
  569. {offsetof(DRIVER_INFO_VERSION, pMonitorName), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  570. {offsetof(DRIVER_INFO_VERSION, pDefaultDataType), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  571. {offsetof(DRIVER_INFO_VERSION, pszzPreviousNames), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  572. {offsetof(DRIVER_INFO_VERSION, ftDriverDate), sizeof(FILETIME), sizeof(DWORD), DATA_TYPE },
  573. {offsetof(DRIVER_INFO_VERSION, dwlDriverVersion), sizeof(DWORDLONG), sizeof(DWORDLONG), DATA_TYPE },
  574. {offsetof(DRIVER_INFO_VERSION, pszMfgName), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  575. {offsetof(DRIVER_INFO_VERSION, pszOEMUrl), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  576. {offsetof(DRIVER_INFO_VERSION, pszHardwareID), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  577. {offsetof(DRIVER_INFO_VERSION, pszProvider), sizeof(ULONG_PTR), sizeof(DWORD), PTR_TYPE },
  578. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  579. };
  580. #endif
  581. #ifdef ADDJOB_OFFSETS
  582. FieldInfo AddJobFields[]= {
  583. {offsetof(ADDJOB_INFO_1A, Path), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  584. {offsetof(ADDJOB_INFO_1A, JobId), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  585. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  586. };
  587. FieldInfo AddJob2Fields[]= {
  588. {offsetof(ADDJOB_INFO_2W, pData), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  589. {offsetof(ADDJOB_INFO_2W, JobId), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  590. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  591. };
  592. #endif
  593. #ifdef FORM_OFFSETS
  594. FieldInfo FormInfo1Fields[]= {
  595. {offsetof(FORM_INFO_1A, Flags), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  596. {offsetof(FORM_INFO_1A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  597. {offsetof(FORM_INFO_1A, Size), sizeof(SIZEL), sizeof(DWORD), DATA_TYPE },
  598. {offsetof(FORM_INFO_1A, ImageableArea), sizeof(RECTL), sizeof(DWORD), DATA_TYPE },
  599. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  600. };
  601. #endif
  602. #ifdef PORT_OFFSETS
  603. FieldInfo PortInfo1Fields[]= {
  604. {offsetof(PORT_INFO_1A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  605. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  606. };
  607. FieldInfo PortInfo2Fields[]= {
  608. {offsetof(PORT_INFO_2A, pPortName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  609. {offsetof(PORT_INFO_2A, pMonitorName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  610. {offsetof(PORT_INFO_2A, pDescription), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  611. {offsetof(PORT_INFO_2A, fPortType), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  612. {offsetof(PORT_INFO_2A, Reserved), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  613. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  614. };
  615. FieldInfo PortInfo3Fields[]= {
  616. {offsetof(PORT_INFO_3A, dwStatus), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  617. {offsetof(PORT_INFO_3A, pszStatus), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  618. {offsetof(PORT_INFO_3A, dwSeverity), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  619. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  620. };
  621. #endif
  622. #ifdef PRINTPROCESSOR_OFFSETS
  623. FieldInfo PrintProcessorInfo1Fields[]= {
  624. {offsetof(PRINTPROCESSOR_INFO_1A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  625. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  626. };
  627. #endif
  628. #ifdef MONITOR_OFFSETS
  629. FieldInfo MonitorInfo1Fields[]= {
  630. {offsetof(MONITOR_INFO_2A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  631. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  632. };
  633. FieldInfo MonitorInfo2Fields[]= {
  634. {offsetof(MONITOR_INFO_2A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  635. {offsetof(MONITOR_INFO_2A, pEnvironment), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  636. {offsetof(MONITOR_INFO_2A, pDLLName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  637. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  638. };
  639. #endif
  640. #ifdef DOCINFO_OFFSETS
  641. FieldInfo DocInfo1Fields[]= {
  642. {offsetof(DOC_INFO_1A, pDocName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  643. {offsetof(DOC_INFO_1A, pOutputFile), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  644. {offsetof(DOC_INFO_1A, pDatatype), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  645. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  646. };
  647. #endif
  648. #ifdef DATATYPE_OFFSETS
  649. FieldInfo DatatypeInfo1Fields[]={
  650. {offsetof(DATATYPES_INFO_1A, pName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  651. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  652. };
  653. #endif
  654. #ifdef PRINTER_ENUM_VALUES_OFFSETS
  655. FieldInfo PrinterEnumValuesFields[]= {
  656. {offsetof(PRINTER_ENUM_VALUESA, pValueName), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  657. {offsetof(PRINTER_ENUM_VALUESA, cbValueName), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  658. {offsetof(PRINTER_ENUM_VALUESA, dwType), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  659. {offsetof(PRINTER_ENUM_VALUESA, pData), sizeof(ULONG_PTR),sizeof(DWORD), PTR_TYPE },
  660. {offsetof(PRINTER_ENUM_VALUESA, cbData), sizeof(DWORD), sizeof(DWORD), DATA_TYPE },
  661. {0xFFFFFFFF, 0, 0, DATA_TYPE}
  662. };
  663. #endif
  664. #endif