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

  1. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  2. /******************************************************************************
  3. *
  4. *  (C) COPYRIGHT MICROSOFT CORP., 1998-1999
  5. *
  6. *  TITLE:       wiadef.h
  7. *
  8. *  VERSION:     2.0
  9. *
  10. *  DATE:        27 July, 1999
  11. *
  12. *  DESCRIPTION:
  13. *   Header file used to define WIA constants and globals.
  14. *
  15. ******************************************************************************/
  16.  
  17. //
  18. //  BUGBUG: Include our local copy of the GDI+ Image Guids : only temporary and
  19. //  must be removed as soon as GDI+ is in SDK
  20. //
  21.  
  22. #include "imgguids.h"
  23.  
  24. /**************************************************************************
  25. *
  26. *
  27. *
  28. *       WIA Errors
  29. *
  30. *
  31. *
  32. ***************************************************************************/
  33.  
  34.  
  35. //
  36. // Define the facility code. Move this to sdk\inc???
  37. //
  38.  
  39. #define FACILITY_WIA 33
  40.  
  41. //
  42. // Definitions for WIA_ERRORs. Applications can test for these errors
  43. // on API return, to keep users informed of conditions which a user
  44. // could correct.
  45. //
  46.  
  47. #define BASE_VAL_WIA_ERROR 0x00000000
  48.  
  49. #define WIA_ERROR_GENERAL_ERROR              MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIA, (BASE_VAL_WIA_ERROR + 1))
  50. #define WIA_ERROR_PAPER_JAM                  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIA, (BASE_VAL_WIA_ERROR + 2))
  51. #define WIA_ERROR_PAPER_EMPTY                MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIA, (BASE_VAL_WIA_ERROR + 3))
  52. #define WIA_ERROR_PAPER_PROBLEM              MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIA, (BASE_VAL_WIA_ERROR + 4))
  53. #define WIA_ERROR_OFFLINE                    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIA, (BASE_VAL_WIA_ERROR + 5))
  54. #define WIA_ERROR_BUSY                       MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIA, (BASE_VAL_WIA_ERROR + 6))
  55. #define WIA_ERROR_WARMING_UP                 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIA, (BASE_VAL_WIA_ERROR + 7))
  56. #define WIA_ERROR_USER_INTERVENTION          MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIA, (BASE_VAL_WIA_ERROR + 8))
  57. #define WIA_ERROR_ITEM_DELETED               MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIA, (BASE_VAL_WIA_ERROR + 9))
  58. #define WIA_ERROR_DEVICE_COMMUNICATION       MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIA, (BASE_VAL_WIA_ERROR + 10))
  59. #define WIA_ERROR_INVALID_COMMAND            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIA, (BASE_VAL_WIA_ERROR + 11))
  60.  
  61. //
  62. // SelectDeviceDlg & GetImageDlg flags
  63. //
  64.  
  65. #define WIA_SELECT_DEVICE_NODEFAULT          0x00000001
  66.  
  67. //
  68. // GetImageDlg & DeviceDlg flags
  69. //
  70.  
  71. #define WIA_DEVICE_DIALOG_SINGLE_IMAGE       0x00000002
  72.  
  73. //**************************************************************************
  74. //
  75. //
  76. //
  77. //       WIA Events
  78. //
  79. //
  80. //
  81. //**************************************************************************
  82.  
  83. //
  84. // Event registration flags, used by RegisterEventLaunch,
  85. // RegisterEventCallbackInterface and RegisterEventCallbackCLSID.
  86. //
  87.  
  88. #define  WIA_REGISTER_EVENT_CALLBACK        0x00000001
  89. #define  WIA_UNREGISTER_EVENT_CALLBACK      0x00000002
  90. #define  WIA_SET_DEFAULT_HANDLER            0x00000004
  91.  
  92. //
  93. // Event type : individual bits of the possible event type combinations
  94. //
  95.  
  96. #define  WIA_NOTIFICATION_EVENT             0x00000001
  97. #define  WIA_ACTION_EVENT                   0x00000002
  98.  
  99. //
  100. // Flag to indicate the corresponding persistent handler is default
  101. //
  102.  
  103. #define  WIA_IS_DEFAULT_HANDLER             0x00000001
  104.  
  105. // {143E4E83-6497-11d2-A231-00C04FA31809}
  106. DEFINE_GUID(WIA_EVENT_DEVICE_DISCONNECTED, 0x143e4e83, 0x6497, 0x11d2, 0xa2, 0x31, 0x0, 0xc0, 0x4f, 0xa3, 0x18, 0x9);
  107.  
  108. // {A28BBADE-64B6-11d2-A231-00C04FA31809}
  109. DEFINE_GUID(WIA_EVENT_DEVICE_CONNECTED, 0xa28bbade, 0x64b6, 0x11d2, 0xa2, 0x31, 0x0, 0xc0, 0x4f, 0xa3, 0x18, 0x9);
  110.  
  111. // 1d22a559-e14f-11d2-b326-00c04f68ce61
  112. DEFINE_GUID(WIA_EVENT_ITEM_DELETED, 0x1d22a559, 0xe14f, 0x11d2, 0xb3, 0x26, 0x00, 0xc0, 0x4f, 0x68, 0xce, 0x61);
  113.  
  114. // 4c8f4ef5-e14f-11d2-b326-00c04f68ce61
  115. DEFINE_GUID(WIA_EVENT_ITEM_CREATED, 0x4c8f4ef5, 0xe14f, 0x11d2, 0xb3, 0x26, 0x00, 0xc0, 0x4f, 0x68, 0xce, 0x61);
  116.  
  117. // {9638bbfd-d1bd-11d2-b31f-00c04f68ce61}
  118. DEFINE_GUID(WIA_EVENT_VOLUME_INSERT, 0x9638bbfd, 0xd1bd, 0x11d2, 0xb3, 0x1f, 0x00, 0xc0, 0x4f, 0x68, 0xce, 0x61);
  119.  
  120.  
  121. //**************************************************************************
  122. //
  123. //
  124. //
  125. //      WIA Commands
  126. //
  127. //
  128. //
  129. //**************************************************************************
  130.  
  131. // 9b26b7b2-acad-11d2-a093-00c04f72dc3c
  132. DEFINE_GUID(WIA_CMD_SYNCHRONIZE, 0x9b26b7b2, 0xacad, 0x11d2, 0xa0, 0x93, 0x00, 0xc0, 0x4f, 0x72, 0xdc, 0x3c);
  133.  
  134. // af933cac-acad-11d2-a093-00c04f72dc3c
  135. DEFINE_GUID(WIA_CMD_TAKE_PICTURE, 0xaf933cac, 0xacad, 0x11d2, 0xa0, 0x93, 0x00, 0xc0, 0x4f, 0x72, 0xdc, 0x3c);
  136.  
  137. // e208c170-acad-11d2-a093-00c04f72dc3c
  138. DEFINE_GUID(WIA_CMD_DELETE_ALL_ITEMS, 0xe208c170, 0xacad, 0x11d2, 0xa0, 0x93, 0x00, 0xc0, 0x4f, 0x72, 0xdc, 0x3c);
  139.  
  140. // 04e725b0-acae-11d2-a093-00c04f72dc3c
  141. DEFINE_GUID(WIA_CMD_CHANGE_DOCUMENT, 0x04e725b0, 0xacae, 0x11d2, 0xa0, 0x93, 0x00, 0xc0, 0x4f, 0x72, 0xdc, 0x3c);
  142.  
  143. // 1f3b3d8e-acae-11d2-a093-00c04f72dc3c
  144. DEFINE_GUID(WIA_CMD_UNLOAD_DOCUMENT, 0x1f3b3d8e, 0xacae, 0x11d2, 0xa0, 0x93, 0x00, 0xc0, 0x4f, 0x72, 0xdc, 0x3c);
  145.  
  146.  
  147. // The following are private commands for debugging use only.
  148.  
  149.  
  150. // 73815942-dbea-11d2-8416-00c04fa36145
  151. DEFINE_GUID(WIA_CMD_DELETE_DEVICE_TREE, 0x73815942, 0xdbea, 0x11d2, 0x84, 0x16, 0x00, 0xc0, 0x4f, 0xa3, 0x61, 0x45);
  152.  
  153. // 9cba5ce0-dbea-11d2-8416-00c04fa36145
  154. DEFINE_GUID(WIA_CMD_BUILD_DEVICE_TREE, 0x9cba5ce0, 0xdbea, 0x11d2, 0x84, 0x16, 0x00, 0xc0, 0x4f, 0xa3, 0x61, 0x45);
  155.  
  156.  
  157. //**************************************************************************
  158. //
  159. //
  160. //      WIA Icons
  161. //
  162. //          Event   : -1000 to -1499 (Standard), -1500 to -1999 (Custom)
  163. //          Command : -2000 to -2499 (Standard), -2500 to -2999 (Custom)
  164. //
  165. //**************************************************************************
  166.  
  167. #define WIA_ICON_DEVICE_DISCONNECTED    (L"sti.dll,-1000")
  168. #define WIA_ICON_DEVICE_CONNECTED       (L"sti.dll,-1001")
  169. #define WIA_ICON_ITEM_DELETED           (L"sti.dll,-1002")
  170. #define WIA_ICON_ITEM_CREATED           (L"sti.dll,-1003")
  171. #define WIA_ICON_VOLUME_INSERT          (L"sti.dll,-1004")
  172. #define WIA_ICON_SYNCHRONIZE            (L"sti.dll,-2000")
  173. #define WIA_ICON_TAKE_PICTURE           (L"sti.dll,-2001")
  174. #define WIA_ICON_DELETE_ALL_ITEMS       (L"sti.dll,-2002")
  175. #define WIA_ICON_CHANGE_DOCUMENT        (L"sti.dll,-2003")
  176. #define WIA_ICON_UNLOAD_DOCUMENT        (L"sti.dll,-2004")
  177. #define WIA_ICON_DELETE_DEVICE_TREE     (L"sti.dll,-2005")
  178. #define WIA_ICON_BUILD_DEVICE_TREE      (L"sti.dll,-2006")
  179.  
  180. //**************************************************************************
  181. //
  182. //
  183. //
  184. //      WIA Callbacks
  185. //
  186. //
  187. //
  188. //**************************************************************************
  189.  
  190. //
  191. //
  192. // IImageTransfer TYMED
  193. //
  194. // IImageTransfer constant, should be added to objidl.idl ???:
  195. //
  196.  
  197. #define TYMED_CALLBACK                          128
  198.  
  199. //
  200. // IImageTransfer Callback Status. Messages must be a
  201. // single value
  202. //
  203.  
  204. #define IT_MSG_DATA_HEADER                      0x0001
  205. #define IT_MSG_DATA                             0x0002
  206. #define IT_MSG_STATUS                           0x0003
  207. #define IT_MSG_TERMINATION                      0x0004
  208. #define IT_MSG_NEW_PAGE                         0x0005
  209.  
  210. //
  211. //  Flags may be bit field combinations
  212. //
  213.  
  214. #define IT_STATUS_TRANSFER_FROM_DEVICE          0x0001
  215. #define IT_STATUS_PROCESSING_DATA               0x0002
  216. #define IT_STATUS_TRANSFER_TO_CLIENT            0x0004
  217.  
  218. //
  219. // IWIAEventCallback codes
  220. //
  221.  
  222. #define WIA_MAJOR_EVENT_DEVICE_CONNECT          0x01
  223. #define WIA_MAJOR_EVENT_DEVICE_DISCONNECT       0x02
  224. #define WIA_MAJOR_EVENT_PICTURE_TAKEN           0x03
  225. #define WIA_MAJOR_EVENT_PICTURE_DELETED         0x04
  226.  
  227. //
  228. // device connection status
  229. //
  230.  
  231. #define  WIA_DEVICE_NOT_CONNECTED               0
  232. #define  WIA_DEVICE_CONNECTED                   1
  233.  
  234.  
  235. //**************************************************************************
  236. //
  237. //
  238. //
  239. //      WIA Enumeration Flags
  240. //
  241. //
  242. //
  243. //**************************************************************************
  244.  
  245. //
  246. // EnumDeviceCapabilities flags
  247. //
  248.  
  249. #define WIA_DEVICE_COMMANDS 1
  250. #define WIA_DEVICE_EVENTS 2
  251.  
  252.  
  253. //
  254. // EnumDeviceInfo Flags
  255. //
  256.  
  257. #define WIA_DEVINFO_ENUM_LOCAL                  0x00000010
  258.  
  259.  
  260. //**************************************************************************
  261. //
  262. //
  263. //
  264. //      WIA Item constants
  265. //
  266. //
  267. //
  268. //**************************************************************************
  269.  
  270. //
  271. // Item Types
  272. //
  273.  
  274. #define WiaItemTypeFree                         0x00000000
  275. #define WiaItemTypeImage                        0x00000001
  276. #define WiaItemTypeFile                         0x00000002
  277. #define WiaItemTypeFolder                       0x00000004
  278. #define WiaItemTypeRoot                         0x00000008
  279. #define WiaItemTypeAnalyze                      0x00000010
  280. #define WiaItemTypeAudio                        0x00000020
  281. #define WiaItemTypeDevice                       0x00000040
  282. #define WiaItemTypeDeleted                      0x00000080
  283. #define WiaItemTypeDisconnected                 0x00000100
  284.  
  285. #define WiaItemTypeMask                         0x000001FF
  286.  
  287. //
  288. // big max device specific item context, may want smaller
  289. //
  290.  
  291. #define WIA_MAX_CTX_SIZE                        0x01000000
  292.  
  293. //**************************************************************************
  294. //
  295. //
  296. //
  297. //      WIA Properties
  298. //
  299. //
  300. //
  301. //**************************************************************************
  302.  
  303.  
  304. /*******************************************************************************
  305. //
  306. // WIA_PROPERTY_INFO
  307. //
  308. //   This information is available for every WIA property
  309. //
  310. // Elements
  311. //
  312. //   lSize        - size of this structure
  313. //   lAccessFlags - r/w access of property
  314. //   vt           - vartype of property
  315. //   lInfoType    - info for prop values (none,range,array)
  316. //   Nom          - Nominal(default) value
  317. //   Min          - range min
  318. //   Max          - range max
  319. //   Inc          - range increment
  320. //   cNumList     - number of elements in list
  321. //   pList        - pointer to list of elements
  322. //
  323. //*******************************************************************************/
  324.  
  325. #define WIA_PROP_READ            0x01
  326. #define WIA_PROP_WRITE           0x02
  327. #define WIA_PROP_RW              WIA_PROP_READ | WIA_PROP_WRITE
  328. #define WIA_PROP_SYNC_REQUIRED   0x04
  329.  
  330. #define WIA_PROP_NONE            0x08
  331. #define WIA_PROP_RANGE           0x10
  332. #define WIA_PROP_LIST            0x20
  333. #define WIA_PROP_FLAG            0x40
  334.  
  335. #define WIA_PROP_CACHEABLE       0x10000
  336.  
  337. //
  338. // Specify that the item can be deleted from the device
  339. //
  340.  
  341. #define WIA_ITEM_CAN_BE_DELETED  0x80
  342. #define WIA_ITEM_READ            WIA_PROP_READ
  343. #define WIA_ITEM_WRITE           WIA_PROP_WRITE
  344. #define WIA_ITEM_RD              (WIA_ITEM_READ | WIA_ITEM_CAN_BE_DELETED)
  345. #define WIA_ITEM_RWD             (WIA_ITEM_READ | WIA_ITEM_WRITE | WIA_ITEM_CAN_BE_DELETED)
  346.  
  347.  
  348. #ifndef __WIAPROP_H_INCLUDED
  349. #define __WIAPROP_H_INCLUDED
  350.  
  351. //
  352. // Device Information Property ID constants. Device information properties
  353. // are present on all WIA devices. These property values are stored in the
  354. // registry and copied to each device when the device object is created. These
  355. // properties are only written by setup applications and are not writable by
  356. // normal applications
  357. //
  358. //
  359. // ! Remember: all propids must have a string and extension string defined and
  360. //   all properties must be added to the correct array of PROPID/PROPNAMES  in
  361. //   wiapropp.h and the propid/name mapping array: g_wiaPropIdToName. 
  362. //
  363. // 
  364. //
  365.  
  366. #define WIA_RESERVED_FOR_NEW_PROPS              1024
  367.  
  368. #define WIA_DIP_FIRST                           2
  369. #define WIA_DIP_DEV_ID                          2
  370. #define WIA_DIP_VEND_DESC                       3
  371. #define WIA_DIP_DEV_DESC                        4
  372. #define WIA_DIP_DEV_TYPE                        5
  373. #define WIA_DIP_PORT_NAME                       6
  374. #define WIA_DIP_DEV_NAME                        7
  375. #define WIA_DIP_SERVER_NAME                     8
  376. #define WIA_DIP_REMOTE_DEV_ID                   9
  377. #define WIA_DIP_UI_CLSID                        10
  378. #define WIA_DIP_LAST                            10
  379.  
  380. #define WIA_NUM_DIP          1 + WIA_DIP_LAST - WIA_DIP_FIRST
  381.  
  382. #define WIA_DIP_DEV_ID_STR                      L"Unique Device ID"
  383. #define WIA_DIP_VEND_DESC_STR                   L"Manufacturer"
  384. #define WIA_DIP_DEV_DESC_STR                    L"Description"
  385. #define WIA_DIP_DEV_TYPE_STR                    L"Type"
  386. #define WIA_DIP_PORT_NAME_STR                   L"Port"
  387. #define WIA_DIP_DEV_NAME_STR                    L"Name"
  388. #define WIA_DIP_SERVER_NAME_STR                 L"Server"
  389. #define WIA_DIP_REMOTE_DEV_ID_STR               L"Remote Device ID"
  390. #define WIA_DIP_UI_CLSID_STR                    L"UI Class ID"
  391.  
  392. //
  393. // constant arrays for device information property init
  394. //
  395.  
  396. #ifdef WIA_DECLARE_DEVINFO_PROP_ARRAY
  397.  
  398. PROPSPEC g_psDeviceInfo[WIA_NUM_DIP] =
  399. {
  400.     {PRSPEC_PROPID, WIA_DIP_DEV_ID},
  401.     {PRSPEC_PROPID, WIA_DIP_VEND_DESC},
  402.     {PRSPEC_PROPID, WIA_DIP_DEV_DESC},
  403.     {PRSPEC_PROPID, WIA_DIP_DEV_TYPE},
  404.     {PRSPEC_PROPID, WIA_DIP_PORT_NAME},
  405.     {PRSPEC_PROPID, WIA_DIP_DEV_NAME},
  406.     {PRSPEC_PROPID, WIA_DIP_SERVER_NAME},
  407.     {PRSPEC_PROPID, WIA_DIP_REMOTE_DEV_ID},
  408.     {PRSPEC_PROPID, WIA_DIP_UI_CLSID}
  409. };
  410.  
  411. PROPID g_piDeviceInfo[WIA_NUM_DIP] =
  412. {
  413.     WIA_DIP_DEV_ID,
  414.     WIA_DIP_VEND_DESC,
  415.     WIA_DIP_DEV_DESC,
  416.     WIA_DIP_DEV_TYPE,
  417.     WIA_DIP_PORT_NAME,
  418.     WIA_DIP_DEV_NAME,
  419.     WIA_DIP_SERVER_NAME,
  420.     WIA_DIP_REMOTE_DEV_ID,
  421.     WIA_DIP_UI_CLSID,
  422. };
  423.  
  424. LPOLESTR g_pszDeviceInfo[WIA_NUM_DIP] =
  425. {
  426.     WIA_DIP_DEV_ID_STR,
  427.     WIA_DIP_VEND_DESC_STR,
  428.     WIA_DIP_DEV_DESC_STR,
  429.     WIA_DIP_DEV_TYPE_STR,
  430.     WIA_DIP_PORT_NAME_STR,
  431.     WIA_DIP_DEV_NAME_STR,
  432.     WIA_DIP_SERVER_NAME_STR,
  433.     WIA_DIP_REMOTE_DEV_ID_STR,
  434.     WIA_DIP_UI_CLSID_STR,
  435. };
  436.  
  437. #else
  438.  
  439. extern PROPSPEC             g_psDeviceInfo[WIA_NUM_DIP];
  440. extern PROPID               g_piDeviceInfo[WIA_NUM_DIP];
  441. extern LPOLESTR             g_pszDeviceInfo[WIA_NUM_DIP];
  442.  
  443. #endif
  444.  
  445. //
  446. // In addition to device information properties, wia devices have r/w properties
  447. // associated with both the Device object and the Item object. Device properties
  448. // represent device level information such as connection status, device time,
  449. // current number of items... There are some device properties that would only relate
  450. // to a camera device, such as ShutterSpeed, FocusMode, number of picts remaining.
  451. //
  452.  
  453. //
  454. // common device properties (DPA)
  455. //
  456.  
  457. #define WIA_DPA_FIRST                           WIA_DIP_FIRST + WIA_RESERVED_FOR_NEW_PROPS
  458. #define WIA_DPA_FIRMWARE_VERSION                WIA_DPA_FIRST + 0
  459. #define WIA_DPA_CONNECT_STATUS                  WIA_DPA_FIRST + 1
  460. #define WIA_DPA_DEVICE_TIME                     WIA_DPA_FIRST + 2
  461. #define WIA_DPA_LAST                            WIA_DPA_FIRST + 2
  462.  
  463. #define WIA_DPA_FIRMWARE_VERSION_STR            L"Firmware Version"
  464. #define WIA_DPA_CONNECT_STATUS_STR              L"Connect Status"
  465. #define WIA_DPA_DEVICE_TIME_STR                 L"Device Time"
  466.  
  467. #define WIA_NUM_DPA  1 + WIA_DPA_LAST - WIA_DPA_FIRST
  468.  
  469. //
  470. // camera only device properties (DPC)
  471. //
  472.  
  473. #define WIA_DPC_FIRST                           WIA_DPA_FIRST + WIA_RESERVED_FOR_NEW_PROPS
  474. #define WIA_DPC_PICTURES_TAKEN                  WIA_DPC_FIRST + 0
  475. #define WIA_DPC_PICTURES_REMAINING              WIA_DPC_FIRST + 1
  476. #define WIA_DPC_EXPOSURE_MODE                   WIA_DPC_FIRST + 2
  477. #define WIA_DPC_EXPOSURE_COMP                   WIA_DPC_FIRST + 3
  478. #define WIA_DPC_EXPOSURE_TIME                   WIA_DPC_FIRST + 4
  479. #define WIA_DPC_FNUMBER                         WIA_DPC_FIRST + 5
  480. #define WIA_DPC_FLASH_MODE                      WIA_DPC_FIRST + 6
  481. #define WIA_DPC_FOCUS_MODE                      WIA_DPC_FIRST + 7
  482. #define WIA_DPC_FOCUS_MANUAL_DIST               WIA_DPC_FIRST + 8
  483. #define WIA_DPC_ZOOM_POSITION                   WIA_DPC_FIRST + 9
  484. #define WIA_DPC_PAN_POSITION                    WIA_DPC_FIRST + 10
  485. #define WIA_DPC_TILT_POSITION                   WIA_DPC_FIRST + 11
  486. #define WIA_DPC_TIMER_MODE                      WIA_DPC_FIRST + 12
  487. #define WIA_DPC_TIMER_VALUE                     WIA_DPC_FIRST + 13
  488. #define WIA_DPC_POWER_MODE                      WIA_DPC_FIRST + 14
  489. #define WIA_DPC_BATTERY_STATUS                  WIA_DPC_FIRST + 15
  490. #define WIA_DPC_THUMB_WIDTH                     WIA_DPC_FIRST + 16
  491. #define WIA_DPC_THUMB_HEIGHT                    WIA_DPC_FIRST + 17
  492. #define WIA_DPC_PICT_WIDTH                      WIA_DPC_FIRST + 18
  493. #define WIA_DPC_PICT_HEIGHT                     WIA_DPC_FIRST + 19
  494. #define WIA_DPC_LAST                            WIA_DPC_FIRST + 20
  495.  
  496. #define WIA_NUM_DPC              1 + WIA_DPC_LAST - WIA_DPC_FIRST
  497.  
  498. #define WIA_DPC_PICTURES_TAKEN_STR              L"Pictures Taken"
  499. #define WIA_DPC_PICTURES_REMAINING_STR          L"Pictures Remaining"
  500. #define WIA_DPC_EXPOSURE_MODE_STR               L"Exposure Mode"
  501. #define WIA_DPC_EXPOSURE_COMP_STR               L"Exposure Compensation"
  502. #define WIA_DPC_EXPOSURE_TIME_STR               L"Exposure Time"
  503. #define WIA_DPC_FNUMBER_STR                     L"F Number"
  504. #define WIA_DPC_FLASH_MODE_STR                  L"Flash Mode"
  505. #define WIA_DPC_FOCUS_MODE_STR                  L"Focus Mode"
  506. #define WIA_DPC_FOCUS_MANUAL_DIST_STR           L"Focus Manual Dist"
  507. #define WIA_DPC_ZOOM_POSITION_STR               L"Zoom Position"
  508. #define WIA_DPC_PAN_POSITION_STR                L"Pan Position"
  509. #define WIA_DPC_TILT_POSITION_STR               L"Tilt Position"
  510. #define WIA_DPC_TIMER_MODE_STR                  L"Timer Mode"
  511. #define WIA_DPC_TIMER_VALUE_STR                 L"Timer Value"
  512. #define WIA_DPC_POWER_MODE_STR                  L"Power Mode"
  513. #define WIA_DPC_BATTERY_STATUS_STR              L"Battery Status"
  514. #define WIA_DPC_THUMB_WIDTH_STR                 L"Thumbnail Width"
  515. #define WIA_DPC_THUMB_HEIGHT_STR                L"Thumbnail Height"
  516. #define WIA_DPC_PICT_WIDTH_STR                  L"Picture Width"
  517. #define WIA_DPC_PICT_HEIGHT_STR                 L"Picture Height"
  518.  
  519. //
  520. // Scanner only device properties (DPS)
  521. //
  522.  
  523. #define WIA_DPS_FIRST                          WIA_DPC_FIRST + WIA_RESERVED_FOR_NEW_PROPS
  524. #define WIA_DPS_HORIZONTAL_BED_SIZE            WIA_DPS_FIRST + 0
  525. #define WIA_DPS_VERTICAL_BED_SIZE              WIA_DPS_FIRST + 1
  526. #define WIA_DPS_HORIZONTAL_SHEET_FEED_SIZE     WIA_DPS_FIRST + 2
  527. #define WIA_DPS_VERTICAL_SHEET_FEED_SIZE       WIA_DPS_FIRST + 3
  528. #define WIA_DPS_SHEET_FEEDER_REGISTRATION      WIA_DPS_FIRST + 4
  529. #define WIA_DPS_HORIZONTAL_BED_REGISTRATION    WIA_DPS_FIRST + 5
  530. #define WIA_DPS_VERTICAL_BED_REGISTRATION      WIA_DPS_FIRST + 6
  531. #define WIA_DPS_PLATEN_COLOR                   WIA_DPS_FIRST + 7
  532. #define WIA_DPS_PAD_COLOR                      WIA_DPS_FIRST + 8
  533. #define WIA_DPS_FILTER_SELECT                  WIA_DPS_FIRST + 9
  534. #define WIA_DPS_DITHER_SELECT                  WIA_DPS_FIRST + 10
  535. #define WIA_DPS_DITHER_PATTERN_DATA            WIA_DPS_FIRST + 11
  536. #define WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES WIA_DPS_FIRST + 12
  537. #define WIA_DPS_DOCUMENT_HANDLING_STATUS       WIA_DPS_FIRST + 13
  538. #define WIA_DPS_DOCUMENT_HANDLING_SELECT       WIA_DPS_FIRST + 14
  539. #define WIA_DPS_DOCUMENT_HANDLING_CAPACITY     WIA_DPS_FIRST + 15
  540. #define WIA_DPS_OPTICAL_XRES                   WIA_DPS_FIRST + 16
  541. #define WIA_DPS_OPTICAL_YRES                   WIA_DPS_FIRST + 17
  542. #define WIA_DPS_ENDORSER_CHARACTERS            WIA_DPS_FIRST + 18
  543. #define WIA_DPS_ENDORSER_STRING                WIA_DPS_FIRST + 19
  544. #define WIA_DPS_SCAN_AHEAD_PAGES               WIA_DPS_FIRST + 20
  545. #define WIA_DPS_MAX_SCAN_TIME                  WIA_DPS_FIRST + 21
  546. #define WIA_DPS_PAGES                          WIA_DPS_FIRST + 22
  547. #define WIA_DPS_PAGE_SIZE                      WIA_DPS_FIRST + 23
  548. #define WIA_DPS_PAGE_WIDTH                     WIA_DPS_FIRST + 24
  549. #define WIA_DPS_PAGE_HEIGHT                    WIA_DPS_FIRST + 25
  550. #define WIA_DPS_LAST                           WIA_DPS_FIRST + 25
  551.  
  552. #define WIA_NUM_DPS          1 + WIA_DPS_LAST - WIA_DPS_FIRST
  553.  
  554. #define WIA_DPS_HORIZONTAL_BED_SIZE_STR                L"Horizontal Bed Size"
  555. #define WIA_DPS_VERTICAL_BED_SIZE_STR                  L"Vertical Bed Size"
  556. #define WIA_DPS_HORIZONTAL_SHEET_FEED_SIZE_STR         L"Horizontal Sheet Feed Size"
  557. #define WIA_DPS_VERTICAL_SHEET_FEED_SIZE_STR           L"Vertical Sheet Feed Size"
  558. #define WIA_DPS_SHEET_FEEDER_REGISTRATION_STR          L"Sheet Feeder Registration"
  559. #define WIA_DPS_HORIZONTAL_BED_REGISTRATION_STR        L"Horizontal Bed Registration"
  560. #define WIA_DPS_VERTICAL_BED_REGISTRATION_STR          L"Vertical Bed Registration"
  561. #define WIA_DPS_PLATEN_COLOR_STR                       L"Platen Color"
  562. #define WIA_DPS_PAD_COLOR_STR                          L"Pad Color"
  563. #define WIA_DPS_FILTER_SELECT_STR                      L"Filter Select"
  564. #define WIA_DPS_DITHER_SELECT_STR                      L"Dither Select"
  565. #define WIA_DPS_DITHER_PATTERN_DATA_STR                L"Dither Pattern Data"
  566. #define WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES_STR     L"Document Handling Capabilities"
  567. #define WIA_DPS_DOCUMENT_HANDLING_STATUS_STR           L"Document Handling Status"
  568. #define WIA_DPS_DOCUMENT_HANDLING_SELECT_STR           L"Document Handling Select"
  569. #define WIA_DPS_DOCUMENT_HANDLING_CAPACITY_STR         L"Document Handling Capacity"
  570. #define WIA_DPS_OPTICAL_XRES_STR                       L"Horizontal Optical Resolution"
  571. #define WIA_DPS_OPTICAL_YRES_STR                       L"Vertical Optical Resolution"
  572. #define WIA_DPS_ENDORSER_CHARACTERS_STR                L"Endorser Characters"
  573. #define WIA_DPS_ENDORSER_STRING_STR                    L"Endorser String"
  574. #define WIA_DPS_SCAN_AHEAD_PAGES_STR                   L"Scan Ahead Pages"
  575. #define WIA_DPS_MAX_SCAN_TIME_STR                      L"Max Scan Time"
  576. #define WIA_DPS_PAGES_STR                              L"Pages"
  577. #define WIA_DPS_PAGE_SIZE_STR                          L"Page Size"
  578. #define WIA_DPS_PAGE_WIDTH_STR                         L"Page Width"
  579. #define WIA_DPS_PAGE_HEIGHT_STR                        L"Page Height"
  580.  
  581. //
  582. // Constants used with scanner only device properties (DPS)
  583. //
  584.  
  585. //
  586. // WIA_DPS_SHEET_FEEDER_REGISTRATION and
  587. // WIA_DPS_HORIZONTAL_BED_REGISTRATION constants:
  588. //
  589.  
  590. #define  LEFT_JUSTIFIED             0
  591. #define  CENTERED                   1
  592. #define  RIGHT_JUSTIFIED            2
  593.  
  594. //
  595. // WIA_DPS_VERTICAL_BED_REGISTRATION constants:
  596. //
  597.  
  598. #define  TOP_JUSTIFIED              0
  599. #define  CENTERED                   1
  600. #define  BOTTOM_JUSTIFIED           2
  601.  
  602. //
  603. // WIA_DPS_ORIENTATION and WIA_DPS_ROTATION constants:
  604. //
  605.  
  606. #define  PORTRAIT                   0
  607. #define  LANSCAPE                   1
  608. #define  ROT180                     2
  609. #define  ROT270                     3
  610.  
  611. //
  612. // WIA_DPS_MIRROR flags:
  613. //
  614.  
  615. #define  MIRRORED                   0x01
  616.  
  617. //
  618. // WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES flags:
  619. //
  620.  
  621. #define  FEED                       0x01
  622. #define  FLAT                       0x02
  623. #define  DETECT_FLAT                0x04
  624. #define  DETECT_SCAN                0x08
  625. #define  DETECT_FEED                0x10
  626. #define  DETECT_DUP                 0x20
  627.  
  628. //
  629. // WIA_DPS_DOCUMENT_HANDLING_STATUS flags:
  630. //
  631.  
  632. #define  FEED_READY                 0x01
  633. #define  FLAT_READY                 0x02
  634. #define  DUP_READY                  0x04
  635. #define  FLAT_COVER_UP              0x08
  636. #define  PATH_COVER_UP              0x10
  637. #define  PAPER_JAM                  0x20
  638.  
  639. //
  640. // WIA_DPS_DOCUMENT_HANDLING_SELECT flags:
  641. //
  642.  
  643. #define  FEEDER                     0x001
  644. #define  FLATBED                    0x002
  645. #define  DUPLEX                     0x004
  646. #define  FRONT_FIRST                0x008
  647. #define  BACK_FIRST                 0x010
  648. #define  FRONT_ONLY                 0x020
  649. #define  BACK_ONLY                  0x040
  650. #define  NEXT_PAGE                  0x080
  651. #define  PREFEED                    0x100
  652. #define  AUTO_ADVANCE               0x200
  653.  
  654. //
  655. // WIA_DPS_SCAN_AHEAD_PAGES constants:
  656. //
  657.  
  658. #define  WIA_SCAN_AHEAD_ALL         0
  659.  
  660.  
  661. //
  662. // WIA_DPS_PAGES constants:
  663. //
  664.  
  665. #define  ALL_PAGES                  0
  666.  
  667.  
  668. //
  669. // Common WIA Item properties. Item properties are used
  670. // to determine characteristics of the item and/or to set preferences
  671. // for item acquisition
  672. //
  673.  
  674. #define WIA_IPA_FIRST                          WIA_DPS_FIRST + WIA_RESERVED_FOR_NEW_PROPS
  675. #define WIA_IPA_ITEM_NAME                      WIA_IPA_FIRST + 0
  676. #define WIA_IPA_FULL_ITEM_NAME                 WIA_IPA_FIRST + 1
  677. #define WIA_IPA_ITEM_TIME                      WIA_IPA_FIRST + 2
  678. #define WIA_IPA_ITEM_FLAGS                     WIA_IPA_FIRST + 3
  679. #define WIA_IPA_ACCESS_RIGHTS                  WIA_IPA_FIRST + 4
  680. #define WIA_IPA_DATATYPE                       WIA_IPA_FIRST + 5
  681. #define WIA_IPA_DEPTH                          WIA_IPA_FIRST + 6
  682. #define WIA_IPA_PREFERRED_FORMAT               WIA_IPA_FIRST + 7
  683. #define WIA_IPA_FORMAT                         WIA_IPA_FIRST + 8
  684. #define WIA_IPA_COMPRESSION                    WIA_IPA_FIRST + 9
  685. #define WIA_IPA_TYMED                          WIA_IPA_FIRST + 10
  686. #define WIA_IPA_CHANNELS_PER_PIXEL             WIA_IPA_FIRST + 11
  687. #define WIA_IPA_BITS_PER_CHANNEL               WIA_IPA_FIRST + 12
  688. #define WIA_IPA_PLANAR                         WIA_IPA_FIRST + 13
  689. #define WIA_IPA_PIXELS_PER_LINE                WIA_IPA_FIRST + 14
  690. #define WIA_IPA_BYTES_PER_LINE                 WIA_IPA_FIRST + 15
  691. #define WIA_IPA_NUMBER_OF_LINES                WIA_IPA_FIRST + 16
  692. #define WIA_IPA_GAMMA_CURVES                   WIA_IPA_FIRST + 17
  693. #define WIA_IPA_ITEM_SIZE                      WIA_IPA_FIRST + 18
  694. #define WIA_IPA_COLOR_PROFILE                  WIA_IPA_FIRST + 19
  695. #define WIA_IPA_MIN_BUFFER_SIZE                WIA_IPA_FIRST + 20
  696. #define WIA_IPA_REGION_TYPE                    WIA_IPA_FIRST + 21
  697. #define WIA_IPA_LAST                           WIA_IPA_FIRST + 21
  698.  
  699. #define  WIA_NUM_IPA         1 + WIA_IPA_LAST - WIA_IPA_FIRST
  700.  
  701. #define  WIA_IPA_ITEM_NAME_STR                  L"Item Name"
  702. #define  WIA_IPA_FULL_ITEM_NAME_STR             L"Full Item Name"
  703. #define  WIA_IPA_ITEM_TIME_STR                  L"Item Time Stamp"
  704. #define  WIA_IPA_ITEM_FLAGS_STR                 L"Item Flags"
  705. #define  WIA_IPA_ACCESS_RIGHTS_STR              L"Access Rights"
  706. #define  WIA_IPA_DATATYPE_STR                   L"Data Type"
  707. #define  WIA_IPA_DEPTH_STR                      L"Bits Per Pixel"
  708. #define  WIA_IPA_PREFERRED_FORMAT_STR           L"Preferred Format"
  709. #define  WIA_IPA_FORMAT_STR                     L"Format"
  710. #define  WIA_IPA_COMPRESSION_STR                L"Compression"
  711. #define  WIA_IPA_TYMED_STR                      L"Media Type"
  712. #define  WIA_IPA_CHANNELS_PER_PIXEL_STR         L"Channels Per Pixel"
  713. #define  WIA_IPA_BITS_PER_CHANNEL_STR           L"Bits Per Channel"
  714. #define  WIA_IPA_PLANAR_STR                     L"Planar"
  715. #define  WIA_IPA_PIXELS_PER_LINE_STR            L"Pixels Per Line"
  716. #define  WIA_IPA_BYTES_PER_LINE_STR             L"Bytes Per Line"
  717. #define  WIA_IPA_NUMBER_OF_LINES_STR            L"Number of Lines"
  718. #define  WIA_IPA_GAMMA_CURVES_STR               L"Gamma Curves"
  719. #define  WIA_IPA_ITEM_SIZE_STR                  L"Item Size"
  720. #define  WIA_IPA_COLOR_PROFILE_STR              L"Color Profiles"
  721. #define  WIA_IPA_MIN_BUFFER_SIZE_STR            L"Minimum Buffer Size"
  722. #define  WIA_IPA_REGION_TYPE_STR                L"Region Type"
  723.  
  724. //                                              
  725. // Constants used with the WIA item properties: 
  726. //
  727.  
  728. //
  729. //  Page size constants
  730. //
  731.  
  732. #define WIA_PAGE_A4         0
  733. #define WIA_PAGE_LETTER     1
  734. #define WIA_PAGE_CUSTOM     2
  735.  
  736. #define WIA_PAGE_LETTER_WIDTH       8500
  737. #define WIA_PAGE_LETTER_HEIGHT      10500
  738.  
  739.  
  740. //
  741. //  FORMAT FLAGS constants:
  742. //
  743.  
  744. #define WIA_TOPDOWN                 0x00000001  // biHeight must be negative
  745. #define WIA_BOTTOMUP                0x00000002  // biHeight must be positive
  746.  
  747. //
  748. // temp new format defn
  749. //
  750. // !!! These definitions need to be merged with OS definitions
  751. // of clipformat ???
  752. //
  753.  
  754. #define CF_JPEG                                 19
  755. #define CF_TOPDOWN_DIB                          20
  756. #define CF_BOTTOMUP_DIB                         CF_DIB
  757. #define CF_MULTI_TIFF                           22
  758.  
  759. //
  760. // WIA_IPA_COMPRESSION constants:
  761. //
  762.  
  763. #define WIA_COMPRESSION_NONE        0
  764. #define WIA_COMPRESSION_BI_RLE4     1
  765. #define WIA_COMPRESSION_BI_RLE8     2
  766. #define WIA_COMPRESSION_G3          3
  767.  
  768. //
  769. // planar -vs- packed
  770. //
  771.  
  772. #define WIA_PACKED_PIXEL            0
  773. #define WIA_PLANAR                  1
  774.  
  775. //
  776. // Constants for DataType property
  777. //
  778.  
  779. #define WIA_DATA_THRESHOLD                      0
  780. #define WIA_DATA_DITHER                         1
  781. #define WIA_DATA_GRAYSCALE                      2
  782. #define WIA_DATA_COLOR                          3
  783. #define WIA_DATA_COLOR_THRESHOLD                4
  784. #define WIA_DATA_COLOR_DITHER                   5
  785.  
  786. //
  787. // camera specific item properties IPC
  788. //
  789.  
  790. #define WIA_IPC_FIRST                          WIA_IPA_FIRST + WIA_RESERVED_FOR_NEW_PROPS
  791. #define WIA_IPC_THUMBNAIL                      WIA_IPC_FIRST + 0
  792. #define WIA_IPC_THUMB_WIDTH                    WIA_IPC_FIRST + 1
  793. #define WIA_IPC_THUMB_HEIGHT                   WIA_IPC_FIRST + 2
  794. #define WIA_IPC_AUDIO_AVAILABLE                WIA_IPC_FIRST + 3
  795. #define WIA_IPC_AUDIO_DATA_FORMAT              WIA_IPC_FIRST + 4
  796. #define WIA_IPC_AUDIO_DATA                     WIA_IPC_FIRST + 5
  797. #define WIA_IPC_LAST                           WIA_IPC_FIRST + 5
  798.  
  799. #define WIA_NUM_IPC         1 + WIA_IPC_LAST - WIA_IPC_FIRST
  800.  
  801. #define WIA_IPC_THUMBNAIL_STR                  L"Thumbnail Data"
  802. #define WIA_IPC_THUMB_WIDTH_STR                L"Thumbnail Width"
  803. #define WIA_IPC_THUMB_HEIGHT_STR               L"Thumbnail Height"
  804. #define WIA_IPC_AUDIO_AVAILABLE_STR            L"Audio Available"
  805. #define WIA_IPC_AUDIO_DATA_FORMAT_STR          L"Audio Format"
  806. #define WIA_IPC_AUDIO_DATA_STR                 L"Audio Data"
  807.  
  808.  
  809. //
  810. // Scanner specific Item properties IPS
  811. //
  812. #define WIA_IPS_FIRST                          WIA_IPC_FIRST + WIA_RESERVED_FOR_NEW_PROPS
  813. #define WIA_IPS_CUR_INTENT                     WIA_IPS_FIRST + 0
  814. #define WIA_IPS_XRES                           WIA_IPS_FIRST + 1
  815. #define WIA_IPS_YRES                           WIA_IPS_FIRST + 2 
  816. #define WIA_IPS_XPOS                           WIA_IPS_FIRST + 3 
  817. #define WIA_IPS_YPOS                           WIA_IPS_FIRST + 4 
  818. #define WIA_IPS_XEXTENT                        WIA_IPS_FIRST + 5 
  819. #define WIA_IPS_YEXTENT                        WIA_IPS_FIRST + 6 
  820. #define WIA_IPS_PHOTOMETRIC_INTERP             WIA_IPS_FIRST + 7 
  821. #define WIA_IPS_BRIGHTNESS                     WIA_IPS_FIRST + 8 
  822. #define WIA_IPS_CONTRAST                       WIA_IPS_FIRST + 9 
  823. #define WIA_IPS_ORIENTATION                    WIA_IPS_FIRST + 10 
  824. #define WIA_IPS_ROTATION                       WIA_IPS_FIRST + 11 
  825. #define WIA_IPS_MIRROR                         WIA_IPS_FIRST + 12
  826. #define WIA_IPS_THRESHOLD                      WIA_IPS_FIRST + 13
  827. #define WIA_IPS_LAST                           WIA_IPS_FIRST + 13
  828.  
  829. #define WIA_NUM_IPS         1 + WIA_IPS_LAST - WIA_IPS_FIRST
  830.  
  831. #define WIA_IPS_CUR_INTENT_STR                 L"Current Intent"
  832. #define WIA_IPS_XRES_STR                       L"Horizontal Resolution"
  833. #define WIA_IPS_YRES_STR                       L"Vertical Resolution"
  834. #define WIA_IPS_XPOS_STR                       L"Horizontal Start Position"
  835. #define WIA_IPS_YPOS_STR                       L"Vertical Start Position"
  836. #define WIA_IPS_XEXTENT_STR                    L"Horizontal Extent"
  837. #define WIA_IPS_YEXTENT_STR                    L"Vertical Extent"
  838. #define WIA_IPS_PHOTOMETRIC_INTERP_STR         L"Photometric Interpretation"
  839. #define WIA_IPS_BRIGHTNESS_STR                 L"Brightness"
  840. #define WIA_IPS_CONTRAST_STR                   L"Contrast"
  841. #define WIA_IPS_ORIENTATION_STR                L"Orientation"
  842. #define WIA_IPS_ROTATION_STR                   L"Rotation"
  843. #define WIA_IPS_MIRROR_STR                     L"Mirror"
  844. #define WIA_IPS_THRESHOLD_STR                  L"Threshold"
  845.  
  846. //
  847. // WIA_IPA_BRIGHTNESS  constants:
  848. //
  849.  
  850. #define  BRIGHTNESS_LIGHT           -1
  851. #define  BRIGHTNESS_AUTO            -2
  852. #define  BRIGHTNESS_NORM            -3
  853. #define  BRIGHTNESS_DARK            -4
  854.  
  855. //
  856. // WIA_IPA_CONTRAST  constants:
  857. //
  858.  
  859. #define  CONTRAST_AUTO              -1
  860.  
  861. //
  862. // WIA property itendifier. WIA extended properties give information
  863. // about the possible values the property may be set to.
  864. // Min, Max, Step are used to set up a range of legal values
  865. // Nom represents the default(nominal) value
  866. // Index constants for accessing range values from array.
  867. //
  868.  
  869. #define  WIA_RANGE_MIN                          0
  870. #define  WIA_RANGE_NOM                          1
  871. #define  WIA_RANGE_MAX                          2
  872. #define  WIA_RANGE_STEP                         3
  873. #define  WIA_RANGE_NUM_ELEMS                    4
  874.  
  875. #define  WIA_LIST_COUNT                         0
  876. #define  WIA_LIST_NOM                           1
  877. #define  WIA_LIST_VALUES                        2
  878. #define  WIA_LIST_NUM_ELEMS                     2
  879.  
  880. #define  WIA_FLAG_NOM                           0
  881. #define  WIA_FLAG_VALUES                        1
  882. #define  WIA_FLAG_NUM_ELEMS                     2
  883.  
  884. //
  885. // Intent image type constants
  886. // To provide an intent, use an image type and a size/quality flags or'ed together.
  887. // Both flags are optional, the driver or acquisition UI will provide defaults if either is
  888. // not present
  889. //
  890.                             
  891. #define WIA_INTENT_NONE                 0x00000000
  892. #define WIA_INTENT_IMAGE_TYPE_COLOR     0x00000001
  893. #define WIA_INTENT_IMAGE_TYPE_GRAYSCALE 0x00000002
  894. #define WIA_INTENT_IMAGE_TYPE_TEXT      0x00000004
  895. #define WIA_INTENT_IMAGE_TYPE_MASK      0x0000000F
  896.  
  897. //
  898. // Intent size / quality constants
  899. //
  900. #define WIA_INTENT_MINIMIZE_SIZE        0x00010000
  901. #define WIA_INTENT_MAXIMIZE_QUALITY     0x00020000
  902. #define WIA_INTENT_SIZE_MASK            0x000F0000
  903.  
  904. #define WIA_INTENT_USER                         100
  905.  
  906. //
  907. // remote Device info DIP
  908. //
  909.  
  910. #define WIA_PRIVATE_DEVPROP                     4096
  911. #define WIA_PRIVATE_ITEMPROP                    4096
  912.  
  913.  
  914. //
  915. // Property ID to name string mapping
  916. //
  917.  
  918. #ifdef DEFINE_WIA_PROPID_TO_NAME
  919.  
  920. WIA_PROPID_TO_NAME g_wiaPropIdToName[] = 
  921. {
  922.     {WIA_DIP_DEV_ID,                          WIA_DIP_DEV_ID_STR},
  923.     {WIA_DIP_VEND_DESC,                       WIA_DIP_VEND_DESC_STR},
  924.     {WIA_DIP_DEV_DESC,                        WIA_DIP_DEV_DESC_STR},
  925.     {WIA_DIP_DEV_TYPE,                        WIA_DIP_DEV_TYPE_STR},
  926.     {WIA_DIP_PORT_NAME,                       WIA_DIP_PORT_NAME_STR},
  927.     {WIA_DIP_DEV_NAME,                        WIA_DIP_DEV_NAME_STR},
  928.     {WIA_DIP_SERVER_NAME,                     WIA_DIP_SERVER_NAME_STR},
  929.     {WIA_DIP_REMOTE_DEV_ID,                   WIA_DIP_REMOTE_DEV_ID_STR},
  930.     {WIA_DIP_UI_CLSID,                        WIA_DIP_UI_CLSID_STR},
  931.     {WIA_DPA_FIRMWARE_VERSION,                WIA_DPA_FIRMWARE_VERSION_STR},
  932.     {WIA_DPA_CONNECT_STATUS,                  WIA_DPA_CONNECT_STATUS_STR},
  933.     {WIA_DPA_DEVICE_TIME,                     WIA_DPA_DEVICE_TIME_STR},
  934.     {WIA_DPC_PICTURES_TAKEN,                  WIA_DPC_PICTURES_TAKEN_STR},
  935.     {WIA_DPC_PICTURES_REMAINING,              WIA_DPC_PICTURES_REMAINING_STR},
  936.     {WIA_DPC_EXPOSURE_MODE,                   WIA_DPC_EXPOSURE_MODE_STR},
  937.     {WIA_DPC_EXPOSURE_COMP,                   WIA_DPC_EXPOSURE_COMP_STR},
  938.     {WIA_DPC_EXPOSURE_TIME,                   WIA_DPC_EXPOSURE_TIME_STR},
  939.     {WIA_DPC_FNUMBER,                         WIA_DPC_FNUMBER_STR},
  940.     {WIA_DPC_FLASH_MODE,                      WIA_DPC_FLASH_MODE_STR},
  941.     {WIA_DPC_FOCUS_MODE,                      WIA_DPC_FOCUS_MODE_STR},
  942.     {WIA_DPC_FOCUS_MANUAL_DIST,               WIA_DPC_FOCUS_MANUAL_DIST_STR},
  943.     {WIA_DPC_ZOOM_POSITION,                   WIA_DPC_ZOOM_POSITION_STR},
  944.     {WIA_DPC_PAN_POSITION,                    WIA_DPC_PAN_POSITION_STR},
  945.     {WIA_DPC_TILT_POSITION,                   WIA_DPC_TILT_POSITION_STR},
  946.     {WIA_DPC_TIMER_MODE,                      WIA_DPC_TIMER_MODE_STR},
  947.     {WIA_DPC_TIMER_VALUE,                     WIA_DPC_TIMER_VALUE_STR},
  948.     {WIA_DPC_POWER_MODE,                      WIA_DPC_POWER_MODE_STR},
  949.     {WIA_DPC_BATTERY_STATUS,                  WIA_DPC_BATTERY_STATUS_STR},
  950.     {WIA_DPS_HORIZONTAL_BED_SIZE,             WIA_DPS_HORIZONTAL_BED_SIZE_STR},
  951.     {WIA_DPS_VERTICAL_BED_SIZE,               WIA_DPS_VERTICAL_BED_SIZE_STR},
  952.     {WIA_DPS_HORIZONTAL_SHEET_FEED_SIZE,      WIA_DPS_HORIZONTAL_SHEET_FEED_SIZE_STR},
  953.     {WIA_DPS_VERTICAL_SHEET_FEED_SIZE,        WIA_DPS_VERTICAL_SHEET_FEED_SIZE_STR},
  954.     {WIA_DPS_SHEET_FEEDER_REGISTRATION,       WIA_DPS_SHEET_FEEDER_REGISTRATION_STR},
  955.     {WIA_DPS_HORIZONTAL_BED_REGISTRATION,     WIA_DPS_HORIZONTAL_BED_REGISTRATION_STR},
  956.     {WIA_DPS_VERTICAL_BED_REGISTRATION,       WIA_DPS_VERTICAL_BED_REGISTRATION_STR},
  957.     {WIA_DPS_PLATEN_COLOR,                    WIA_DPS_PLATEN_COLOR_STR},
  958.     {WIA_DPS_PAD_COLOR,                       WIA_DPS_PAD_COLOR_STR},
  959.     {WIA_DPS_FILTER_SELECT,                   WIA_DPS_FILTER_SELECT_STR},
  960.     {WIA_DPS_DITHER_SELECT,                   WIA_DPS_DITHER_SELECT_STR},
  961.     {WIA_DPS_DITHER_PATTERN_DATA,             WIA_DPS_DITHER_PATTERN_DATA_STR},
  962.     {WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES,  WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES_STR},
  963.     {WIA_DPS_DOCUMENT_HANDLING_STATUS,        WIA_DPS_DOCUMENT_HANDLING_STATUS_STR},
  964.     {WIA_DPS_DOCUMENT_HANDLING_SELECT,        WIA_DPS_DOCUMENT_HANDLING_SELECT_STR},
  965.     {WIA_DPS_DOCUMENT_HANDLING_CAPACITY,      WIA_DPS_DOCUMENT_HANDLING_CAPACITY_STR},
  966.     {WIA_DPS_OPTICAL_XRES,                    WIA_DPS_OPTICAL_XRES_STR},
  967.     {WIA_DPS_OPTICAL_YRES,                    WIA_DPS_OPTICAL_YRES_STR},
  968.     {WIA_DPS_ENDORSER_CHARACTERS,             WIA_DPS_ENDORSER_CHARACTERS_STR},
  969.     {WIA_DPS_ENDORSER_STRING,                 WIA_DPS_ENDORSER_STRING_STR},
  970.     {WIA_DPS_SCAN_AHEAD_PAGES,                WIA_DPS_SCAN_AHEAD_PAGES_STR},
  971.     {WIA_DPS_MAX_SCAN_TIME,                   WIA_DPS_MAX_SCAN_TIME_STR},
  972.     {WIA_DPS_PAGES,                           WIA_DPS_PAGES_STR},
  973.     {WIA_DPS_PAGE_SIZE,                       WIA_DPS_PAGE_SIZE_STR},
  974.     {WIA_DPS_PAGE_WIDTH,                      WIA_DPS_PAGE_WIDTH_STR},
  975.     {WIA_DPS_PAGE_HEIGHT,                     WIA_DPS_PAGE_HEIGHT_STR},
  976.     {WIA_IPA_ITEM_NAME,                       WIA_IPA_ITEM_NAME_STR},
  977.     {WIA_IPA_FULL_ITEM_NAME,                  WIA_IPA_FULL_ITEM_NAME_STR},
  978.     {WIA_IPA_ITEM_TIME,                       WIA_IPA_ITEM_TIME_STR},
  979.     {WIA_IPA_ITEM_FLAGS,                      WIA_IPA_ITEM_FLAGS_STR},
  980.     {WIA_IPA_ACCESS_RIGHTS,                   WIA_IPA_ACCESS_RIGHTS_STR},
  981.     {WIA_IPA_DATATYPE,                        WIA_IPA_DATATYPE_STR},
  982.     {WIA_IPA_DEPTH,                           WIA_IPA_DEPTH_STR},
  983.     {WIA_IPA_PREFERRED_FORMAT,                WIA_IPA_PREFERRED_FORMAT_STR},
  984.     {WIA_IPA_FORMAT,                          WIA_IPA_FORMAT_STR},
  985.     {WIA_IPA_COMPRESSION,                     WIA_IPA_COMPRESSION_STR},
  986.     {WIA_IPA_TYMED,                           WIA_IPA_TYMED_STR},
  987.     {WIA_IPA_CHANNELS_PER_PIXEL,              WIA_IPA_CHANNELS_PER_PIXEL_STR},
  988.     {WIA_IPA_BITS_PER_CHANNEL,                WIA_IPA_BITS_PER_CHANNEL_STR},
  989.     {WIA_IPA_PLANAR,                          WIA_IPA_PLANAR_STR},
  990.     {WIA_IPA_PIXELS_PER_LINE,                 WIA_IPA_PIXELS_PER_LINE_STR},
  991.     {WIA_IPA_BYTES_PER_LINE,                  WIA_IPA_BYTES_PER_LINE_STR},
  992.     {WIA_IPA_NUMBER_OF_LINES,                 WIA_IPA_NUMBER_OF_LINES_STR},
  993.     {WIA_IPA_GAMMA_CURVES,                    WIA_IPA_GAMMA_CURVES_STR},
  994.     {WIA_IPA_ITEM_SIZE,                       WIA_IPA_ITEM_SIZE_STR},
  995.     {WIA_IPA_COLOR_PROFILE,                   WIA_IPA_COLOR_PROFILE_STR},
  996.     {WIA_IPA_MIN_BUFFER_SIZE,                 WIA_IPA_MIN_BUFFER_SIZE_STR},
  997.     {WIA_IPA_REGION_TYPE,                     WIA_IPA_REGION_TYPE_STR},
  998.     {WIA_IPC_THUMBNAIL,                       WIA_IPC_THUMBNAIL_STR},
  999.     {WIA_IPC_THUMB_WIDTH,                     WIA_IPC_THUMB_WIDTH_STR},
  1000.     {WIA_IPC_THUMB_HEIGHT,                    WIA_IPC_THUMB_HEIGHT_STR},
  1001.     {WIA_IPC_AUDIO_AVAILABLE,                 WIA_IPC_AUDIO_AVAILABLE_STR},
  1002.     {WIA_IPC_AUDIO_DATA_FORMAT,               WIA_IPC_AUDIO_DATA_FORMAT_STR},
  1003.     {WIA_IPC_AUDIO_DATA,                      WIA_IPC_AUDIO_DATA_STR},
  1004.     {WIA_IPS_CUR_INTENT,                      WIA_IPS_CUR_INTENT_STR},
  1005.     {WIA_IPS_XRES,                            WIA_IPS_XRES_STR},
  1006.     {WIA_IPS_YRES,                            WIA_IPS_YRES_STR},
  1007.     {WIA_IPS_XPOS,                            WIA_IPS_XPOS_STR},
  1008.     {WIA_IPS_YPOS,                            WIA_IPS_YPOS_STR},
  1009.     {WIA_IPS_XEXTENT,                         WIA_IPS_XEXTENT_STR},
  1010.     {WIA_IPS_YEXTENT,                         WIA_IPS_YEXTENT_STR},
  1011.     {WIA_IPS_PHOTOMETRIC_INTERP,              WIA_IPS_PHOTOMETRIC_INTERP_STR},
  1012.     {WIA_IPS_BRIGHTNESS,                      WIA_IPS_BRIGHTNESS_STR},
  1013.     {WIA_IPS_CONTRAST,                        WIA_IPS_CONTRAST_STR},
  1014.     {WIA_IPS_ORIENTATION,                     WIA_IPS_ORIENTATION_STR},
  1015.     {WIA_IPS_ROTATION,                        WIA_IPS_ROTATION_STR},
  1016.     {WIA_IPS_MIRROR,                          WIA_IPS_MIRROR_STR},
  1017.     {WIA_IPS_THRESHOLD,                       WIA_IPS_THRESHOLD_STR},
  1018.     {0,                                       L"Not a WIA property"}
  1019. };
  1020.  
  1021. #endif
  1022. #endif //WIAPROP_H_INCLUDED
  1023.  
  1024.  
  1025.  
  1026. //
  1027. //   Macro Helpers
  1028. //
  1029.  
  1030. #define WIA_PROP_LIST_COUNT(ppv) (((PROPVARIANT*)ppv)->cal.cElems - WIA_LIST_VALUES) 
  1031.  
  1032. #define WIA_PROP_LIST_VALUE(ppv, index)                              \\
  1033.      ((index > ((PROPVARIANT*) ppv)->cal.cElems - WIA_LIST_VALUES) || (index < -WIA_LIST_NOM)) ?\\
  1034.      NULL :                                                          \\
  1035.      (((PROPVARIANT*) ppv)->vt == VT_UI1) ?                          \\
  1036.      ((PROPVARIANT*) ppv)->caub.pElems[WIA_LIST_VALUES + index] :    \\
  1037.      (((PROPVARIANT*) ppv)->vt == VT_UI2) ?                          \\
  1038.      ((PROPVARIANT*) ppv)->caui.pElems[WIA_LIST_VALUES + index] :    \\
  1039.      (((PROPVARIANT*) ppv)->vt == VT_UI4) ?                          \\
  1040.      ((PROPVARIANT*) ppv)->caul.pElems[WIA_LIST_VALUES + index] :    \\
  1041.      (((PROPVARIANT*) ppv)->vt == VT_I2) ?                           \\
  1042.      ((PROPVARIANT*) ppv)->cai.pElems[WIA_LIST_VALUES + index] :     \\
  1043.      (((PROPVARIANT*) ppv)->vt == VT_I4) ?                           \\
  1044.      ((PROPVARIANT*) ppv)->cal.pElems[WIA_LIST_VALUES + index] :     \\
  1045.      (((PROPVARIANT*) ppv)->vt == VT_R4) ?                           \\
  1046.      ((PROPVARIANT*) ppv)->caflt.pElems[WIA_LIST_VALUES + index] :   \\
  1047.      (((PROPVARIANT*) ppv)->vt == VT_R8) ?                           \\
  1048.      ((PROPVARIANT*) ppv)->cadbl.pElems[WIA_LIST_VALUES + index] :   \\
  1049.      (((PROPVARIANT*) ppv)->vt == VT_BSTR) ?                         \\
  1050.      (LONG)(((PROPVARIANT*) ppv)->cabstr.pElems[WIA_LIST_VALUES + index]) : \\
  1051.      NULL
  1052.  
  1053.  
  1054. //
  1055. //   End of Macro Helpers
  1056. //
  1057.  
  1058. #pragma option pop /*P_O_Pop*/
  1059.