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.

4264 lines
134 KiB

  1. /*++
  2. Copyright (c) Microsoft Corporation. All rights reserved.
  3. THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
  4. EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
  5. WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
  6. Module Name:
  7. winfax.h
  8. Abstract:
  9. This module contains the WIN32 FAX APIs.
  10. --*/
  11. #ifndef _FAXAPIP_
  12. #define _FAXAPIP_
  13. #include <FaxUIConstants.h>
  14. #ifndef MIDL_PASS
  15. #include <tapi.h>
  16. #endif
  17. #if !defined(_WINFAX_)
  18. #define WINFAXAPI DECLSPEC_IMPORT
  19. #else
  20. #define WINFAXAPI
  21. #endif
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. //
  26. // FAX ERROR CODES
  27. //
  28. #define FAX_ERR_START 7001L // First fax specific error code
  29. #define FAX_ERR_SRV_OUTOFMEMORY 7001L
  30. #define FAX_ERR_GROUP_NOT_FOUND 7002L
  31. #define FAX_ERR_BAD_GROUP_CONFIGURATION 7003L
  32. #define FAX_ERR_GROUP_IN_USE 7004L
  33. #define FAX_ERR_RULE_NOT_FOUND 7005L
  34. #define FAX_ERR_NOT_NTFS 7006L
  35. #define FAX_ERR_DIRECTORY_IN_USE 7007L
  36. #define FAX_ERR_FILE_ACCESS_DENIED 7008L
  37. #define FAX_ERR_MESSAGE_NOT_FOUND 7009L
  38. #define FAX_ERR_DEVICE_NUM_LIMIT_EXCEEDED 7010L
  39. #define FAX_ERR_NOT_SUPPORTED_ON_THIS_SKU 7011L
  40. #define FAX_ERR_VERSION_MISMATCH 7012L // Fax client/server versions mismtach
  41. #define FAX_ERR_RECIPIENTS_LIMIT 7013L // Recipients limit in a single broadcast
  42. #define FAX_ERR_END 7013L // Last fax specific error code
  43. //
  44. // MessageId: FAX_E_SRV_OUTOFMEMORY
  45. //
  46. // MessageText:
  47. //
  48. // The fax server failed to allocate memory.
  49. //
  50. #define FAX_E_SRV_OUTOFMEMORY MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_SRV_OUTOFMEMORY)
  51. //
  52. // MessageId: FAX_E_GROUP_NOT_FOUND
  53. //
  54. // MessageText:
  55. //
  56. // The fax server failed to locate an outbound routing group by name.
  57. //
  58. #define FAX_E_GROUP_NOT_FOUND MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_GROUP_NOT_FOUND)
  59. //
  60. // MessageId: FAX_E_BAD_GROUP_CONFIGURATION
  61. //
  62. // MessageText:
  63. //
  64. // The fax server encountered an outbound routing group with bad configuration.
  65. //
  66. #define FAX_E_BAD_GROUP_CONFIGURATION MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_BAD_GROUP_CONFIGURATION)
  67. //
  68. // MessageId: FAX_E_GROUP_IN_USE
  69. //
  70. // MessageText:
  71. //
  72. // The fax server cannot remove an outbound routing group because it is in use by one or more outbound routing rules.
  73. //
  74. #define FAX_E_GROUP_IN_USE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_GROUP_IN_USE)
  75. //
  76. // MessageId: FAX_E_RULE_NOT_FOUND
  77. //
  78. // MessageText:
  79. //
  80. // The fax server failed to locate an outbound routing rule by country code and area code.
  81. //
  82. #define FAX_E_RULE_NOT_FOUND MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_RULE_NOT_FOUND)
  83. //
  84. // MessageId: FAX_E_NOT_NTFS
  85. //
  86. // MessageText:
  87. //
  88. // The fax server cannot set an archive folder to a non-NTFS partition.
  89. //
  90. #define FAX_E_NOT_NTFS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_NOT_NTFS)
  91. //
  92. // MessageId: FAX_E_DIRECTORY_IN_USE
  93. //
  94. // MessageText:
  95. //
  96. // The fax server cannot use the same folder for both the inbox and the sent-items archives.
  97. //
  98. #define FAX_E_DIRECTORY_IN_USE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_DIRECTORY_IN_USE)
  99. //
  100. // MessageId: FAX_E_FILE_ACCESS_DENIED
  101. //
  102. // MessageText:
  103. //
  104. // The fax server cannot access the specified file or folder.
  105. //
  106. #define FAX_E_FILE_ACCESS_DENIED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_FILE_ACCESS_DENIED)
  107. //
  108. // MessageId: FAX_E_MESSAGE_NOT_FOUND
  109. //
  110. // MessageText:
  111. //
  112. // The fax server cannot find the job or message by its ID.
  113. //
  114. #define FAX_E_MESSAGE_NOT_FOUND MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_MESSAGE_NOT_FOUND)
  115. //
  116. // MessageId: FAX_E_DEVICE_NUM_LIMIT_EXCEEDED
  117. //
  118. // MessageText:
  119. //
  120. // The fax server cannot complete the operation because the number of active fax devices allowed for this version of Windows was exceeded.
  121. //
  122. #define FAX_E_DEVICE_NUM_LIMIT_EXCEEDED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_DEVICE_NUM_LIMIT_EXCEEDED)
  123. //
  124. // MessageId: FAX_E_NOT_SUPPORTED_ON_THIS_SKU
  125. //
  126. // MessageText:
  127. //
  128. // The fax server cannot complete the operation because it is not supported for this version of Windows.
  129. //
  130. #define FAX_E_NOT_SUPPORTED_ON_THIS_SKU MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_NOT_SUPPORTED_ON_THIS_SKU)
  131. //
  132. // MessageId: FAX_E_VERSION_MISMATCH
  133. //
  134. // MessageText:
  135. //
  136. // The fax server API version does not support the requested operation.
  137. //
  138. #define FAX_E_VERSION_MISMATCH MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_VERSION_MISMATCH)
  139. //
  140. // MessageId: FAX_E_RECIPIENT_LIMIT
  141. //
  142. // MessageText:
  143. //
  144. // The limit on the number of recipients for a single fax broadcast was reached.
  145. //
  146. #define FAX_E_RECIPIENTS_LIMIT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_RECIPIENTS_LIMIT)
  147. typedef enum
  148. {
  149. FAXLOG_LEVEL_NONE = 0,
  150. FAXLOG_LEVEL_MIN,
  151. FAXLOG_LEVEL_MED,
  152. FAXLOG_LEVEL_MAX
  153. } FAX_ENUM_LOG_LEVELS;
  154. typedef enum
  155. {
  156. FAXLOG_CATEGORY_INIT = 1, // Initialization / shutdown
  157. FAXLOG_CATEGORY_OUTBOUND, // Outbound messages
  158. FAXLOG_CATEGORY_INBOUND, // Inbound messages
  159. FAXLOG_CATEGORY_UNKNOWN // Unknown category (all others)
  160. } FAX_ENUM_LOG_CATEGORIES;
  161. typedef struct _FAX_LOG_CATEGORYA
  162. {
  163. LPCSTR Name; // logging category name
  164. DWORD Category; // logging category number
  165. DWORD Level; // logging level for the category
  166. } FAX_LOG_CATEGORYA, *PFAX_LOG_CATEGORYA;
  167. typedef struct _FAX_LOG_CATEGORYW
  168. {
  169. LPCWSTR Name; // logging category name
  170. DWORD Category; // logging category number
  171. DWORD Level; // logging level for the category
  172. } FAX_LOG_CATEGORYW, *PFAX_LOG_CATEGORYW;
  173. #ifdef UNICODE
  174. typedef FAX_LOG_CATEGORYW FAX_LOG_CATEGORY;
  175. typedef PFAX_LOG_CATEGORYW PFAX_LOG_CATEGORY;
  176. #else
  177. typedef FAX_LOG_CATEGORYA FAX_LOG_CATEGORY;
  178. typedef PFAX_LOG_CATEGORYA PFAX_LOG_CATEGORY;
  179. #endif // UNICODE
  180. typedef struct _FAX_TIME
  181. {
  182. WORD Hour;
  183. WORD Minute;
  184. } FAX_TIME, *PFAX_TIME;
  185. typedef struct _FAX_CONFIGURATIONA
  186. {
  187. DWORD SizeOfStruct; // size of this structure
  188. DWORD Retries; // number of retries for fax send
  189. DWORD RetryDelay; // number of minutes between retries
  190. DWORD DirtyDays; // number of days to keep an unsent job in the queue
  191. BOOL Branding; // fsp should brand outgoing faxes
  192. BOOL UseDeviceTsid; // server uses device tsid only
  193. BOOL ServerCp; // clients must use cover pages on the server
  194. BOOL PauseServerQueue; // is the server queue paused?
  195. FAX_TIME StartCheapTime; // start of discount rate period
  196. FAX_TIME StopCheapTime; // end of discount rate period
  197. BOOL ArchiveOutgoingFaxes; // whether outgoing faxes should be archived
  198. LPCSTR ArchiveDirectory; // archive directory for outgoing faxes
  199. LPCSTR Reserved; // Reserved; must be NULL
  200. } FAX_CONFIGURATIONA, *PFAX_CONFIGURATIONA;
  201. typedef struct _FAX_CONFIGURATIONW
  202. {
  203. DWORD SizeOfStruct; // size of this structure
  204. DWORD Retries; // number of retries for fax send
  205. DWORD RetryDelay; // number of minutes between retries
  206. DWORD DirtyDays; // number of days to keep an unsent job in the queue
  207. BOOL Branding; // fsp should brand outgoing faxes
  208. BOOL UseDeviceTsid; // server uses device tsid only
  209. BOOL ServerCp; // clients must use cover pages on the server
  210. BOOL PauseServerQueue; // is the server queue paused?
  211. FAX_TIME StartCheapTime; // start of discount rate period
  212. FAX_TIME StopCheapTime; // end of discount rate period
  213. BOOL ArchiveOutgoingFaxes; // whether outgoing faxes should be archived
  214. LPCWSTR ArchiveDirectory; // archive directory for outgoing faxes
  215. LPCWSTR Reserved; // Reserved; must be NULL
  216. } FAX_CONFIGURATIONW, *PFAX_CONFIGURATIONW;
  217. #ifdef UNICODE
  218. typedef FAX_CONFIGURATIONW FAX_CONFIGURATION;
  219. typedef PFAX_CONFIGURATIONW PFAX_CONFIGURATION;
  220. #else
  221. typedef FAX_CONFIGURATIONA FAX_CONFIGURATION;
  222. typedef PFAX_CONFIGURATIONA PFAX_CONFIGURATION;
  223. #endif // UNICODE
  224. //
  225. // FaxSetJob() command codes
  226. //
  227. typedef enum
  228. {
  229. JC_UNKNOWN = 0,
  230. JC_DELETE,
  231. JC_PAUSE,
  232. JC_RESUME
  233. } FAX_ENUM_JOB_COMMANDS;
  234. #define JC_RESTART JC_RESUME
  235. //
  236. // job type defines
  237. //
  238. //
  239. // NOTICE: JT_* and JS_* are different from the Win2K public constants.
  240. // If you use WinFax.h and/or the Win2K COM interfaces, you get the Win2K constants.
  241. // If you use fxsapip.h, you get the Whistler constants.
  242. //
  243. // NEVER MIX THEM !!!
  244. //
  245. typedef enum
  246. {
  247. JT_UNKNOWN = 0x0001, // Fax type is not determined yet
  248. JT_SEND = 0x0002, // Outgoing fax message
  249. JT_RECEIVE = 0x0004, // Incoming fax message
  250. JT_ROUTING = 0x0008, // Incoming message - being routed
  251. JT_FAIL_RECEIVE = 0x0010, // Fail receive job (legacy support only)
  252. JT_BROADCAST = 0x0020 // Outgoing broadcast message
  253. } FAX_ENUM_JOB_TYPES;
  254. //
  255. // job status defines
  256. //
  257. #define JS_PENDING 0x00000001
  258. #define JS_INPROGRESS 0x00000002
  259. #define JS_DELETING 0x00000004
  260. #define JS_FAILED 0x00000008
  261. #define JS_PAUSED 0x00000010
  262. #define JS_NOLINE 0x00000020
  263. #define JS_RETRYING 0x00000040
  264. #define JS_RETRIES_EXCEEDED 0x00000080
  265. typedef struct _FAX_DEVICE_STATUSA
  266. {
  267. DWORD SizeOfStruct; // size of this structure
  268. LPCSTR CallerId; // caller id string
  269. LPCSTR Csid; // station identifier
  270. DWORD CurrentPage; // current page
  271. DWORD DeviceId; // permanent line id
  272. LPCSTR DeviceName; // device name
  273. LPCSTR DocumentName; // document name
  274. DWORD JobType; // send or receive?
  275. LPCSTR PhoneNumber; // sending phone number
  276. LPCSTR RoutingString; // routing information
  277. LPCSTR SenderName; // sender name
  278. LPCSTR RecipientName; // recipient name
  279. DWORD Size; // size in bytes of the document
  280. FILETIME StartTime; // starting time of the fax send/receive
  281. DWORD Status; // current status of the device, see FPS_??? masks
  282. LPCSTR StatusString; // status string if the Status field is zero. this may be NULL.
  283. FILETIME SubmittedTime; // time the document was submitted
  284. DWORD TotalPages; // total number of pages in this job
  285. LPCSTR Tsid; // transmitting station identifier
  286. LPCSTR UserName; // user that submitted the active job
  287. } FAX_DEVICE_STATUSA, *PFAX_DEVICE_STATUSA;
  288. typedef struct _FAX_DEVICE_STATUSW
  289. {
  290. DWORD SizeOfStruct; // size of this structure
  291. LPCWSTR CallerId; // caller id string
  292. LPCWSTR Csid; // station identifier
  293. DWORD CurrentPage; // current page
  294. DWORD DeviceId; // permanent line id
  295. LPCWSTR DeviceName; // device name
  296. LPCWSTR DocumentName; // document name
  297. DWORD JobType; // send or receive?
  298. LPCWSTR PhoneNumber; // sending phone number
  299. LPCWSTR RoutingString; // routing information
  300. LPCWSTR SenderName; // sender name
  301. LPCWSTR RecipientName; // recipient name
  302. DWORD Size; // size in bytes of the document
  303. FILETIME StartTime; // starting time of the fax send/receive
  304. DWORD Status; // current status of the device, see FPS_??? masks
  305. LPCWSTR StatusString; // status string if the Status field is zero. this may be NULL.
  306. FILETIME SubmittedTime; // time the document was submitted
  307. DWORD TotalPages; // total number of pages in this job
  308. LPCWSTR Tsid; // transmitting station identifier
  309. LPCWSTR UserName; // user that submitted the active job
  310. } FAX_DEVICE_STATUSW, *PFAX_DEVICE_STATUSW;
  311. #ifdef UNICODE
  312. typedef FAX_DEVICE_STATUSW FAX_DEVICE_STATUS;
  313. typedef PFAX_DEVICE_STATUSW PFAX_DEVICE_STATUS;
  314. #else
  315. typedef FAX_DEVICE_STATUSA FAX_DEVICE_STATUS;
  316. typedef PFAX_DEVICE_STATUSA PFAX_DEVICE_STATUS;
  317. #endif // UNICODE
  318. typedef struct _FAX_JOB_ENTRYA
  319. {
  320. DWORD SizeOfStruct; // size of this structure
  321. DWORD JobId; // fax job id
  322. LPCSTR UserName; // user who submitted the job
  323. DWORD JobType; // job type, see JT defines
  324. DWORD QueueStatus; // job queue status, see JS defines
  325. DWORD Status; // current status of the device, see FPS_??? masks
  326. DWORD Size; // size in bytes of the document
  327. DWORD PageCount; // total page count
  328. LPCSTR RecipientNumber; // recipient fax number
  329. LPCSTR RecipientName; // recipient name
  330. LPCSTR Tsid; // transmitter's id
  331. LPCSTR SenderName; // sender name
  332. LPCSTR SenderCompany; // sender company
  333. LPCSTR SenderDept; // sender department
  334. LPCSTR BillingCode; // billing code
  335. DWORD ScheduleAction; // when to schedule the fax, see JSA defines
  336. SYSTEMTIME ScheduleTime; // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
  337. DWORD DeliveryReportType; // delivery report type, see DRT defines
  338. LPCSTR DeliveryReportAddress; // email address for delivery report (ndr or dr) thru MAPI / SMTP
  339. LPCSTR DocumentName; // document name
  340. } FAX_JOB_ENTRYA, *PFAX_JOB_ENTRYA;
  341. typedef struct _FAX_JOB_ENTRYW
  342. {
  343. DWORD SizeOfStruct; // size of this structure
  344. DWORD JobId; // fax job id
  345. LPCWSTR UserName; // user who submitted the job
  346. DWORD JobType; // job type, see JT defines
  347. DWORD QueueStatus; // job queue status, see JS defines
  348. DWORD Status; // current status of the device, see FPS_??? masks
  349. DWORD Size; // size in bytes of the document
  350. DWORD PageCount; // total page count
  351. LPCWSTR RecipientNumber; // recipient fax number
  352. LPCWSTR RecipientName; // recipient name
  353. LPCWSTR Tsid; // transmitter's id
  354. LPCWSTR SenderName; // sender name
  355. LPCWSTR SenderCompany; // sender company
  356. LPCWSTR SenderDept; // sender department
  357. LPCWSTR BillingCode; // billing code
  358. DWORD ScheduleAction; // when to schedule the fax, see JSA defines
  359. SYSTEMTIME ScheduleTime; // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
  360. DWORD DeliveryReportType; // delivery report type, see DRT defines
  361. LPCWSTR DeliveryReportAddress; // email address for delivery report (ndr or dr) thru MAPI / SMTP
  362. LPCWSTR DocumentName; // document name
  363. } FAX_JOB_ENTRYW, *PFAX_JOB_ENTRYW;
  364. #ifdef UNICODE
  365. typedef FAX_JOB_ENTRYW FAX_JOB_ENTRY;
  366. typedef PFAX_JOB_ENTRYW PFAX_JOB_ENTRY;
  367. #else
  368. typedef FAX_JOB_ENTRYA FAX_JOB_ENTRY;
  369. typedef PFAX_JOB_ENTRYA PFAX_JOB_ENTRY;
  370. #endif // UNICODE
  371. //
  372. // fax port state masks
  373. //
  374. // if you change these defines the be sure to
  375. // change the resources in the fax service.
  376. //
  377. #define FPS_DIALING 0x20000001
  378. #define FPS_SENDING 0x20000002
  379. #define FPS_RECEIVING 0x20000004
  380. #define FPS_COMPLETED 0x20000008
  381. #define FPS_HANDLED 0x20000010
  382. #define FPS_UNAVAILABLE 0x20000020
  383. #define FPS_BUSY 0x20000040
  384. #define FPS_NO_ANSWER 0x20000080
  385. #define FPS_BAD_ADDRESS 0x20000100
  386. #define FPS_NO_DIAL_TONE 0x20000200
  387. #define FPS_DISCONNECTED 0x20000400
  388. #define FPS_FATAL_ERROR 0x20000800
  389. #define FPS_NOT_FAX_CALL 0x20001000
  390. #define FPS_CALL_DELAYED 0x20002000
  391. #define FPS_CALL_BLACKLISTED 0x20004000
  392. #define FPS_INITIALIZING 0x20008000
  393. #define FPS_OFFLINE 0x20010000
  394. #define FPS_RINGING 0x20020000
  395. #define FPS_AVAILABLE 0x20100000
  396. #define FPS_ABORTING 0x20200000
  397. #define FPS_ROUTING 0x20400000
  398. #define FPS_ANSWERED 0x20800000
  399. //
  400. // fax port capability mask
  401. //
  402. #define FPF_RECEIVE 0x00000001 // Automatically receive faxes
  403. #define FPF_SEND 0x00000002
  404. #define FPF_VIRTUAL 0x00000004
  405. typedef struct _FAX_PORT_INFOA
  406. {
  407. DWORD SizeOfStruct; // size of this structure
  408. DWORD DeviceId; // Device ID
  409. DWORD State; // State of the device
  410. DWORD Flags; // Device specific flags
  411. DWORD Rings; // Number of rings before answer
  412. DWORD Priority; // Device priority
  413. LPCSTR DeviceName; // Device name
  414. LPCSTR Tsid; // Device Tsid
  415. LPCSTR Csid; // Device Csid
  416. } FAX_PORT_INFOA, *PFAX_PORT_INFOA;
  417. typedef struct _FAX_PORT_INFOW
  418. {
  419. DWORD SizeOfStruct; // size of this structure
  420. DWORD DeviceId; // Device ID
  421. DWORD State; // State of the device
  422. DWORD Flags; // Device specific flags
  423. DWORD Rings; // Number of rings before answer
  424. DWORD Priority; // Device priority
  425. LPCWSTR DeviceName; // Device name
  426. LPCWSTR Tsid; // Device Tsid
  427. LPCWSTR Csid; // Device Csid
  428. } FAX_PORT_INFOW, *PFAX_PORT_INFOW;
  429. #ifdef UNICODE
  430. typedef FAX_PORT_INFOW FAX_PORT_INFO;
  431. typedef PFAX_PORT_INFOW PFAX_PORT_INFO;
  432. #else
  433. typedef FAX_PORT_INFOA FAX_PORT_INFO;
  434. typedef PFAX_PORT_INFOA PFAX_PORT_INFO;
  435. #endif // UNICODE
  436. typedef struct _FAX_ROUTING_METHODA
  437. {
  438. DWORD SizeOfStruct; // size of this structure
  439. DWORD DeviceId; // device identifier
  440. BOOL Enabled; // is this method enabled for this device?
  441. LPCSTR DeviceName; // device name
  442. LPCSTR Guid; // guid that identifies this routing method
  443. LPCSTR FriendlyName; // friendly name for this method
  444. LPCSTR FunctionName; // exported function name that identifies this method
  445. LPCSTR ExtensionImageName; // module (dll) name that implements this method
  446. LPCSTR ExtensionFriendlyName; // displayable string that identifies the extension
  447. } FAX_ROUTING_METHODA, *PFAX_ROUTING_METHODA;
  448. typedef struct _FAX_ROUTING_METHODW
  449. {
  450. DWORD SizeOfStruct; // size of this structure
  451. DWORD DeviceId; // device identifier
  452. BOOL Enabled; // is this method enabled for this device?
  453. LPCWSTR DeviceName; // device name
  454. LPCWSTR Guid; // guid that identifies this routing method
  455. LPCWSTR FriendlyName; // friendly name for this method
  456. LPCWSTR FunctionName; // exported function name that identifies this method
  457. LPCWSTR ExtensionImageName; // module (dll) name that implements this method
  458. LPCWSTR ExtensionFriendlyName; // displayable string that identifies the extension
  459. } FAX_ROUTING_METHODW, *PFAX_ROUTING_METHODW;
  460. #ifdef UNICODE
  461. typedef FAX_ROUTING_METHODW FAX_ROUTING_METHOD;
  462. typedef PFAX_ROUTING_METHODW PFAX_ROUTING_METHOD;
  463. #else
  464. typedef FAX_ROUTING_METHODA FAX_ROUTING_METHOD;
  465. typedef PFAX_ROUTING_METHODA PFAX_ROUTING_METHOD;
  466. #endif // UNICODE
  467. typedef struct _FAX_GLOBAL_ROUTING_INFOA
  468. {
  469. DWORD SizeOfStruct; // size of this structure
  470. DWORD Priority; // priority of this device
  471. LPCSTR Guid; // guid that identifies this routing method
  472. LPCSTR FriendlyName; // friendly name for this method
  473. LPCSTR FunctionName; // exported function name that identifies this method
  474. LPCSTR ExtensionImageName; // module (dll) name that implements this method
  475. LPCSTR ExtensionFriendlyName; // displayable string that identifies the extension
  476. } FAX_GLOBAL_ROUTING_INFOA, *PFAX_GLOBAL_ROUTING_INFOA;
  477. typedef struct _FAX_GLOBAL_ROUTING_INFOW
  478. {
  479. DWORD SizeOfStruct; // size of this structure
  480. DWORD Priority; // priority of this device
  481. LPCWSTR Guid; // guid that identifies this routing method
  482. LPCWSTR FriendlyName; // friendly name for this method
  483. LPCWSTR FunctionName; // exported function name that identifies this method
  484. LPCWSTR ExtensionImageName; // module (dll) name that implements this method
  485. LPCWSTR ExtensionFriendlyName; // displayable string that identifies the extension
  486. } FAX_GLOBAL_ROUTING_INFOW, *PFAX_GLOBAL_ROUTING_INFOW;
  487. #ifdef UNICODE
  488. typedef FAX_GLOBAL_ROUTING_INFOW FAX_GLOBAL_ROUTING_INFO;
  489. typedef PFAX_GLOBAL_ROUTING_INFOW PFAX_GLOBAL_ROUTING_INFO;
  490. #else
  491. typedef FAX_GLOBAL_ROUTING_INFOA FAX_GLOBAL_ROUTING_INFO;
  492. typedef PFAX_GLOBAL_ROUTING_INFOA PFAX_GLOBAL_ROUTING_INFO;
  493. #endif // UNICODE
  494. typedef struct _FAX_COVERPAGE_INFOA
  495. {
  496. DWORD SizeOfStruct; // Size of this structure
  497. //
  498. // general
  499. //
  500. LPCSTR CoverPageName; // coverpage document name
  501. BOOL UseServerCoverPage; // coverpage exists on the fax server
  502. //
  503. // Recipient information
  504. //
  505. LPCSTR RecName; //
  506. LPCSTR RecFaxNumber; //
  507. LPCSTR RecCompany; //
  508. LPCSTR RecStreetAddress; //
  509. LPCSTR RecCity; //
  510. LPCSTR RecState; //
  511. LPCSTR RecZip; //
  512. LPCSTR RecCountry; //
  513. LPCSTR RecTitle; //
  514. LPCSTR RecDepartment; //
  515. LPCSTR RecOfficeLocation; //
  516. LPCSTR RecHomePhone; //
  517. LPCSTR RecOfficePhone; //
  518. //
  519. // Sender information
  520. //
  521. LPCSTR SdrName; //
  522. LPCSTR SdrFaxNumber; //
  523. LPCSTR SdrCompany; //
  524. LPCSTR SdrAddress; //
  525. LPCSTR SdrTitle; //
  526. LPCSTR SdrDepartment; //
  527. LPCSTR SdrOfficeLocation; //
  528. LPCSTR SdrHomePhone; //
  529. LPCSTR SdrOfficePhone; //
  530. //
  531. // Misc information
  532. //
  533. LPCSTR Note; //
  534. LPCSTR Subject; //
  535. SYSTEMTIME TimeSent; // Time the fax was sent
  536. DWORD PageCount; // Number of pages
  537. } FAX_COVERPAGE_INFOA, *PFAX_COVERPAGE_INFOA;
  538. typedef struct _FAX_COVERPAGE_INFOW
  539. {
  540. DWORD SizeOfStruct; // Size of this structure
  541. //
  542. // general
  543. //
  544. LPCWSTR CoverPageName; // coverpage document name
  545. BOOL UseServerCoverPage; // coverpage exists on the fax server
  546. //
  547. // Recipient information
  548. //
  549. LPCWSTR RecName; //
  550. LPCWSTR RecFaxNumber; //
  551. LPCWSTR RecCompany; //
  552. LPCWSTR RecStreetAddress; //
  553. LPCWSTR RecCity; //
  554. LPCWSTR RecState; //
  555. LPCWSTR RecZip; //
  556. LPCWSTR RecCountry; //
  557. LPCWSTR RecTitle; //
  558. LPCWSTR RecDepartment; //
  559. LPCWSTR RecOfficeLocation; //
  560. LPCWSTR RecHomePhone; //
  561. LPCWSTR RecOfficePhone; //
  562. //
  563. // Sender information
  564. //
  565. LPCWSTR SdrName; //
  566. LPCWSTR SdrFaxNumber; //
  567. LPCWSTR SdrCompany; //
  568. LPCWSTR SdrAddress; //
  569. LPCWSTR SdrTitle; //
  570. LPCWSTR SdrDepartment; //
  571. LPCWSTR SdrOfficeLocation; //
  572. LPCWSTR SdrHomePhone; //
  573. LPCWSTR SdrOfficePhone; //
  574. //
  575. // Misc information
  576. //
  577. LPCWSTR Note; //
  578. LPCWSTR Subject; //
  579. SYSTEMTIME TimeSent; // Time the fax was sent
  580. DWORD PageCount; // Number of pages
  581. } FAX_COVERPAGE_INFOW, *PFAX_COVERPAGE_INFOW;
  582. #ifdef UNICODE
  583. typedef FAX_COVERPAGE_INFOW FAX_COVERPAGE_INFO;
  584. typedef PFAX_COVERPAGE_INFOW PFAX_COVERPAGE_INFO;
  585. #else
  586. typedef FAX_COVERPAGE_INFOA FAX_COVERPAGE_INFO;
  587. typedef PFAX_COVERPAGE_INFOA PFAX_COVERPAGE_INFO;
  588. #endif // UNICODE
  589. typedef enum
  590. {
  591. JSA_NOW = 0, // Send now
  592. JSA_SPECIFIC_TIME, // Send at specific time
  593. JSA_DISCOUNT_PERIOD // Send at server configured discount period
  594. } FAX_ENUM_JOB_SEND_ATTRIBUTES;
  595. typedef enum
  596. {
  597. DRT_NONE = 0x0000, // Do not send receipt
  598. DRT_EMAIL = 0x0001, // Send receipt by email (SMTP)
  599. DRT_UNUSED = 0x0002, // Reserved
  600. DRT_MSGBOX = 0x0004, // Send receipt by a message box
  601. DRT_GRP_PARENT = 0x0008, // Send a single receipt for a broadcast job
  602. DRT_ATTACH_FAX = 0x0010 // Attach the fax tiff file to the receipt
  603. } FAX_ENUM_DELIVERY_REPORT_TYPES;
  604. #define DRT_ALL (DRT_EMAIL | DRT_MSGBOX) // All possible delivery report types
  605. #define DRT_MODIFIERS (DRT_GRP_PARENT | DRT_ATTACH_FAX) // All state modifiers
  606. //
  607. // the reserved fields are private data used
  608. // by the fax monitor and winfax.
  609. //
  610. //
  611. // Reserved[0] == 0xffffffff
  612. // Reserved[1] == Print job id
  613. //
  614. // Reserved[0] == 0xfffffffe start of a broadcast job
  615. //
  616. typedef struct _FAX_JOB_PARAMA
  617. {
  618. DWORD SizeOfStruct; // size of this structure
  619. LPCSTR RecipientNumber; // recipient fax number
  620. LPCSTR RecipientName; // recipient name
  621. LPCSTR Tsid; // transmitter's id
  622. LPCSTR SenderName; // sender name
  623. LPCSTR SenderCompany; // sender company
  624. LPCSTR SenderDept; // sender department
  625. LPCSTR BillingCode; // billing code
  626. DWORD ScheduleAction; // when to schedule the fax, see JSA defines
  627. SYSTEMTIME ScheduleTime; // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
  628. DWORD DeliveryReportType; // delivery report type, see DRT defines
  629. LPCSTR DeliveryReportAddress; // email address for delivery report (ndr or dr) thru MAPI / SMTP
  630. LPCSTR DocumentName; // document name (optional)
  631. HCALL CallHandle; // optional call handle
  632. DWORD_PTR Reserved[3]; // reserved for ms use only
  633. } FAX_JOB_PARAMA, *PFAX_JOB_PARAMA;
  634. typedef struct _FAX_JOB_PARAMW
  635. {
  636. DWORD SizeOfStruct; // size of this structure
  637. LPCWSTR RecipientNumber; // recipient fax number
  638. LPCWSTR RecipientName; // recipient name
  639. LPCWSTR Tsid; // transmitter's id
  640. LPCWSTR SenderName; // sender name
  641. LPCWSTR SenderCompany; // sender company
  642. LPCWSTR SenderDept; // sender department
  643. LPCWSTR BillingCode; // billing code
  644. DWORD ScheduleAction; // when to schedule the fax, see JSA defines
  645. SYSTEMTIME ScheduleTime; // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
  646. DWORD DeliveryReportType; // delivery report type, see DRT defines
  647. LPCWSTR DeliveryReportAddress; // email address for delivery report (ndr or dr) thru MAPI / SMTP
  648. LPCWSTR DocumentName; // document name (optional)
  649. HCALL CallHandle; // optional call handle
  650. DWORD_PTR Reserved[3]; // reserved for ms use only
  651. } FAX_JOB_PARAMW, *PFAX_JOB_PARAMW;
  652. #ifdef UNICODE
  653. typedef FAX_JOB_PARAMW FAX_JOB_PARAM;
  654. typedef PFAX_JOB_PARAMW PFAX_JOB_PARAM;
  655. #else
  656. typedef FAX_JOB_PARAMA FAX_JOB_PARAM;
  657. typedef PFAX_JOB_PARAMA PFAX_JOB_PARAM;
  658. #endif // UNICODE
  659. //
  660. // Event Ids
  661. //
  662. // FEI_NEVENTS is the number of events
  663. //
  664. #define FEI_DIALING 0x00000001
  665. #define FEI_SENDING 0x00000002
  666. #define FEI_RECEIVING 0x00000003
  667. #define FEI_COMPLETED 0x00000004
  668. #define FEI_BUSY 0x00000005
  669. #define FEI_NO_ANSWER 0x00000006
  670. #define FEI_BAD_ADDRESS 0x00000007
  671. #define FEI_NO_DIAL_TONE 0x00000008
  672. #define FEI_DISCONNECTED 0x00000009
  673. #define FEI_FATAL_ERROR 0x0000000a
  674. #define FEI_NOT_FAX_CALL 0x0000000b
  675. #define FEI_CALL_DELAYED 0x0000000c
  676. #define FEI_CALL_BLACKLISTED 0x0000000d
  677. #define FEI_RINGING 0x0000000e
  678. #define FEI_ABORTING 0x0000000f
  679. #define FEI_ROUTING 0x00000010
  680. #define FEI_MODEM_POWERED_ON 0x00000011
  681. #define FEI_MODEM_POWERED_OFF 0x00000012
  682. #define FEI_IDLE 0x00000013
  683. #define FEI_FAXSVC_ENDED 0x00000014
  684. #define FEI_ANSWERED 0x00000015
  685. #define FEI_JOB_QUEUED 0x00000016
  686. #define FEI_DELETED 0x00000017
  687. #define FEI_INITIALIZING 0x00000018
  688. #define FEI_LINE_UNAVAILABLE 0x00000019
  689. #define FEI_HANDLED 0x0000001a
  690. #define FEI_FAXSVC_STARTED 0x0000001b
  691. #define FEI_NEVENTS FEI_FAXSVC_STARTED
  692. typedef struct _FAX_EVENTA
  693. {
  694. DWORD SizeOfStruct; // Size of this structure
  695. FILETIME TimeStamp; // Timestamp for when the event was generated
  696. DWORD DeviceId; // Permanent line id
  697. DWORD EventId; // Current event id
  698. DWORD JobId; // Fax Job Id, 0xffffffff indicates inactive job
  699. } FAX_EVENTA, *PFAX_EVENTA;
  700. typedef struct _FAX_EVENTW
  701. {
  702. DWORD SizeOfStruct; // Size of this structure
  703. FILETIME TimeStamp; // Timestamp for when the event was generated
  704. DWORD DeviceId; // Permanent line id
  705. DWORD EventId; // Current event id
  706. DWORD JobId; // Fax Job Id, 0xffffffff indicates inactive job
  707. } FAX_EVENTW, *PFAX_EVENTW;
  708. #ifdef UNICODE
  709. typedef FAX_EVENTW FAX_EVENT;
  710. typedef PFAX_EVENTW PFAX_EVENT;
  711. #else
  712. typedef FAX_EVENTA FAX_EVENT;
  713. typedef PFAX_EVENTA PFAX_EVENT;
  714. #endif // UNICODE
  715. typedef struct _FAX_PRINT_INFOA
  716. {
  717. DWORD SizeOfStruct; // Size of this structure
  718. LPCSTR DocName; // Document name that appears in the spooler
  719. LPCSTR RecipientName; // Recipient name
  720. LPCSTR RecipientNumber; // Recipient fax number (non-canonical number)
  721. LPCSTR SenderName; // Sender name
  722. LPCSTR SenderCompany; // Sender company (optional)
  723. LPCSTR SenderDept; // Sender department
  724. LPCSTR SenderBillingCode; // Billing code
  725. LPCSTR Reserved; // Reserved; must be NULL
  726. LPCSTR DrEmailAddress; // E.Mail address for delivery report
  727. LPCSTR OutputFileName; // for print to file, resulting file name
  728. } FAX_PRINT_INFOA, *PFAX_PRINT_INFOA;
  729. typedef struct _FAX_PRINT_INFOW
  730. {
  731. DWORD SizeOfStruct; // Size of this structure
  732. LPCWSTR DocName; // Document name that appears in the spooler
  733. LPCWSTR RecipientName; // Recipient name
  734. LPCWSTR RecipientNumber; // Recipient fax number (non-canonical number)
  735. LPCWSTR SenderName; // Sender name
  736. LPCWSTR SenderCompany; // Sender company (optional)
  737. LPCWSTR SenderDept; // Sender department
  738. LPCWSTR SenderBillingCode; // Billing code
  739. LPCWSTR Reserved; // Reserved; must be NULL
  740. LPCWSTR DrEmailAddress; // E.Mail address for delivery report
  741. LPCWSTR OutputFileName; // for print to file, resulting file name
  742. } FAX_PRINT_INFOW, *PFAX_PRINT_INFOW;
  743. #ifdef UNICODE
  744. typedef FAX_PRINT_INFOW FAX_PRINT_INFO;
  745. typedef PFAX_PRINT_INFOW PFAX_PRINT_INFO;
  746. #else
  747. typedef FAX_PRINT_INFOA FAX_PRINT_INFO;
  748. typedef PFAX_PRINT_INFOA PFAX_PRINT_INFO;
  749. #endif // UNICODE
  750. typedef struct _FAX_CONTEXT_INFOA
  751. {
  752. DWORD SizeOfStruct; // Size of this structure
  753. HDC hDC; // Device Context
  754. CHAR ServerName[MAX_COMPUTERNAME_LENGTH+1]; // Server name
  755. } FAX_CONTEXT_INFOA, *PFAX_CONTEXT_INFOA;
  756. typedef struct _FAX_CONTEXT_INFOW
  757. {
  758. DWORD SizeOfStruct; // Size of this structure
  759. HDC hDC; // Device Context
  760. WCHAR ServerName[MAX_COMPUTERNAME_LENGTH+1]; // Server name
  761. } FAX_CONTEXT_INFOW, *PFAX_CONTEXT_INFOW;
  762. #ifdef UNICODE
  763. typedef FAX_CONTEXT_INFOW FAX_CONTEXT_INFO;
  764. typedef PFAX_CONTEXT_INFOW PFAX_CONTEXT_INFO;
  765. #else
  766. typedef FAX_CONTEXT_INFOA FAX_CONTEXT_INFO;
  767. typedef PFAX_CONTEXT_INFOA PFAX_CONTEXT_INFO;
  768. #endif // UNICODE
  769. //
  770. // prototypes
  771. //
  772. WINFAXAPI
  773. BOOL
  774. WINAPI
  775. FaxConnectFaxServerA(
  776. IN LPCSTR MachineName OPTIONAL,
  777. OUT LPHANDLE FaxHandle
  778. );
  779. WINFAXAPI
  780. BOOL
  781. WINAPI
  782. FaxConnectFaxServerW(
  783. IN LPCWSTR MachineName OPTIONAL,
  784. OUT LPHANDLE FaxHandle
  785. );
  786. #ifdef UNICODE
  787. #define FaxConnectFaxServer FaxConnectFaxServerW
  788. #else
  789. #define FaxConnectFaxServer FaxConnectFaxServerA
  790. #endif // !UNICODE
  791. typedef BOOL
  792. (WINAPI *PFAXCONNECTFAXSERVERA)(
  793. IN LPCSTR MachineName OPTIONAL,
  794. OUT LPHANDLE FaxHandle
  795. );
  796. typedef BOOL
  797. (WINAPI *PFAXCONNECTFAXSERVERW)(
  798. IN LPCWSTR MachineName OPTIONAL,
  799. OUT LPHANDLE FaxHandle
  800. );
  801. #ifdef UNICODE
  802. #define PFAXCONNECTFAXSERVER PFAXCONNECTFAXSERVERW
  803. #else
  804. #define PFAXCONNECTFAXSERVER PFAXCONNECTFAXSERVERA
  805. #endif // !UNICODE
  806. WINFAXAPI
  807. BOOL
  808. WINAPI
  809. FaxClose(
  810. IN HANDLE FaxHandle
  811. );
  812. typedef BOOL
  813. (WINAPI *PFAXCLOSE)(
  814. IN HANDLE FaxHandle
  815. );
  816. typedef enum
  817. {
  818. PORT_OPEN_QUERY = 1,
  819. PORT_OPEN_MODIFY
  820. } FAX_ENUM_PORT_OPEN_TYPE;
  821. WINFAXAPI
  822. BOOL
  823. WINAPI
  824. FaxOpenPort(
  825. IN HANDLE FaxHandle,
  826. IN DWORD DeviceId,
  827. IN DWORD Flags,
  828. OUT LPHANDLE FaxPortHandle
  829. );
  830. typedef BOOL
  831. (WINAPI *PFAXOPENPORT)(
  832. IN HANDLE FaxHandle,
  833. IN DWORD DeviceId,
  834. IN DWORD Flags,
  835. OUT LPHANDLE FaxPortHandle
  836. );
  837. WINFAXAPI
  838. BOOL
  839. WINAPI
  840. FaxCompleteJobParamsA(
  841. IN OUT PFAX_JOB_PARAMA *JobParams,
  842. IN OUT PFAX_COVERPAGE_INFOA *CoverpageInfo
  843. );
  844. WINFAXAPI
  845. BOOL
  846. WINAPI
  847. FaxCompleteJobParamsW(
  848. IN OUT PFAX_JOB_PARAMW *JobParams,
  849. IN OUT PFAX_COVERPAGE_INFOW *CoverpageInfo
  850. );
  851. #ifdef UNICODE
  852. #define FaxCompleteJobParams FaxCompleteJobParamsW
  853. #else
  854. #define FaxCompleteJobParams FaxCompleteJobParamsA
  855. #endif // !UNICODE
  856. typedef BOOL
  857. (WINAPI *PFAXCOMPLETEJOBPARAMSA)(
  858. IN OUT PFAX_JOB_PARAMA *JobParams,
  859. IN OUT PFAX_COVERPAGE_INFOA *CoverpageInfo
  860. );
  861. typedef BOOL
  862. (WINAPI *PFAXCOMPLETEJOBPARAMSW)(
  863. IN OUT PFAX_JOB_PARAMW *JobParams,
  864. IN OUT PFAX_COVERPAGE_INFOW *CoverpageInfo
  865. );
  866. #ifdef UNICODE
  867. #define PFAXCOMPLETEJOBPARAMS PFAXCOMPLETEJOBPARAMSW
  868. #else
  869. #define PFAXCOMPLETEJOBPARAMS PFAXCOMPLETEJOBPARAMSA
  870. #endif // !UNICODE
  871. WINFAXAPI
  872. BOOL
  873. WINAPI
  874. FaxSendDocumentA(
  875. IN HANDLE FaxHandle,
  876. IN LPCSTR FileName,
  877. IN PFAX_JOB_PARAMA JobParams,
  878. IN const FAX_COVERPAGE_INFOA *CoverpageInfo, OPTIONAL
  879. OUT LPDWORD FaxJobId OPTIONAL
  880. );
  881. WINFAXAPI
  882. BOOL
  883. WINAPI
  884. FaxSendDocumentW(
  885. IN HANDLE FaxHandle,
  886. IN LPCWSTR FileName,
  887. IN PFAX_JOB_PARAMW JobParams,
  888. IN const FAX_COVERPAGE_INFOW *CoverpageInfo, OPTIONAL
  889. OUT LPDWORD FaxJobId OPTIONAL
  890. );
  891. #ifdef UNICODE
  892. #define FaxSendDocument FaxSendDocumentW
  893. #else
  894. #define FaxSendDocument FaxSendDocumentA
  895. #endif // !UNICODE
  896. typedef BOOL
  897. (WINAPI *PFAXSENDDOCUMENTA)(
  898. IN HANDLE FaxHandle,
  899. IN LPCSTR FileName,
  900. IN PFAX_JOB_PARAMA JobParams,
  901. IN const FAX_COVERPAGE_INFOA *CoverpageInfo, OPTIONAL
  902. OUT LPDWORD FaxJobId OPTIONAL
  903. );
  904. typedef BOOL
  905. (WINAPI *PFAXSENDDOCUMENTW)(
  906. IN HANDLE FaxHandle,
  907. IN LPCWSTR FileName,
  908. IN PFAX_JOB_PARAMW JobParams,
  909. IN const FAX_COVERPAGE_INFOW *CoverpageInfo, OPTIONAL
  910. OUT LPDWORD FaxJobId OPTIONAL
  911. );
  912. #ifdef UNICODE
  913. #define PFAXSENDDOCUMENT PFAXSENDDOCUMENTW
  914. #else
  915. #define PFAXSENDDOCUMENT PFAXSENDDOCUMENTA
  916. #endif // !UNICODE
  917. typedef BOOL
  918. (CALLBACK *PFAX_RECIPIENT_CALLBACKA)(
  919. IN HANDLE FaxHandle,
  920. IN DWORD RecipientNumber,
  921. IN LPVOID Context,
  922. IN OUT PFAX_JOB_PARAMA JobParams,
  923. IN OUT PFAX_COVERPAGE_INFOA CoverpageInfo OPTIONAL
  924. );
  925. typedef BOOL
  926. (CALLBACK *PFAX_RECIPIENT_CALLBACKW)(
  927. IN HANDLE FaxHandle,
  928. IN DWORD RecipientNumber,
  929. IN LPVOID Context,
  930. IN OUT PFAX_JOB_PARAMW JobParams,
  931. IN OUT PFAX_COVERPAGE_INFOW CoverpageInfo OPTIONAL
  932. );
  933. #ifdef UNICODE
  934. #define PFAX_RECIPIENT_CALLBACK PFAX_RECIPIENT_CALLBACKW
  935. #else
  936. #define PFAX_RECIPIENT_CALLBACK PFAX_RECIPIENT_CALLBACKA
  937. #endif // !UNICODE
  938. WINFAXAPI
  939. BOOL
  940. WINAPI
  941. FaxSendDocumentForBroadcastA(
  942. IN HANDLE FaxHandle,
  943. IN LPCSTR FileName,
  944. OUT LPDWORD FaxJobId,
  945. IN PFAX_RECIPIENT_CALLBACKA FaxRecipientCallback,
  946. IN LPVOID Context
  947. );
  948. WINFAXAPI
  949. BOOL
  950. WINAPI
  951. FaxSendDocumentForBroadcastW(
  952. IN HANDLE FaxHandle,
  953. IN LPCWSTR FileName,
  954. OUT LPDWORD FaxJobId,
  955. IN PFAX_RECIPIENT_CALLBACKW FaxRecipientCallback,
  956. IN LPVOID Context
  957. );
  958. #ifdef UNICODE
  959. #define FaxSendDocumentForBroadcast FaxSendDocumentForBroadcastW
  960. #else
  961. #define FaxSendDocumentForBroadcast FaxSendDocumentForBroadcastA
  962. #endif // !UNICODE
  963. typedef BOOL
  964. (WINAPI *PFAXSENDDOCUMENTFORBROADCASTA)(
  965. IN HANDLE FaxHandle,
  966. IN LPCSTR FileName,
  967. OUT LPDWORD FaxJobId,
  968. IN PFAX_RECIPIENT_CALLBACKA FaxRecipientCallback,
  969. IN LPVOID Context
  970. );
  971. typedef BOOL
  972. (WINAPI *PFAXSENDDOCUMENTFORBROADCASTW)(
  973. IN HANDLE FaxHandle,
  974. IN LPCWSTR FileName,
  975. OUT LPDWORD FaxJobId,
  976. IN PFAX_RECIPIENT_CALLBACKW FaxRecipientCallback,
  977. IN LPVOID Context
  978. );
  979. #ifdef UNICODE
  980. #define PFAXSENDDOCUMENTFORBROADCAST PFAXSENDDOCUMENTFORBROADCASTW
  981. #else
  982. #define PFAXSENDDOCUMENTFORBROADCAST PFAXSENDDOCUMENTFORBROADCASTA
  983. #endif // !UNICODE
  984. WINFAXAPI
  985. BOOL
  986. WINAPI
  987. FaxSetJobA(
  988. IN HANDLE FaxHandle,
  989. IN DWORD JobId,
  990. IN DWORD Command,
  991. IN const FAX_JOB_ENTRYA *JobEntry
  992. );
  993. WINFAXAPI
  994. BOOL
  995. WINAPI
  996. FaxSetJobW(
  997. IN HANDLE FaxHandle,
  998. IN DWORD JobId,
  999. IN DWORD Command,
  1000. IN const FAX_JOB_ENTRYW *JobEntry
  1001. );
  1002. #ifdef UNICODE
  1003. #define FaxSetJob FaxSetJobW
  1004. #else
  1005. #define FaxSetJob FaxSetJobA
  1006. #endif // !UNICODE
  1007. typedef BOOL
  1008. (WINAPI *PFAXSETJOBA)(
  1009. IN HANDLE FaxHandle,
  1010. IN DWORD JobId,
  1011. IN DWORD Command,
  1012. IN const FAX_JOB_ENTRYA *JobEntry
  1013. );
  1014. typedef BOOL
  1015. (WINAPI *PFAXSETJOBW)(
  1016. IN HANDLE FaxHandle,
  1017. IN DWORD JobId,
  1018. IN DWORD Command,
  1019. IN const FAX_JOB_ENTRYW *JobEntry
  1020. );
  1021. #ifdef UNICODE
  1022. #define PFAXSETJOB PFAXSETJOBW
  1023. #else
  1024. #define PFAXSETJOB PFAXSETJOBA
  1025. #endif // !UNICODE
  1026. WINFAXAPI
  1027. BOOL
  1028. WINAPI
  1029. FaxGetPageData(
  1030. IN HANDLE FaxHandle,
  1031. IN DWORD JobId,
  1032. OUT LPBYTE *Buffer,
  1033. OUT LPDWORD BufferSize,
  1034. OUT LPDWORD ImageWidth,
  1035. OUT LPDWORD ImageHeight
  1036. );
  1037. typedef BOOL
  1038. (WINAPI *PFAXGETPAGEDATA)(
  1039. IN HANDLE FaxHandle,
  1040. IN DWORD JobId,
  1041. OUT LPBYTE *Buffer,
  1042. OUT LPDWORD BufferSize,
  1043. OUT LPDWORD ImageWidth,
  1044. OUT LPDWORD ImageHeight
  1045. );
  1046. WINFAXAPI
  1047. BOOL
  1048. WINAPI
  1049. FaxGetDeviceStatusA(
  1050. IN HANDLE FaxPortHandle,
  1051. OUT PFAX_DEVICE_STATUSA *DeviceStatus
  1052. );
  1053. WINFAXAPI
  1054. BOOL
  1055. WINAPI
  1056. FaxGetDeviceStatusW(
  1057. IN HANDLE FaxPortHandle,
  1058. OUT PFAX_DEVICE_STATUSW *DeviceStatus
  1059. );
  1060. #ifdef UNICODE
  1061. #define FaxGetDeviceStatus FaxGetDeviceStatusW
  1062. #else
  1063. #define FaxGetDeviceStatus FaxGetDeviceStatusA
  1064. #endif // !UNICODE
  1065. typedef BOOL
  1066. (WINAPI *PFAXGETDEVICESTATUSA)(
  1067. IN HANDLE FaxPortHandle,
  1068. OUT PFAX_DEVICE_STATUSA *DeviceStatus
  1069. );
  1070. typedef BOOL
  1071. (WINAPI *PFAXGETDEVICESTATUSW)(
  1072. IN HANDLE FaxPortHandle,
  1073. OUT PFAX_DEVICE_STATUSW *DeviceStatus
  1074. );
  1075. #ifdef UNICODE
  1076. #define PFAXGETDEVICESTATUS PFAXGETDEVICESTATUSW
  1077. #else
  1078. #define PFAXGETDEVICESTATUS PFAXGETDEVICESTATUSA
  1079. #endif // !UNICODE
  1080. WINFAXAPI
  1081. BOOL
  1082. WINAPI
  1083. FaxAbort(
  1084. IN HANDLE FaxHandle,
  1085. IN DWORD JobId
  1086. );
  1087. typedef BOOL
  1088. (WINAPI *PFAXABORT)(
  1089. IN HANDLE FaxHandle,
  1090. IN DWORD JobId
  1091. );
  1092. WINFAXAPI
  1093. BOOL
  1094. WINAPI
  1095. FaxGetConfigurationA(
  1096. IN HANDLE FaxHandle,
  1097. OUT PFAX_CONFIGURATIONA *FaxConfig
  1098. );
  1099. WINFAXAPI
  1100. BOOL
  1101. WINAPI
  1102. FaxGetConfigurationW(
  1103. IN HANDLE FaxHandle,
  1104. OUT PFAX_CONFIGURATIONW *FaxConfig
  1105. );
  1106. #ifdef UNICODE
  1107. #define FaxGetConfiguration FaxGetConfigurationW
  1108. #else
  1109. #define FaxGetConfiguration FaxGetConfigurationA
  1110. #endif // !UNICODE
  1111. typedef BOOL
  1112. (WINAPI *PFAXGETCONFIGURATIONA)(
  1113. IN HANDLE FaxHandle,
  1114. OUT PFAX_CONFIGURATIONA *FaxConfig
  1115. );
  1116. typedef BOOL
  1117. (WINAPI *PFAXGETCONFIGURATIONW)(
  1118. IN HANDLE FaxHandle,
  1119. OUT PFAX_CONFIGURATIONW *FaxConfig
  1120. );
  1121. #ifdef UNICODE
  1122. #define PFAXGETCONFIGURATION PFAXGETCONFIGURATIONW
  1123. #else
  1124. #define PFAXGETCONFIGURATION PFAXGETCONFIGURATIONA
  1125. #endif // !UNICODE
  1126. WINFAXAPI
  1127. BOOL
  1128. WINAPI
  1129. FaxSetConfigurationA(
  1130. IN HANDLE FaxHandle,
  1131. IN const FAX_CONFIGURATIONA *FaxConfig
  1132. );
  1133. WINFAXAPI
  1134. BOOL
  1135. WINAPI
  1136. FaxSetConfigurationW(
  1137. IN HANDLE FaxHandle,
  1138. IN const FAX_CONFIGURATIONW *FaxConfig
  1139. );
  1140. #ifdef UNICODE
  1141. #define FaxSetConfiguration FaxSetConfigurationW
  1142. #else
  1143. #define FaxSetConfiguration FaxSetConfigurationA
  1144. #endif // !UNICODE
  1145. typedef BOOL
  1146. (WINAPI *PFAXSETCONFIGURATIONA)(
  1147. IN HANDLE FaxHandle,
  1148. IN const FAX_CONFIGURATIONA *FaxConfig
  1149. );
  1150. typedef BOOL
  1151. (WINAPI *PFAXSETCONFIGURATIONW)(
  1152. IN HANDLE FaxHandle,
  1153. IN const FAX_CONFIGURATIONW *FaxConfig
  1154. );
  1155. #ifdef UNICODE
  1156. #define PFAXSETCONFIGURATION PFAXSETCONFIGURATIONW
  1157. #else
  1158. #define PFAXSETCONFIGURATION PFAXSETCONFIGURATIONA
  1159. #endif // !UNICODE
  1160. WINFAXAPI
  1161. BOOL
  1162. WINAPI
  1163. FaxGetLoggingCategoriesA(
  1164. IN HANDLE FaxHandle,
  1165. OUT PFAX_LOG_CATEGORYA *Categories,
  1166. OUT LPDWORD NumberCategories
  1167. );
  1168. WINFAXAPI
  1169. BOOL
  1170. WINAPI
  1171. FaxGetLoggingCategoriesW(
  1172. IN HANDLE FaxHandle,
  1173. OUT PFAX_LOG_CATEGORYW *Categories,
  1174. OUT LPDWORD NumberCategories
  1175. );
  1176. #ifdef UNICODE
  1177. #define FaxGetLoggingCategories FaxGetLoggingCategoriesW
  1178. #else
  1179. #define FaxGetLoggingCategories FaxGetLoggingCategoriesA
  1180. #endif // !UNICODE
  1181. typedef BOOL
  1182. (WINAPI *PFAXGETLOGGINGCATEGORIESA)(
  1183. IN HANDLE FaxHandle,
  1184. OUT PFAX_LOG_CATEGORYA *Categories,
  1185. OUT LPDWORD NumberCategories
  1186. );
  1187. typedef BOOL
  1188. (WINAPI *PFAXGETLOGGINGCATEGORIESW)(
  1189. IN HANDLE FaxHandle,
  1190. OUT PFAX_LOG_CATEGORYW *Categories,
  1191. OUT LPDWORD NumberCategories
  1192. );
  1193. #ifdef UNICODE
  1194. #define PFAXGETLOGGINGCATEGORIES PFAXGETLOGGINGCATEGORIESW
  1195. #else
  1196. #define PFAXGETLOGGINGCATEGORIES PFAXGETLOGGINGCATEGORIESA
  1197. #endif // !UNICODE
  1198. WINFAXAPI
  1199. BOOL
  1200. WINAPI
  1201. FaxSetLoggingCategoriesA(
  1202. IN HANDLE FaxHandle,
  1203. IN const FAX_LOG_CATEGORYA *Categories,
  1204. IN DWORD NumberCategories
  1205. );
  1206. WINFAXAPI
  1207. BOOL
  1208. WINAPI
  1209. FaxSetLoggingCategoriesW(
  1210. IN HANDLE FaxHandle,
  1211. IN const FAX_LOG_CATEGORYW *Categories,
  1212. IN DWORD NumberCategories
  1213. );
  1214. #ifdef UNICODE
  1215. #define FaxSetLoggingCategories FaxSetLoggingCategoriesW
  1216. #else
  1217. #define FaxSetLoggingCategories FaxSetLoggingCategoriesA
  1218. #endif // !UNICODE
  1219. typedef BOOL
  1220. (WINAPI *PFAXSETLOGGINGCATEGORIESA)(
  1221. IN HANDLE FaxHandle,
  1222. IN const FAX_LOG_CATEGORYA *Categories,
  1223. IN DWORD NumberCategories
  1224. );
  1225. typedef BOOL
  1226. (WINAPI *PFAXSETLOGGINGCATEGORIESW)(
  1227. IN HANDLE FaxHandle,
  1228. IN const FAX_LOG_CATEGORYW *Categories,
  1229. IN DWORD NumberCategories
  1230. );
  1231. #ifdef UNICODE
  1232. #define PFAXSETLOGGINGCATEGORIES PFAXSETLOGGINGCATEGORIESW
  1233. #else
  1234. #define PFAXSETLOGGINGCATEGORIES PFAXSETLOGGINGCATEGORIESA
  1235. #endif // !UNICODE
  1236. WINFAXAPI
  1237. BOOL
  1238. WINAPI
  1239. FaxEnumPortsA(
  1240. IN HANDLE FaxHandle,
  1241. OUT PFAX_PORT_INFOA *PortInfo,
  1242. OUT LPDWORD PortsReturned
  1243. );
  1244. WINFAXAPI
  1245. BOOL
  1246. WINAPI
  1247. FaxEnumPortsW(
  1248. IN HANDLE FaxHandle,
  1249. OUT PFAX_PORT_INFOW *PortInfo,
  1250. OUT LPDWORD PortsReturned
  1251. );
  1252. #ifdef UNICODE
  1253. #define FaxEnumPorts FaxEnumPortsW
  1254. #else
  1255. #define FaxEnumPorts FaxEnumPortsA
  1256. #endif // !UNICODE
  1257. typedef BOOL
  1258. (WINAPI *PFAXENUMPORTSA)(
  1259. IN HANDLE FaxHandle,
  1260. OUT PFAX_PORT_INFOA *PortInfo,
  1261. OUT LPDWORD PortsReturned
  1262. );
  1263. typedef BOOL
  1264. (WINAPI *PFAXENUMPORTSW)(
  1265. IN HANDLE FaxHandle,
  1266. OUT PFAX_PORT_INFOW *PortInfo,
  1267. OUT LPDWORD PortsReturned
  1268. );
  1269. #ifdef UNICODE
  1270. #define PFAXENUMPORTS PFAXENUMPORTSW
  1271. #else
  1272. #define PFAXENUMPORTS PFAXENUMPORTSA
  1273. #endif // !UNICODE
  1274. WINFAXAPI
  1275. BOOL
  1276. WINAPI
  1277. FaxGetPortA(
  1278. IN HANDLE FaxPortHandle,
  1279. OUT PFAX_PORT_INFOA *PortInfo
  1280. );
  1281. WINFAXAPI
  1282. BOOL
  1283. WINAPI
  1284. FaxGetPortW(
  1285. IN HANDLE FaxPortHandle,
  1286. OUT PFAX_PORT_INFOW *PortInfo
  1287. );
  1288. #ifdef UNICODE
  1289. #define FaxGetPort FaxGetPortW
  1290. #else
  1291. #define FaxGetPort FaxGetPortA
  1292. #endif // !UNICODE
  1293. typedef BOOL
  1294. (WINAPI *PFAXGETPORTA)(
  1295. IN HANDLE FaxPortHandle,
  1296. OUT PFAX_PORT_INFOA *PortInfo
  1297. );
  1298. typedef BOOL
  1299. (WINAPI *PFAXGETPORTW)(
  1300. IN HANDLE FaxPortHandle,
  1301. OUT PFAX_PORT_INFOW *PortInfo
  1302. );
  1303. #ifdef UNICODE
  1304. #define PFAXGETPORT PFAXGETPORTW
  1305. #else
  1306. #define PFAXGETPORT PFAXGETPORTA
  1307. #endif // !UNICODE
  1308. WINFAXAPI
  1309. BOOL
  1310. WINAPI
  1311. FaxSetPortA(
  1312. IN HANDLE FaxPortHandle,
  1313. IN const FAX_PORT_INFOA *PortInfo
  1314. );
  1315. WINFAXAPI
  1316. BOOL
  1317. WINAPI
  1318. FaxSetPortW(
  1319. IN HANDLE FaxPortHandle,
  1320. IN const FAX_PORT_INFOW *PortInfo
  1321. );
  1322. #ifdef UNICODE
  1323. #define FaxSetPort FaxSetPortW
  1324. #else
  1325. #define FaxSetPort FaxSetPortA
  1326. #endif // !UNICODE
  1327. typedef BOOL
  1328. (WINAPI *PFAXSETPORTA)(
  1329. IN HANDLE FaxPortHandle,
  1330. IN const FAX_PORT_INFOA *PortInfo
  1331. );
  1332. typedef BOOL
  1333. (WINAPI *PFAXSETPORTW)(
  1334. IN HANDLE FaxPortHandle,
  1335. IN const FAX_PORT_INFOW *PortInfo
  1336. );
  1337. #ifdef UNICODE
  1338. #define PFAXSETPORT PFAXSETPORTW
  1339. #else
  1340. #define PFAXSETPORT PFAXSETPORTA
  1341. #endif // !UNICODE
  1342. WINFAXAPI
  1343. BOOL
  1344. WINAPI
  1345. FaxEnumRoutingMethodsA(
  1346. IN HANDLE FaxPortHandle,
  1347. OUT PFAX_ROUTING_METHODA *RoutingMethod,
  1348. OUT LPDWORD MethodsReturned
  1349. );
  1350. WINFAXAPI
  1351. BOOL
  1352. WINAPI
  1353. FaxEnumRoutingMethodsW(
  1354. IN HANDLE FaxPortHandle,
  1355. OUT PFAX_ROUTING_METHODW *RoutingMethod,
  1356. OUT LPDWORD MethodsReturned
  1357. );
  1358. #ifdef UNICODE
  1359. #define FaxEnumRoutingMethods FaxEnumRoutingMethodsW
  1360. #else
  1361. #define FaxEnumRoutingMethods FaxEnumRoutingMethodsA
  1362. #endif // !UNICODE
  1363. typedef BOOL
  1364. (WINAPI *PFAXENUMROUTINGMETHODSA)(
  1365. IN HANDLE FaxPortHandle,
  1366. OUT PFAX_ROUTING_METHODA *RoutingMethod,
  1367. OUT LPDWORD MethodsReturned
  1368. );
  1369. typedef BOOL
  1370. (WINAPI *PFAXENUMROUTINGMETHODSW)(
  1371. IN HANDLE FaxPortHandle,
  1372. OUT PFAX_ROUTING_METHODW *RoutingMethod,
  1373. OUT LPDWORD MethodsReturned
  1374. );
  1375. #ifdef UNICODE
  1376. #define PFAXENUMROUTINGMETHODS PFAXENUMROUTINGMETHODSW
  1377. #else
  1378. #define PFAXENUMROUTINGMETHODS PFAXENUMROUTINGMETHODSA
  1379. #endif // !UNICODE
  1380. WINFAXAPI
  1381. BOOL
  1382. WINAPI
  1383. FaxEnableRoutingMethodA(
  1384. IN HANDLE FaxPortHandle,
  1385. IN LPCSTR RoutingGuid,
  1386. IN BOOL Enabled
  1387. );
  1388. WINFAXAPI
  1389. BOOL
  1390. WINAPI
  1391. FaxEnableRoutingMethodW(
  1392. IN HANDLE FaxPortHandle,
  1393. IN LPCWSTR RoutingGuid,
  1394. IN BOOL Enabled
  1395. );
  1396. #ifdef UNICODE
  1397. #define FaxEnableRoutingMethod FaxEnableRoutingMethodW
  1398. #else
  1399. #define FaxEnableRoutingMethod FaxEnableRoutingMethodA
  1400. #endif // !UNICODE
  1401. typedef BOOL
  1402. (WINAPI *PFAXENABLEROUTINGMETHODA)(
  1403. IN HANDLE FaxPortHandle,
  1404. IN LPCSTR RoutingGuid,
  1405. IN BOOL Enabled
  1406. );
  1407. typedef BOOL
  1408. (WINAPI *PFAXENABLEROUTINGMETHODW)(
  1409. IN HANDLE FaxPortHandle,
  1410. IN LPCWSTR RoutingGuid,
  1411. IN BOOL Enabled
  1412. );
  1413. #ifdef UNICODE
  1414. #define PFAXENABLEROUTINGMETHOD PFAXENABLEROUTINGMETHODW
  1415. #else
  1416. #define PFAXENABLEROUTINGMETHOD PFAXENABLEROUTINGMETHODA
  1417. #endif // !UNICODE
  1418. WINFAXAPI
  1419. BOOL
  1420. WINAPI
  1421. FaxEnumGlobalRoutingInfoA(
  1422. IN HANDLE FaxHandle,
  1423. OUT PFAX_GLOBAL_ROUTING_INFOA *RoutingInfo,
  1424. OUT LPDWORD MethodsReturned
  1425. );
  1426. WINFAXAPI
  1427. BOOL
  1428. WINAPI
  1429. FaxEnumGlobalRoutingInfoW(
  1430. IN HANDLE FaxHandle,
  1431. OUT PFAX_GLOBAL_ROUTING_INFOW *RoutingInfo,
  1432. OUT LPDWORD MethodsReturned
  1433. );
  1434. #ifdef UNICODE
  1435. #define FaxEnumGlobalRoutingInfo FaxEnumGlobalRoutingInfoW
  1436. #else
  1437. #define FaxEnumGlobalRoutingInfo FaxEnumGlobalRoutingInfoA
  1438. #endif // !UNICODE
  1439. typedef BOOL
  1440. (WINAPI *PFAXENUMGLOBALROUTINGINFOA)(
  1441. IN HANDLE FaxHandle,
  1442. OUT PFAX_GLOBAL_ROUTING_INFOA *RoutingInfo,
  1443. OUT LPDWORD MethodsReturned
  1444. );
  1445. typedef BOOL
  1446. (WINAPI *PFAXENUMGLOBALROUTINGINFOW)(
  1447. IN HANDLE FaxHandle,
  1448. OUT PFAX_GLOBAL_ROUTING_INFOW *RoutingInfo,
  1449. OUT LPDWORD MethodsReturned
  1450. );
  1451. #ifdef UNICODE
  1452. #define PFAXENUMGLOBALROUTINGINFO PFAXENUMGLOBALROUTINGINFOW
  1453. #else
  1454. #define PFAXENUMGLOBALROUTINGINFO PFAXENUMGLOBALROUTINGINFOA
  1455. #endif // !UNICODE
  1456. WINFAXAPI
  1457. BOOL
  1458. WINAPI
  1459. FaxSetGlobalRoutingInfoA(
  1460. IN HANDLE FaxHandle,
  1461. IN const FAX_GLOBAL_ROUTING_INFOA *RoutingInfo
  1462. );
  1463. WINFAXAPI
  1464. BOOL
  1465. WINAPI
  1466. FaxSetGlobalRoutingInfoW(
  1467. IN HANDLE FaxHandle,
  1468. IN const FAX_GLOBAL_ROUTING_INFOW *RoutingInfo
  1469. );
  1470. #ifdef UNICODE
  1471. #define FaxSetGlobalRoutingInfo FaxSetGlobalRoutingInfoW
  1472. #else
  1473. #define FaxSetGlobalRoutingInfo FaxSetGlobalRoutingInfoA
  1474. #endif // !UNICODE
  1475. typedef BOOL
  1476. (WINAPI *PFAXSETGLOBALROUTINGINFOA)(
  1477. IN HANDLE FaxPortHandle,
  1478. IN const FAX_GLOBAL_ROUTING_INFOA *RoutingInfo
  1479. );
  1480. typedef BOOL
  1481. (WINAPI *PFAXSETGLOBALROUTINGINFOW)(
  1482. IN HANDLE FaxPortHandle,
  1483. IN const FAX_GLOBAL_ROUTING_INFOW *RoutingInfo
  1484. );
  1485. #ifdef UNICODE
  1486. #define PFAXSETGLOBALROUTINGINFO PFAXSETGLOBALROUTINGINFOW
  1487. #else
  1488. #define PFAXSETGLOBALROUTINGINFO PFAXSETGLOBALROUTINGINFOA
  1489. #endif // !UNICODE
  1490. WINFAXAPI
  1491. BOOL
  1492. WINAPI
  1493. FaxGetRoutingInfoA(
  1494. IN HANDLE FaxPortHandle,
  1495. IN LPCSTR RoutingGuid,
  1496. OUT LPBYTE *RoutingInfoBuffer,
  1497. OUT LPDWORD RoutingInfoBufferSize
  1498. );
  1499. WINFAXAPI
  1500. BOOL
  1501. WINAPI
  1502. FaxGetRoutingInfoW(
  1503. IN HANDLE FaxPortHandle,
  1504. IN LPCWSTR RoutingGuid,
  1505. OUT LPBYTE *RoutingInfoBuffer,
  1506. OUT LPDWORD RoutingInfoBufferSize
  1507. );
  1508. #ifdef UNICODE
  1509. #define FaxGetRoutingInfo FaxGetRoutingInfoW
  1510. #else
  1511. #define FaxGetRoutingInfo FaxGetRoutingInfoA
  1512. #endif // !UNICODE
  1513. typedef BOOL
  1514. (WINAPI *PFAXGETROUTINGINFOA)(
  1515. IN HANDLE FaxPortHandle,
  1516. IN LPCSTR RoutingGuid,
  1517. OUT LPBYTE *RoutingInfoBuffer,
  1518. OUT LPDWORD RoutingInfoBufferSize
  1519. );
  1520. typedef BOOL
  1521. (WINAPI *PFAXGETROUTINGINFOW)(
  1522. IN HANDLE FaxPortHandle,
  1523. IN LPCWSTR RoutingGuid,
  1524. OUT LPBYTE *RoutingInfoBuffer,
  1525. OUT LPDWORD RoutingInfoBufferSize
  1526. );
  1527. #ifdef UNICODE
  1528. #define PFAXGETROUTINGINFO PFAXGETROUTINGINFOW
  1529. #else
  1530. #define PFAXGETROUTINGINFO PFAXGETROUTINGINFOA
  1531. #endif // !UNICODE
  1532. WINFAXAPI
  1533. BOOL
  1534. WINAPI
  1535. FaxSetRoutingInfoA(
  1536. IN HANDLE FaxPortHandle,
  1537. IN LPCSTR RoutingGuid,
  1538. IN const BYTE *RoutingInfoBuffer,
  1539. IN DWORD RoutingInfoBufferSize
  1540. );
  1541. WINFAXAPI
  1542. BOOL
  1543. WINAPI
  1544. FaxSetRoutingInfoW(
  1545. IN HANDLE FaxPortHandle,
  1546. IN LPCWSTR RoutingGuid,
  1547. IN const BYTE *RoutingInfoBuffer,
  1548. IN DWORD RoutingInfoBufferSize
  1549. );
  1550. #ifdef UNICODE
  1551. #define FaxSetRoutingInfo FaxSetRoutingInfoW
  1552. #else
  1553. #define FaxSetRoutingInfo FaxSetRoutingInfoA
  1554. #endif // !UNICODE
  1555. typedef BOOL
  1556. (WINAPI *PFAXSETROUTINGINFOA)(
  1557. IN HANDLE FaxPortHandle,
  1558. IN LPCSTR RoutingGuid,
  1559. IN const BYTE *RoutingInfoBuffer,
  1560. IN DWORD RoutingInfoBufferSize
  1561. );
  1562. typedef BOOL
  1563. (WINAPI *PFAXSETROUTINGINFOW)(
  1564. IN HANDLE FaxPortHandle,
  1565. IN LPCWSTR RoutingGuid,
  1566. IN const BYTE *RoutingInfoBuffer,
  1567. IN DWORD RoutingInfoBufferSize
  1568. );
  1569. #ifdef UNICODE
  1570. #define PFAXSETROUTINGINFO PFAXSETROUTINGINFOW
  1571. #else
  1572. #define PFAXSETROUTINGINFO PFAXSETROUTINGINFOA
  1573. #endif // !UNICODE
  1574. WINFAXAPI
  1575. BOOL
  1576. WINAPI
  1577. FaxRelease(
  1578. IN HANDLE FaxHandle
  1579. );
  1580. typedef BOOL
  1581. (WINAPI *PFAXRELEASE)(
  1582. IN HANDLE FaxHandle
  1583. );
  1584. BOOL
  1585. FXSAPIInitialize(
  1586. VOID
  1587. );
  1588. VOID
  1589. FXSAPIFree(
  1590. VOID
  1591. );
  1592. WINFAXAPI
  1593. BOOL
  1594. WINAPI
  1595. FaxStartPrintJob2A
  1596. (
  1597. IN LPCSTR PrinterName,
  1598. IN const FAX_PRINT_INFOA *PrintInfo,
  1599. IN short TiffRes,
  1600. OUT LPDWORD FaxJobId,
  1601. OUT PFAX_CONTEXT_INFOA FaxContextInfo
  1602. );
  1603. WINFAXAPI
  1604. BOOL
  1605. WINAPI
  1606. FaxStartPrintJob2W
  1607. (
  1608. IN LPCWSTR PrinterName,
  1609. IN const FAX_PRINT_INFOW *PrintInfo,
  1610. IN short TiffRes,
  1611. OUT LPDWORD FaxJobId,
  1612. OUT PFAX_CONTEXT_INFOW FaxContextInfo
  1613. );
  1614. #ifdef UNICODE
  1615. #define FaxStartPrintJob2 FaxStartPrintJob2W
  1616. #else
  1617. #define FaxStartPrintJob2 FaxStartPrintJob2A
  1618. #endif // !UNICODE
  1619. WINFAXAPI
  1620. BOOL
  1621. WINAPI
  1622. FaxInitializeEventQueue(
  1623. IN HANDLE FaxHandle,
  1624. IN HANDLE CompletionPort,
  1625. IN ULONG_PTR CompletionKey,
  1626. IN HWND hWnd,
  1627. IN UINT MessageStart
  1628. );
  1629. typedef BOOL
  1630. (WINAPI *PFAXINITIALIZEEVENTQUEUE)(
  1631. IN HANDLE FaxHandle,
  1632. IN HANDLE CompletionPort,
  1633. IN ULONG_PTR CompletionKey,
  1634. IN HWND hWnd,
  1635. IN UINT MessageStart
  1636. );
  1637. WINFAXAPI
  1638. VOID
  1639. WINAPI
  1640. FaxFreeBuffer(
  1641. LPVOID Buffer
  1642. );
  1643. typedef VOID
  1644. (WINAPI *PFAXFREEBUFFER)(
  1645. LPVOID Buffer
  1646. );
  1647. WINFAXAPI
  1648. BOOL
  1649. WINAPI
  1650. FaxStartPrintJobA(
  1651. IN LPCSTR PrinterName,
  1652. IN const FAX_PRINT_INFOA *PrintInfo,
  1653. OUT LPDWORD FaxJobId,
  1654. OUT PFAX_CONTEXT_INFOA FaxContextInfo
  1655. );
  1656. WINFAXAPI
  1657. BOOL
  1658. WINAPI
  1659. FaxStartPrintJobW(
  1660. IN LPCWSTR PrinterName,
  1661. IN const FAX_PRINT_INFOW *PrintInfo,
  1662. OUT LPDWORD FaxJobId,
  1663. OUT PFAX_CONTEXT_INFOW FaxContextInfo
  1664. );
  1665. #ifdef UNICODE
  1666. #define FaxStartPrintJob FaxStartPrintJobW
  1667. #else
  1668. #define FaxStartPrintJob FaxStartPrintJobA
  1669. #endif // !UNICODE
  1670. typedef BOOL
  1671. (WINAPI *PFAXSTARTPRINTJOBA)(
  1672. IN LPCSTR PrinterName,
  1673. IN const FAX_PRINT_INFOA *PrintInfo,
  1674. OUT LPDWORD FaxJobId,
  1675. OUT PFAX_CONTEXT_INFOA FaxContextInfo
  1676. );
  1677. typedef BOOL
  1678. (WINAPI *PFAXSTARTPRINTJOBW)(
  1679. IN LPCWSTR PrinterName,
  1680. IN const FAX_PRINT_INFOW *PrintInfo,
  1681. OUT LPDWORD FaxJobId,
  1682. OUT PFAX_CONTEXT_INFOW FaxContextInfo
  1683. );
  1684. #ifdef UNICODE
  1685. #define PFAXSTARTPRINTJOB PFAXSTARTPRINTJOBW
  1686. #else
  1687. #define PFAXSTARTPRINTJOB PFAXSTARTPRINTJOBA
  1688. #endif // !UNICODE
  1689. WINFAXAPI
  1690. BOOL
  1691. WINAPI
  1692. FaxPrintCoverPageA(
  1693. IN const FAX_CONTEXT_INFOA *FaxContextInfo,
  1694. IN const FAX_COVERPAGE_INFOA *CoverPageInfo
  1695. );
  1696. WINFAXAPI
  1697. BOOL
  1698. WINAPI
  1699. FaxPrintCoverPageW(
  1700. IN const FAX_CONTEXT_INFOW *FaxContextInfo,
  1701. IN const FAX_COVERPAGE_INFOW *CoverPageInfo
  1702. );
  1703. #ifdef UNICODE
  1704. #define FaxPrintCoverPage FaxPrintCoverPageW
  1705. #else
  1706. #define FaxPrintCoverPage FaxPrintCoverPageA
  1707. #endif // !UNICODE
  1708. typedef BOOL
  1709. (WINAPI *PFAXPRINTCOVERPAGEA)(
  1710. IN const FAX_CONTEXT_INFOA *FaxContextInfo,
  1711. IN const FAX_COVERPAGE_INFOA *CoverPageInfo
  1712. );
  1713. typedef BOOL
  1714. (WINAPI *PFAXPRINTCOVERPAGEW)(
  1715. IN const FAX_CONTEXT_INFOW *FaxContextInfo,
  1716. IN const FAX_COVERPAGE_INFOW *CoverPageInfo
  1717. );
  1718. #ifdef UNICODE
  1719. #define PFAXPRINTCOVERPAGE PFAXPRINTCOVERPAGEW
  1720. #else
  1721. #define PFAXPRINTCOVERPAGE PFAXPRINTCOVERPAGEA
  1722. #endif // !UNICODE
  1723. WINFAXAPI
  1724. BOOL
  1725. WINAPI
  1726. FaxRegisterServiceProviderW(
  1727. IN LPCWSTR DeviceProvider,
  1728. IN LPCWSTR FriendlyName,
  1729. IN LPCWSTR ImageName,
  1730. IN LPCWSTR TspName
  1731. );
  1732. #define FaxRegisterServiceProvider FaxRegisterServiceProviderW
  1733. typedef BOOL
  1734. (WINAPI *PFAXREGISTERSERVICEPROVIDERW)(
  1735. IN LPCWSTR DeviceProvider,
  1736. IN LPCWSTR FriendlyName,
  1737. IN LPCWSTR ImageName,
  1738. IN LPCWSTR TspName
  1739. );
  1740. #define PFAXREGISTERSERVICEPROVIDER PFAXREGISTERSERVICEPROVIDERW
  1741. WINFAXAPI
  1742. BOOL
  1743. WINAPI
  1744. FaxUnregisterServiceProviderW(
  1745. IN LPCWSTR DeviceProvider
  1746. );
  1747. #define FaxUnregisterServiceProvider FaxUnregisterServiceProviderW
  1748. typedef BOOL
  1749. (WINAPI *PFAXUNREGISTERSERVICEPROVIDERW)(
  1750. IN LPCWSTR DeviceProvider
  1751. );
  1752. #define PFAXUNREGISTERSERVICEPROVIDER PFAXUNREGISTERSERVICEPROVIDERW
  1753. typedef BOOL
  1754. (CALLBACK *PFAX_ROUTING_INSTALLATION_CALLBACKW)(
  1755. IN HANDLE FaxHandle,
  1756. IN LPVOID Context,
  1757. IN OUT LPWSTR MethodName,
  1758. IN OUT LPWSTR FriendlyName,
  1759. IN OUT LPWSTR FunctionName,
  1760. IN OUT LPWSTR Guid
  1761. );
  1762. #define PFAX_ROUTING_INSTALLATION_CALLBACK PFAX_ROUTING_INSTALLATION_CALLBACKW
  1763. WINFAXAPI
  1764. BOOL
  1765. WINAPI
  1766. FaxRegisterRoutingExtensionW(
  1767. IN HANDLE FaxHandle,
  1768. IN LPCWSTR ExtensionName,
  1769. IN LPCWSTR FriendlyName,
  1770. IN LPCWSTR ImageName,
  1771. IN PFAX_ROUTING_INSTALLATION_CALLBACKW CallBack,
  1772. IN LPVOID Context
  1773. );
  1774. #define FaxRegisterRoutingExtension FaxRegisterRoutingExtensionW
  1775. typedef BOOL
  1776. (WINAPI *PFAXREGISTERROUTINGEXTENSIONW)(
  1777. IN HANDLE FaxHandle,
  1778. IN LPCWSTR ExtensionName,
  1779. IN LPCWSTR FriendlyName,
  1780. IN LPCWSTR ImageName,
  1781. IN PFAX_ROUTING_INSTALLATION_CALLBACKW CallBack,
  1782. IN LPVOID Context
  1783. );
  1784. #define PFAXREGISTERROUTINGEXTENSION PFAXREGISTERROUTINGEXTENSIONW
  1785. WINFAXAPI
  1786. BOOL
  1787. WINAPI
  1788. FaxUnregisterRoutingExtensionA(
  1789. IN HANDLE hFaxHandle,
  1790. IN LPCSTR lpctstrExtensionName
  1791. );
  1792. WINFAXAPI
  1793. BOOL
  1794. WINAPI
  1795. FaxUnregisterRoutingExtensionW(
  1796. IN HANDLE hFaxHandle,
  1797. IN LPCWSTR lpctstrExtensionName
  1798. );
  1799. #ifdef UNICODE
  1800. #define FaxUnregisterRoutingExtension FaxUnregisterRoutingExtensionW
  1801. #else
  1802. #define FaxUnregisterRoutingExtension FaxUnregisterRoutingExtensionA
  1803. #endif // !UNICODE
  1804. WINFAXAPI
  1805. BOOL
  1806. WINAPI
  1807. FaxGetInstallType(
  1808. IN HANDLE FaxHandle,
  1809. OUT LPDWORD InstallType,
  1810. OUT LPDWORD InstalledPlatforms,
  1811. OUT LPDWORD ProductType
  1812. );
  1813. typedef BOOL
  1814. (WINAPI *PFAXGETINSTALLTYPE)(
  1815. IN HANDLE FaxHandle,
  1816. OUT LPDWORD InstallType,
  1817. OUT LPDWORD InstalledPlatforms,
  1818. OUT LPDWORD ProductType
  1819. );
  1820. WINFAXAPI
  1821. BOOL
  1822. WINAPI
  1823. FaxAccessCheck(
  1824. IN HANDLE FaxHandle,
  1825. IN DWORD AccessMask
  1826. );
  1827. typedef BOOL
  1828. (WINAPI *PFAXACCESSCHECK)(
  1829. IN HANDLE FaxHandle,
  1830. IN DWORD AccessMask
  1831. );
  1832. //
  1833. // Fax Specific Access Rights
  1834. //
  1835. #define FAX_JOB_SUBMIT (0x0001)
  1836. #define FAX_JOB_QUERY (0x0002)
  1837. #define FAX_CONFIG_QUERY (0x0004)
  1838. #define FAX_CONFIG_SET (0x0008)
  1839. #define FAX_PORT_QUERY (0x0010)
  1840. #define FAX_PORT_SET (0x0020)
  1841. #define FAX_JOB_MANAGE (0x0040)
  1842. #define FAX_READ (STANDARD_RIGHTS_READ |\
  1843. FAX_JOB_QUERY |\
  1844. FAX_CONFIG_QUERY |\
  1845. FAX_PORT_QUERY)
  1846. #define FAX_WRITE (STANDARD_RIGHTS_WRITE |\
  1847. FAX_JOB_SUBMIT )
  1848. #define FAX_ALL_ACCESS (STANDARD_RIGHTS_ALL |\
  1849. FAX_JOB_SUBMIT |\
  1850. FAX_JOB_QUERY |\
  1851. FAX_CONFIG_QUERY |\
  1852. FAX_CONFIG_SET |\
  1853. FAX_PORT_QUERY |\
  1854. FAX_PORT_SET |\
  1855. FAX_JOB_MANAGE)
  1856. //************************************
  1857. //* Extended API Functions
  1858. //************************************
  1859. #define MAX_DIR_PATH 248
  1860. //
  1861. // Outbound routing defines
  1862. //
  1863. #define ROUTING_RULE_COUNTRY_CODE_ANY 0 // Outbound routing rule - Any country dialing code
  1864. #define ROUTING_RULE_AREA_CODE_ANY 0 // Outbound routing rule - Any area dialing code
  1865. #define MAX_ROUTING_GROUP_NAME 128
  1866. #define ROUTING_GROUP_ALL_DEVICESW L"<All devices>"
  1867. #define ROUTING_GROUP_ALL_DEVICESA "<All devices>"
  1868. #ifdef UNICODE
  1869. #define ROUTING_GROUP_ALL_DEVICES ROUTING_GROUP_ALL_DEVICESW
  1870. #else
  1871. #define ROUTING_GROUP_ALL_DEVICES ROUTING_GROUP_ALL_DEVICESA;
  1872. #endif // UNICODE
  1873. //
  1874. // Activity logging defines
  1875. //
  1876. #define ACTIVITY_LOG_INBOX_FILENAME TEXT("InboxLOG")
  1877. #define ACTIVITY_LOG_OUTBOX_FILENAME TEXT("OutboxLOG")
  1878. #define ACTIVITY_LOG_FILE_EXTENSION TEXT(".txt")
  1879. #define ACTIVITY_LOG_INBOX_FILE ACTIVITY_LOG_INBOX_FILENAME ACTIVITY_LOG_FILE_EXTENSION
  1880. #define ACTIVITY_LOG_OUTBOX_FILE ACTIVITY_LOG_OUTBOX_FILENAME ACTIVITY_LOG_FILE_EXTENSION
  1881. #define ACTIVITY_LOG_INBOX_FILENAME_TEMPLATE ACTIVITY_LOG_INBOX_FILENAME TEXT(" %04d-%02d-%02d - %04d-%02d-%02d") ACTIVITY_LOG_FILE_EXTENSION
  1882. #define ACTIVITY_LOG_OUTBOX_FILENAME_TEMPLATE ACTIVITY_LOG_OUTBOX_FILENAME TEXT(" %04d-%02d-%02d - %04d-%02d-%02d") ACTIVITY_LOG_FILE_EXTENSION
  1883. #define ACTIVITY_LOG_INBOX (0x0000)
  1884. #define ACTIVITY_LOG_OUTBOX (0x0001)
  1885. #define ACTIVITY_LOG_LIMIT_CRITERIA_NONE (0x0000)
  1886. #define ACTIVITY_LOG_LIMIT_CRITERIA_SIZE (0x0001)
  1887. #define ACTIVITY_LOG_LIMIT_CRITERIA_AGE (0x0002)
  1888. #define ACTIVITY_LOG_LIMIT_REACHED_ACTION_COPY (0x0000)
  1889. #define ACTIVITY_LOG_LIMIT_REACHED_ACTION_DELETE (0x0001)
  1890. #define ACTIVITY_LOG_DEFAULT_SIZE_LIMIT (50) // 50 Mbyte
  1891. #define ACTIVITY_LOG_DEFAULT_AGE_LIMIT (1) // 1 Month
  1892. //
  1893. // Archive defines
  1894. //
  1895. #define FAX_ARCHIVE_FOLDER_INVALID_SIZE MAKELONGLONG(0xffffffff, 0xffffffff)
  1896. #define MAX_ARCHIVE_FOLDER_PATH 180
  1897. //
  1898. // New job status codes
  1899. //
  1900. #define JS_COMPLETED 0x00000100
  1901. #define JS_CANCELED 0x00000200
  1902. #define JS_CANCELING 0x00000400
  1903. #define JS_ROUTING 0x00000800
  1904. //
  1905. // Extended job status defines
  1906. //
  1907. #define JS_EX_DISCONNECTED 0x00000001
  1908. #define JS_EX_INITIALIZING 0x00000002
  1909. #define JS_EX_DIALING 0x00000003
  1910. #define JS_EX_TRANSMITTING 0x00000004
  1911. #define JS_EX_ANSWERED 0x00000005
  1912. #define JS_EX_RECEIVING 0x00000006
  1913. #define JS_EX_LINE_UNAVAILABLE 0x00000007
  1914. #define JS_EX_BUSY 0x00000008
  1915. #define JS_EX_NO_ANSWER 0x00000009
  1916. #define JS_EX_BAD_ADDRESS 0x0000000A
  1917. #define JS_EX_NO_DIAL_TONE 0x0000000B
  1918. #define JS_EX_FATAL_ERROR 0x0000000C
  1919. #define JS_EX_CALL_DELAYED 0x0000000D
  1920. #define JS_EX_CALL_BLACKLISTED 0x0000000E
  1921. #define JS_EX_NOT_FAX_CALL 0x0000000F
  1922. #define JS_EX_PARTIALLY_RECEIVED 0x00000010
  1923. #define JS_EX_HANDLED 0x00000011
  1924. #define FAX_API_VER_0_MAX_JS_EX JS_EX_HANDLED // API version 0 was only aware of extended status codes up to JS_EX_HANDLED
  1925. #define JS_EX_CALL_COMPLETED 0x00000012
  1926. #define JS_EX_CALL_ABORTED 0x00000013
  1927. #define FAX_API_VER_1_MAX_JS_EX JS_EX_CALL_ABORTED // API version 0 was only aware of extended status codes up to JS_EX_CALL_ABORTED
  1928. //
  1929. // Available job operations
  1930. //
  1931. typedef enum
  1932. {
  1933. FAX_JOB_OP_VIEW = 0x0001,
  1934. FAX_JOB_OP_PAUSE = 0x0002,
  1935. FAX_JOB_OP_RESUME = 0x0004,
  1936. FAX_JOB_OP_RESTART = 0x0008,
  1937. FAX_JOB_OP_DELETE = 0x0010,
  1938. FAX_JOB_OP_RECIPIENT_INFO = 0x0020,
  1939. FAX_JOB_OP_SENDER_INFO = 0x0040
  1940. } FAX_ENUM_JOB_OP;
  1941. //************************************
  1942. //* Getting / Settings the queue state
  1943. //************************************
  1944. typedef enum
  1945. {
  1946. FAX_INCOMING_BLOCKED = 0x0001,
  1947. FAX_OUTBOX_BLOCKED = 0x0002,
  1948. FAX_OUTBOX_PAUSED = 0x0004
  1949. } FAX_ENUM_QUEUE_STATE;
  1950. WINFAXAPI
  1951. BOOL
  1952. WINAPI
  1953. FaxGetQueueStates (
  1954. IN HANDLE hFaxHandle,
  1955. OUT PDWORD pdwQueueStates
  1956. );
  1957. WINFAXAPI
  1958. BOOL
  1959. WINAPI
  1960. FaxSetQueue (
  1961. IN HANDLE hFaxHandle,
  1962. IN CONST DWORD dwQueueStates
  1963. );
  1964. //************************************************
  1965. //* Getting / Setting the receipts configuration
  1966. //************************************************
  1967. typedef enum
  1968. {
  1969. FAX_SMTP_AUTH_ANONYMOUS,
  1970. FAX_SMTP_AUTH_BASIC,
  1971. FAX_SMTP_AUTH_NTLM
  1972. } FAX_ENUM_SMTP_AUTH_OPTIONS;
  1973. typedef struct _FAX_RECEIPTS_CONFIGA
  1974. {
  1975. DWORD dwSizeOfStruct; // For version checks
  1976. DWORD dwAllowedReceipts; // Any combination of DRT_EMAIL and DRT_MSGBOX
  1977. FAX_ENUM_SMTP_AUTH_OPTIONS SMTPAuthOption; // SMTP server authentication type
  1978. LPSTR lptstrReserved; // Reserved; must be NULL
  1979. LPSTR lptstrSMTPServer; // SMTP server name
  1980. DWORD dwSMTPPort; // SMTP port number
  1981. LPSTR lptstrSMTPFrom; // SMTP sender address
  1982. LPSTR lptstrSMTPUserName; // SMTP user name (for authenticated connections)
  1983. LPSTR lptstrSMTPPassword; // SMTP password (for authenticated connections)
  1984. // This value is always NULL on get and may be NULL
  1985. // on set (won't be written in the server).
  1986. BOOL bIsToUseForMSRouteThroughEmailMethod;
  1987. } FAX_RECEIPTS_CONFIGA, *PFAX_RECEIPTS_CONFIGA;
  1988. typedef struct _FAX_RECEIPTS_CONFIGW
  1989. {
  1990. DWORD dwSizeOfStruct; // For version checks
  1991. DWORD dwAllowedReceipts; // Any combination of DRT_EMAIL and DRT_MSGBOX
  1992. FAX_ENUM_SMTP_AUTH_OPTIONS SMTPAuthOption; // SMTP server authentication type
  1993. LPWSTR lptstrReserved; // Reserved; must be NULL
  1994. LPWSTR lptstrSMTPServer; // SMTP server name
  1995. DWORD dwSMTPPort; // SMTP port number
  1996. LPWSTR lptstrSMTPFrom; // SMTP sender address
  1997. LPWSTR lptstrSMTPUserName; // SMTP user name (for authenticated connections)
  1998. LPWSTR lptstrSMTPPassword; // SMTP password (for authenticated connections)
  1999. // This value is always NULL on get and may be NULL
  2000. // on set (won't be written in the server).
  2001. BOOL bIsToUseForMSRouteThroughEmailMethod;
  2002. } FAX_RECEIPTS_CONFIGW, *PFAX_RECEIPTS_CONFIGW;
  2003. #ifdef UNICODE
  2004. typedef FAX_RECEIPTS_CONFIGW FAX_RECEIPTS_CONFIG;
  2005. typedef PFAX_RECEIPTS_CONFIGW PFAX_RECEIPTS_CONFIG;
  2006. #else
  2007. typedef FAX_RECEIPTS_CONFIGA FAX_RECEIPTS_CONFIG;
  2008. typedef PFAX_RECEIPTS_CONFIGA PFAX_RECEIPTS_CONFIG;
  2009. #endif // UNICODE
  2010. WINFAXAPI
  2011. BOOL
  2012. WINAPI
  2013. FaxGetReceiptsConfigurationA (
  2014. IN HANDLE hFaxHandle,
  2015. OUT PFAX_RECEIPTS_CONFIGA *ppReceipts
  2016. );
  2017. WINFAXAPI
  2018. BOOL
  2019. WINAPI
  2020. FaxGetReceiptsConfigurationW (
  2021. IN HANDLE hFaxHandle,
  2022. OUT PFAX_RECEIPTS_CONFIGW *ppReceipts
  2023. );
  2024. #ifdef UNICODE
  2025. #define FaxGetReceiptsConfiguration FaxGetReceiptsConfigurationW
  2026. #else
  2027. #define FaxGetReceiptsConfiguration FaxGetReceiptsConfigurationA
  2028. #endif // !UNICODE
  2029. WINFAXAPI
  2030. BOOL
  2031. WINAPI
  2032. FaxSetReceiptsConfigurationA (
  2033. IN HANDLE hFaxHandle,
  2034. IN CONST PFAX_RECEIPTS_CONFIGA pReceipts
  2035. );
  2036. WINFAXAPI
  2037. BOOL
  2038. WINAPI
  2039. FaxSetReceiptsConfigurationW (
  2040. IN HANDLE hFaxHandle,
  2041. IN CONST PFAX_RECEIPTS_CONFIGW pReceipts
  2042. );
  2043. #ifdef UNICODE
  2044. #define FaxSetReceiptsConfiguration FaxSetReceiptsConfigurationW
  2045. #else
  2046. #define FaxSetReceiptsConfiguration FaxSetReceiptsConfigurationA
  2047. #endif // !UNICODE
  2048. WINFAXAPI
  2049. BOOL
  2050. WINAPI
  2051. FaxGetReceiptsOptions (
  2052. IN HANDLE hFaxHandle,
  2053. OUT PDWORD pdwReceiptsOptions // Combination of DRT_EMAIL and DRT_MSGBOX
  2054. );
  2055. //********************************************
  2056. //* Server version
  2057. //********************************************
  2058. typedef struct _FAX_VERSION
  2059. {
  2060. DWORD dwSizeOfStruct; // Size of this structure
  2061. BOOL bValid; // Is version valid?
  2062. WORD wMajorVersion;
  2063. WORD wMinorVersion;
  2064. WORD wMajorBuildNumber;
  2065. WORD wMinorBuildNumber;
  2066. DWORD dwFlags; // Combination of FAX_VER_FLAG_*
  2067. } FAX_VERSION, *PFAX_VERSION;
  2068. typedef enum
  2069. {
  2070. FAX_VER_FLAG_CHECKED = 0x00000001, // File was built in debug mode
  2071. FAX_VER_FLAG_EVALUATION = 0x00000002 // Evaluation build
  2072. } FAX_VERSION_FLAGS;
  2073. WINFAXAPI
  2074. BOOL
  2075. WINAPI
  2076. FaxGetVersion (
  2077. IN HANDLE hFaxHandle,
  2078. OUT PFAX_VERSION pVersion
  2079. );
  2080. #define FAX_API_VERSION_0 0x00000000 // BOS/SBS 2000 Fax Server API (0.0)
  2081. #define FAX_API_VERSION_1 0x00010000 // Windows XP Fax Server API (1.0)
  2082. #define FAX_API_VERSION_2 0x00020000 // Windows Server 2003 Fax Server API (2.0)
  2083. //
  2084. // NOTICE: Change this value whenever a new API version is introduced.
  2085. //
  2086. #define CURRENT_FAX_API_VERSION FAX_API_VERSION_2
  2087. WINFAXAPI
  2088. BOOL
  2089. WINAPI
  2090. FaxGetReportedServerAPIVersion (
  2091. IN HANDLE hFaxHandle,
  2092. OUT LPDWORD lpdwReportedServerAPIVersion
  2093. );
  2094. //********************************************
  2095. //* Activity logging
  2096. //********************************************
  2097. typedef struct _FAX_ACTIVITY_LOGGING_CONFIGA
  2098. {
  2099. DWORD dwSizeOfStruct;
  2100. BOOL bLogIncoming;
  2101. BOOL bLogOutgoing;
  2102. LPSTR lptstrDBPath;
  2103. } FAX_ACTIVITY_LOGGING_CONFIGA, *PFAX_ACTIVITY_LOGGING_CONFIGA;
  2104. typedef struct _FAX_ACTIVITY_LOGGING_CONFIGW
  2105. {
  2106. DWORD dwSizeOfStruct;
  2107. BOOL bLogIncoming;
  2108. BOOL bLogOutgoing;
  2109. LPWSTR lptstrDBPath;
  2110. } FAX_ACTIVITY_LOGGING_CONFIGW, *PFAX_ACTIVITY_LOGGING_CONFIGW;
  2111. #ifdef UNICODE
  2112. typedef FAX_ACTIVITY_LOGGING_CONFIGW FAX_ACTIVITY_LOGGING_CONFIG;
  2113. typedef PFAX_ACTIVITY_LOGGING_CONFIGW PFAX_ACTIVITY_LOGGING_CONFIG;
  2114. #else
  2115. typedef FAX_ACTIVITY_LOGGING_CONFIGA FAX_ACTIVITY_LOGGING_CONFIG;
  2116. typedef PFAX_ACTIVITY_LOGGING_CONFIGA PFAX_ACTIVITY_LOGGING_CONFIG;
  2117. #endif // UNICODE
  2118. WINFAXAPI
  2119. BOOL
  2120. WINAPI
  2121. FaxGetActivityLoggingConfigurationA (
  2122. IN HANDLE hFaxHandle,
  2123. OUT PFAX_ACTIVITY_LOGGING_CONFIGA *ppActivLogCfg
  2124. );
  2125. WINFAXAPI
  2126. BOOL
  2127. WINAPI
  2128. FaxGetActivityLoggingConfigurationW (
  2129. IN HANDLE hFaxHandle,
  2130. OUT PFAX_ACTIVITY_LOGGING_CONFIGW *ppActivLogCfg
  2131. );
  2132. #ifdef UNICODE
  2133. #define FaxGetActivityLoggingConfiguration FaxGetActivityLoggingConfigurationW
  2134. #else
  2135. #define FaxGetActivityLoggingConfiguration FaxGetActivityLoggingConfigurationA
  2136. #endif // !UNICODE
  2137. WINFAXAPI
  2138. BOOL
  2139. WINAPI
  2140. FaxSetActivityLoggingConfigurationA (
  2141. IN HANDLE hFaxHandle,
  2142. IN CONST PFAX_ACTIVITY_LOGGING_CONFIGA pActivLogCfg
  2143. );
  2144. WINFAXAPI
  2145. BOOL
  2146. WINAPI
  2147. FaxSetActivityLoggingConfigurationW (
  2148. IN HANDLE hFaxHandle,
  2149. IN CONST PFAX_ACTIVITY_LOGGING_CONFIGW pActivLogCfg
  2150. );
  2151. #ifdef UNICODE
  2152. #define FaxSetActivityLoggingConfiguration FaxSetActivityLoggingConfigurationW
  2153. #else
  2154. #define FaxSetActivityLoggingConfiguration FaxSetActivityLoggingConfigurationA
  2155. #endif // !UNICODE
  2156. //********************************************
  2157. //* Outbox configuration
  2158. //********************************************
  2159. typedef struct _FAX_OUTBOX_CONFIG
  2160. {
  2161. DWORD dwSizeOfStruct;
  2162. BOOL bAllowPersonalCP;
  2163. BOOL bUseDeviceTSID;
  2164. DWORD dwRetries;
  2165. DWORD dwRetryDelay;
  2166. FAX_TIME dtDiscountStart;
  2167. FAX_TIME dtDiscountEnd;
  2168. DWORD dwAgeLimit;
  2169. BOOL bBranding;
  2170. } FAX_OUTBOX_CONFIG, *PFAX_OUTBOX_CONFIG;
  2171. WINFAXAPI
  2172. BOOL
  2173. WINAPI
  2174. FaxGetOutboxConfiguration (
  2175. IN HANDLE hFaxHandle,
  2176. OUT PFAX_OUTBOX_CONFIG *ppOutboxCfg
  2177. );
  2178. WINFAXAPI
  2179. BOOL
  2180. WINAPI
  2181. FaxSetOutboxConfiguration (
  2182. IN HANDLE hFaxHandle,
  2183. IN CONST PFAX_OUTBOX_CONFIG pOutboxCfg
  2184. );
  2185. WINFAXAPI
  2186. BOOL
  2187. WINAPI
  2188. FaxGetPersonalCoverPagesOption (
  2189. IN HANDLE hFaxHandle,
  2190. OUT LPBOOL lpbPersonalCPAllowed
  2191. );
  2192. //********************************************
  2193. //* Archive configuration
  2194. //********************************************
  2195. typedef enum
  2196. {
  2197. FAX_MESSAGE_FOLDER_INBOX,
  2198. FAX_MESSAGE_FOLDER_SENTITEMS,
  2199. FAX_MESSAGE_FOLDER_QUEUE
  2200. } FAX_ENUM_MESSAGE_FOLDER;
  2201. typedef struct _FAX_ARCHIVE_CONFIGA
  2202. {
  2203. DWORD dwSizeOfStruct;
  2204. BOOL bUseArchive;
  2205. LPSTR lpcstrFolder;
  2206. BOOL bSizeQuotaWarning;
  2207. DWORD dwSizeQuotaHighWatermark;
  2208. DWORD dwSizeQuotaLowWatermark;
  2209. DWORD dwAgeLimit;
  2210. DWORDLONG dwlArchiveSize;
  2211. } FAX_ARCHIVE_CONFIGA, *PFAX_ARCHIVE_CONFIGA;
  2212. typedef struct _FAX_ARCHIVE_CONFIGW
  2213. {
  2214. DWORD dwSizeOfStruct;
  2215. BOOL bUseArchive;
  2216. LPWSTR lpcstrFolder;
  2217. BOOL bSizeQuotaWarning;
  2218. DWORD dwSizeQuotaHighWatermark;
  2219. DWORD dwSizeQuotaLowWatermark;
  2220. DWORD dwAgeLimit;
  2221. DWORDLONG dwlArchiveSize;
  2222. } FAX_ARCHIVE_CONFIGW, *PFAX_ARCHIVE_CONFIGW;
  2223. #ifdef UNICODE
  2224. typedef FAX_ARCHIVE_CONFIGW FAX_ARCHIVE_CONFIG;
  2225. typedef PFAX_ARCHIVE_CONFIGW PFAX_ARCHIVE_CONFIG;
  2226. #else
  2227. typedef FAX_ARCHIVE_CONFIGA FAX_ARCHIVE_CONFIG;
  2228. typedef PFAX_ARCHIVE_CONFIGA PFAX_ARCHIVE_CONFIG;
  2229. #endif // UNICODE
  2230. WINFAXAPI
  2231. BOOL
  2232. WINAPI
  2233. FaxGetArchiveConfigurationA (
  2234. IN HANDLE hFaxHandle,
  2235. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  2236. OUT PFAX_ARCHIVE_CONFIGA *ppArchiveCfg
  2237. );
  2238. WINFAXAPI
  2239. BOOL
  2240. WINAPI
  2241. FaxGetArchiveConfigurationW (
  2242. IN HANDLE hFaxHandle,
  2243. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  2244. OUT PFAX_ARCHIVE_CONFIGW *ppArchiveCfg
  2245. );
  2246. #ifdef UNICODE
  2247. #define FaxGetArchiveConfiguration FaxGetArchiveConfigurationW
  2248. #else
  2249. #define FaxGetArchiveConfiguration FaxGetArchiveConfigurationA
  2250. #endif // !UNICODE
  2251. WINFAXAPI
  2252. BOOL
  2253. WINAPI
  2254. FaxSetArchiveConfigurationA (
  2255. IN HANDLE hFaxHandle,
  2256. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  2257. IN CONST PFAX_ARCHIVE_CONFIGA pArchiveCfg
  2258. );
  2259. WINFAXAPI
  2260. BOOL
  2261. WINAPI
  2262. FaxSetArchiveConfigurationW (
  2263. IN HANDLE hFaxHandle,
  2264. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  2265. IN CONST PFAX_ARCHIVE_CONFIGW pArchiveCfg
  2266. );
  2267. #ifdef UNICODE
  2268. #define FaxSetArchiveConfiguration FaxSetArchiveConfigurationW
  2269. #else
  2270. #define FaxSetArchiveConfiguration FaxSetArchiveConfigurationA
  2271. #endif // !UNICODE
  2272. //********************************************
  2273. //* Server activity
  2274. //********************************************
  2275. typedef struct _FAX_SERVER_ACTIVITY
  2276. {
  2277. DWORD dwSizeOfStruct;
  2278. DWORD dwIncomingMessages;
  2279. DWORD dwRoutingMessages;
  2280. DWORD dwOutgoingMessages;
  2281. DWORD dwDelegatedOutgoingMessages;
  2282. DWORD dwQueuedMessages;
  2283. DWORD dwErrorEvents;
  2284. DWORD dwWarningEvents;
  2285. DWORD dwInformationEvents;
  2286. } FAX_SERVER_ACTIVITY, *PFAX_SERVER_ACTIVITY;
  2287. WINFAXAPI
  2288. BOOL
  2289. WINAPI
  2290. FaxGetServerActivity (
  2291. IN HANDLE hFaxHandle,
  2292. OUT PFAX_SERVER_ACTIVITY pServerActivity
  2293. );
  2294. //********************************************
  2295. //* Queue jobs
  2296. //********************************************
  2297. typedef enum
  2298. {
  2299. FAX_PRIORITY_TYPE_LOW,
  2300. FAX_PRIORITY_TYPE_NORMAL,
  2301. FAX_PRIORITY_TYPE_HIGH
  2302. } FAX_ENUM_PRIORITY_TYPE;
  2303. #define FAX_PRIORITY_TYPE_DEFAULT FAX_PRIORITY_TYPE_LOW
  2304. typedef enum
  2305. {
  2306. FAX_JOB_FIELD_JOB_ID = 0x00000001,
  2307. FAX_JOB_FIELD_TYPE = 0x00000002,
  2308. FAX_JOB_FIELD_QUEUE_STATUS = 0x00000004,
  2309. FAX_JOB_FIELD_STATUS_EX = 0x00000008,
  2310. FAX_JOB_FIELD_SIZE = 0x00000010,
  2311. FAX_JOB_FIELD_PAGE_COUNT = 0x00000020,
  2312. FAX_JOB_FIELD_CURRENT_PAGE = 0x00000040,
  2313. FAX_JOB_FIELD_RECIPIENT_PROFILE = 0x00000080,
  2314. FAX_JOB_FIELD_SCHEDULE_TIME = 0x00000100,
  2315. FAX_JOB_FIELD_ORIGINAL_SCHEDULE_TIME = 0x00000200,
  2316. FAX_JOB_FIELD_SUBMISSION_TIME = 0x00000400,
  2317. FAX_JOB_FIELD_TRANSMISSION_START_TIME = 0x00000800,
  2318. FAX_JOB_FIELD_TRANSMISSION_END_TIME = 0x00001000,
  2319. FAX_JOB_FIELD_PRIORITY = 0x00002000,
  2320. FAX_JOB_FIELD_RETRIES = 0x00004000,
  2321. FAX_JOB_FIELD_DELIVERY_REPORT_TYPE = 0x00008000,
  2322. FAX_JOB_FIELD_SENDER_PROFILE = 0x00010000,
  2323. FAX_JOB_FIELD_STATUS_SUB_STRUCT = 0x00020000,
  2324. FAX_JOB_FIELD_DEVICE_ID = 0x00040000,
  2325. FAX_JOB_FIELD_MESSAGE_ID = 0x00080000,
  2326. FAX_JOB_FIELD_BROADCAST_ID = 0x00010000
  2327. } FAX_ENUM_JOB_FIELDS;
  2328. typedef struct _FAX_JOB_STATUSA
  2329. {
  2330. DWORD dwSizeOfStruct;
  2331. DWORD dwValidityMask;
  2332. DWORD dwJobID;
  2333. DWORD dwJobType;
  2334. DWORD dwQueueStatus;
  2335. DWORD dwExtendedStatus;
  2336. LPCSTR lpctstrExtendedStatus;
  2337. DWORD dwSize;
  2338. DWORD dwPageCount;
  2339. DWORD dwCurrentPage;
  2340. LPCSTR lpctstrTsid;
  2341. LPCSTR lpctstrCsid;
  2342. SYSTEMTIME tmScheduleTime;
  2343. SYSTEMTIME tmTransmissionStartTime;
  2344. SYSTEMTIME tmTransmissionEndTime;
  2345. DWORD dwDeviceID;
  2346. LPCSTR lpctstrDeviceName;
  2347. DWORD dwRetries;
  2348. LPCSTR lpctstrCallerID;
  2349. LPCSTR lpctstrRoutingInfo;
  2350. DWORD dwAvailableJobOperations;
  2351. } FAX_JOB_STATUSA, *PFAX_JOB_STATUSA;
  2352. typedef struct _FAX_JOB_STATUSW
  2353. {
  2354. DWORD dwSizeOfStruct;
  2355. DWORD dwValidityMask;
  2356. DWORD dwJobID;
  2357. DWORD dwJobType;
  2358. DWORD dwQueueStatus;
  2359. DWORD dwExtendedStatus;
  2360. LPCWSTR lpctstrExtendedStatus;
  2361. DWORD dwSize;
  2362. DWORD dwPageCount;
  2363. DWORD dwCurrentPage;
  2364. LPCWSTR lpctstrTsid;
  2365. LPCWSTR lpctstrCsid;
  2366. SYSTEMTIME tmScheduleTime;
  2367. SYSTEMTIME tmTransmissionStartTime;
  2368. SYSTEMTIME tmTransmissionEndTime;
  2369. DWORD dwDeviceID;
  2370. LPCWSTR lpctstrDeviceName;
  2371. DWORD dwRetries;
  2372. LPCWSTR lpctstrCallerID;
  2373. LPCWSTR lpctstrRoutingInfo;
  2374. DWORD dwAvailableJobOperations;
  2375. } FAX_JOB_STATUSW, *PFAX_JOB_STATUSW;
  2376. #ifdef UNICODE
  2377. typedef FAX_JOB_STATUSW FAX_JOB_STATUS;
  2378. typedef PFAX_JOB_STATUSW PFAX_JOB_STATUS;
  2379. #else
  2380. typedef FAX_JOB_STATUSA FAX_JOB_STATUS;
  2381. typedef PFAX_JOB_STATUSA PFAX_JOB_STATUS;
  2382. #endif // UNICODE
  2383. typedef struct _FAX_JOB_ENTRY_EXA
  2384. {
  2385. DWORD dwSizeOfStruct;
  2386. DWORD dwValidityMask;
  2387. DWORDLONG dwlMessageId;
  2388. DWORDLONG dwlBroadcastId;
  2389. LPCSTR lpctstrRecipientNumber;
  2390. LPCSTR lpctstrRecipientName;
  2391. LPCSTR lpctstrSenderUserName;
  2392. LPCSTR lpctstrBillingCode;
  2393. SYSTEMTIME tmOriginalScheduleTime;
  2394. SYSTEMTIME tmSubmissionTime;
  2395. FAX_ENUM_PRIORITY_TYPE Priority;
  2396. DWORD dwDeliveryReportType;
  2397. LPCSTR lpctstrDocumentName;
  2398. LPCSTR lpctstrSubject;
  2399. PFAX_JOB_STATUSA pStatus;
  2400. } FAX_JOB_ENTRY_EXA, *PFAX_JOB_ENTRY_EXA;
  2401. typedef struct _FAX_JOB_ENTRY_EXW
  2402. {
  2403. DWORD dwSizeOfStruct;
  2404. DWORD dwValidityMask;
  2405. DWORDLONG dwlMessageId;
  2406. DWORDLONG dwlBroadcastId;
  2407. LPCWSTR lpctstrRecipientNumber;
  2408. LPCWSTR lpctstrRecipientName;
  2409. LPCWSTR lpctstrSenderUserName;
  2410. LPCWSTR lpctstrBillingCode;
  2411. SYSTEMTIME tmOriginalScheduleTime;
  2412. SYSTEMTIME tmSubmissionTime;
  2413. FAX_ENUM_PRIORITY_TYPE Priority;
  2414. DWORD dwDeliveryReportType;
  2415. LPCWSTR lpctstrDocumentName;
  2416. LPCWSTR lpctstrSubject;
  2417. PFAX_JOB_STATUSW pStatus;
  2418. } FAX_JOB_ENTRY_EXW, *PFAX_JOB_ENTRY_EXW;
  2419. #ifdef UNICODE
  2420. typedef FAX_JOB_ENTRY_EXW FAX_JOB_ENTRY_EX;
  2421. typedef PFAX_JOB_ENTRY_EXW PFAX_JOB_ENTRY_EX;
  2422. #else
  2423. typedef FAX_JOB_ENTRY_EXA FAX_JOB_ENTRY_EX;
  2424. typedef PFAX_JOB_ENTRY_EXA PFAX_JOB_ENTRY_EX;
  2425. #endif // UNICODE
  2426. typedef struct _FAX_JOB_PARAM_EXA
  2427. {
  2428. DWORD dwSizeOfStruct;
  2429. DWORD dwScheduleAction;
  2430. SYSTEMTIME tmSchedule;
  2431. DWORD dwReceiptDeliveryType;
  2432. LPSTR lptstrReceiptDeliveryAddress;
  2433. FAX_ENUM_PRIORITY_TYPE Priority;
  2434. HCALL hCall;
  2435. DWORD_PTR dwReserved[4];
  2436. LPSTR lptstrDocumentName;
  2437. DWORD dwPageCount;
  2438. } FAX_JOB_PARAM_EXA, *PFAX_JOB_PARAM_EXA;
  2439. typedef struct _FAX_JOB_PARAM_EXW
  2440. {
  2441. DWORD dwSizeOfStruct;
  2442. DWORD dwScheduleAction;
  2443. SYSTEMTIME tmSchedule;
  2444. DWORD dwReceiptDeliveryType;
  2445. LPWSTR lptstrReceiptDeliveryAddress;
  2446. FAX_ENUM_PRIORITY_TYPE Priority;
  2447. HCALL hCall;
  2448. DWORD_PTR dwReserved[4];
  2449. LPWSTR lptstrDocumentName;
  2450. DWORD dwPageCount;
  2451. } FAX_JOB_PARAM_EXW, *PFAX_JOB_PARAM_EXW;
  2452. #ifdef UNICODE
  2453. typedef FAX_JOB_PARAM_EXW FAX_JOB_PARAM_EX;
  2454. typedef PFAX_JOB_PARAM_EXW PFAX_JOB_PARAM_EX;
  2455. #else
  2456. typedef FAX_JOB_PARAM_EXA FAX_JOB_PARAM_EX;
  2457. typedef PFAX_JOB_PARAM_EXA PFAX_JOB_PARAM_EX;
  2458. #endif // UNICODE
  2459. WINFAXAPI
  2460. BOOL
  2461. WINAPI FaxEnumJobsExA (
  2462. IN HANDLE hFaxHandle,
  2463. IN DWORD dwJobTypes,
  2464. OUT PFAX_JOB_ENTRY_EXA *ppJobEntries,
  2465. OUT LPDWORD lpdwJobs
  2466. );
  2467. WINFAXAPI
  2468. BOOL
  2469. WINAPI FaxEnumJobsExW (
  2470. IN HANDLE hFaxHandle,
  2471. IN DWORD dwJobTypes,
  2472. OUT PFAX_JOB_ENTRY_EXW *ppJobEntries,
  2473. OUT LPDWORD lpdwJobs
  2474. );
  2475. #ifdef UNICODE
  2476. #define FaxEnumJobsEx FaxEnumJobsExW
  2477. #else
  2478. #define FaxEnumJobsEx FaxEnumJobsExA
  2479. #endif // !UNICODE
  2480. WINFAXAPI
  2481. BOOL
  2482. WINAPI
  2483. FaxGetJobExA (
  2484. IN HANDLE hFaxHandle,
  2485. IN DWORDLONG dwlMessageID,
  2486. OUT PFAX_JOB_ENTRY_EXA *ppJobEntry
  2487. );
  2488. WINFAXAPI
  2489. BOOL
  2490. WINAPI
  2491. FaxGetJobExW (
  2492. IN HANDLE hFaxHandle,
  2493. IN DWORDLONG dwlMessageID,
  2494. OUT PFAX_JOB_ENTRY_EXW *ppJobEntry
  2495. );
  2496. #ifdef UNICODE
  2497. #define FaxGetJobEx FaxGetJobExW
  2498. #else
  2499. #define FaxGetJobEx FaxGetJobExA
  2500. #endif // !UNICODE
  2501. typedef const FAX_JOB_PARAM_EXW * LPCFAX_JOB_PARAM_EXW;
  2502. typedef const FAX_JOB_PARAM_EXA * LPCFAX_JOB_PARAM_EXA;
  2503. #ifdef UNICODE
  2504. typedef LPCFAX_JOB_PARAM_EXW LPCFAX_JOB_PARAM_EX;
  2505. #else
  2506. typedef LPCFAX_JOB_PARAM_EXA LPCFAX_JOB_PARAM_EX;
  2507. #endif
  2508. typedef enum
  2509. {
  2510. FAX_COVERPAGE_FMT_COV = 1,
  2511. FAX_COVERPAGE_FMT_COV_SUBJECT_ONLY
  2512. } FAX_ENUM_COVERPAGE_FORMATS;
  2513. typedef struct _FAX_COVERPAGE_INFO_EXA
  2514. {
  2515. DWORD dwSizeOfStruct;
  2516. DWORD dwCoverPageFormat;
  2517. LPSTR lptstrCoverPageFileName;
  2518. BOOL bServerBased;
  2519. LPSTR lptstrNote;
  2520. LPSTR lptstrSubject;
  2521. } FAX_COVERPAGE_INFO_EXA, *PFAX_COVERPAGE_INFO_EXA;
  2522. typedef struct _FAX_COVERPAGE_INFO_EXW
  2523. {
  2524. DWORD dwSizeOfStruct;
  2525. DWORD dwCoverPageFormat;
  2526. LPWSTR lptstrCoverPageFileName;
  2527. BOOL bServerBased;
  2528. LPWSTR lptstrNote;
  2529. LPWSTR lptstrSubject;
  2530. } FAX_COVERPAGE_INFO_EXW, *PFAX_COVERPAGE_INFO_EXW;
  2531. #ifdef UNICODE
  2532. typedef FAX_COVERPAGE_INFO_EXW FAX_COVERPAGE_INFO_EX;
  2533. typedef PFAX_COVERPAGE_INFO_EXW PFAX_COVERPAGE_INFO_EX;
  2534. #else
  2535. typedef FAX_COVERPAGE_INFO_EXA FAX_COVERPAGE_INFO_EX;
  2536. typedef PFAX_COVERPAGE_INFO_EXA PFAX_COVERPAGE_INFO_EX;
  2537. #endif // UNICODE
  2538. typedef const FAX_COVERPAGE_INFO_EXW * LPCFAX_COVERPAGE_INFO_EXW;
  2539. typedef const FAX_COVERPAGE_INFO_EXA * LPCFAX_COVERPAGE_INFO_EXA;
  2540. #ifdef UNICODE
  2541. typedef LPCFAX_COVERPAGE_INFO_EXW LPCFAX_COVERPAGE_INFO_EX;
  2542. #else
  2543. typedef LPCFAX_COVERPAGE_INFO_EXA LPCFAX_COVERPAGE_INFO_EX;
  2544. #endif
  2545. typedef struct _FAX_PERSONAL_PROFILEA
  2546. {
  2547. DWORD dwSizeOfStruct; // Size of this structure
  2548. LPSTR lptstrName; // Name of person
  2549. LPSTR lptstrFaxNumber; // Fax number
  2550. LPSTR lptstrCompany; // Company name
  2551. LPSTR lptstrStreetAddress; // Street address
  2552. LPSTR lptstrCity; // City
  2553. LPSTR lptstrState; // State
  2554. LPSTR lptstrZip; // Zip code
  2555. LPSTR lptstrCountry; // Country
  2556. LPSTR lptstrTitle; // Title
  2557. LPSTR lptstrDepartment; // Department
  2558. LPSTR lptstrOfficeLocation; // Office location
  2559. LPSTR lptstrHomePhone; // Phone number at home
  2560. LPSTR lptstrOfficePhone; // Phone number at office
  2561. LPSTR lptstrEmail; // Personal e-mail address
  2562. LPSTR lptstrBillingCode; // Billing code
  2563. LPSTR lptstrTSID; // Tsid
  2564. } FAX_PERSONAL_PROFILEA, *PFAX_PERSONAL_PROFILEA;
  2565. typedef struct _FAX_PERSONAL_PROFILEW
  2566. {
  2567. DWORD dwSizeOfStruct; // Size of this structure
  2568. LPWSTR lptstrName; // Name of person
  2569. LPWSTR lptstrFaxNumber; // Fax number
  2570. LPWSTR lptstrCompany; // Company name
  2571. LPWSTR lptstrStreetAddress; // Street address
  2572. LPWSTR lptstrCity; // City
  2573. LPWSTR lptstrState; // State
  2574. LPWSTR lptstrZip; // Zip code
  2575. LPWSTR lptstrCountry; // Country
  2576. LPWSTR lptstrTitle; // Title
  2577. LPWSTR lptstrDepartment; // Department
  2578. LPWSTR lptstrOfficeLocation; // Office location
  2579. LPWSTR lptstrHomePhone; // Phone number at home
  2580. LPWSTR lptstrOfficePhone; // Phone number at office
  2581. LPWSTR lptstrEmail; // Personal e-mail address
  2582. LPWSTR lptstrBillingCode; // Billing code
  2583. LPWSTR lptstrTSID; // Tsid
  2584. } FAX_PERSONAL_PROFILEW, *PFAX_PERSONAL_PROFILEW;
  2585. #ifdef UNICODE
  2586. typedef FAX_PERSONAL_PROFILEW FAX_PERSONAL_PROFILE;
  2587. typedef PFAX_PERSONAL_PROFILEW PFAX_PERSONAL_PROFILE;
  2588. #else
  2589. typedef FAX_PERSONAL_PROFILEA FAX_PERSONAL_PROFILE;
  2590. typedef PFAX_PERSONAL_PROFILEA PFAX_PERSONAL_PROFILE;
  2591. #endif // UNICODE
  2592. typedef const FAX_PERSONAL_PROFILEW * LPCFAX_PERSONAL_PROFILEW;
  2593. typedef const FAX_PERSONAL_PROFILEA * LPCFAX_PERSONAL_PROFILEA;
  2594. #ifdef UNICODE
  2595. typedef LPCFAX_PERSONAL_PROFILEW LPCFAX_PERSONAL_PROFILE;
  2596. #else
  2597. typedef LPCFAX_PERSONAL_PROFILEA LPCFAX_PERSONAL_PROFILE;
  2598. #endif
  2599. BOOL WINAPI FaxSendDocumentExA
  2600. (
  2601. IN HANDLE hFaxHandle,
  2602. IN LPCSTR lpctstrFileName,
  2603. IN LPCFAX_COVERPAGE_INFO_EXA lpcCoverPageInfo,
  2604. IN LPCFAX_PERSONAL_PROFILEA lpcSenderProfile,
  2605. IN DWORD dwNumRecipients,
  2606. IN LPCFAX_PERSONAL_PROFILEA lpcRecipientList,
  2607. IN LPCFAX_JOB_PARAM_EXA lpJobParams,
  2608. OUT PDWORDLONG lpdwlMessageId,
  2609. OUT PDWORDLONG lpdwlRecipientMessageIds
  2610. );
  2611. BOOL WINAPI FaxSendDocumentExW
  2612. (
  2613. IN HANDLE hFaxHandle,
  2614. IN LPCWSTR lpctstrFileName,
  2615. IN LPCFAX_COVERPAGE_INFO_EXW lpcCoverPageInfo,
  2616. IN LPCFAX_PERSONAL_PROFILEW lpcSenderProfile,
  2617. IN DWORD dwNumRecipients,
  2618. IN LPCFAX_PERSONAL_PROFILEW lpcRecipientList,
  2619. IN LPCFAX_JOB_PARAM_EXW lpJobParams,
  2620. OUT PDWORDLONG lpdwlMessageId,
  2621. OUT PDWORDLONG lpdwlRecipientMessageIds
  2622. );
  2623. #ifdef UNICODE
  2624. #define FaxSendDocumentEx FaxSendDocumentExW
  2625. #else
  2626. #define FaxSendDocumentEx FaxSendDocumentExA
  2627. #endif // !UNICODE
  2628. typedef BOOL
  2629. (WINAPI *PFAXSENDDOCUMENTEXA)(
  2630. IN HANDLE hFaxHandle,
  2631. IN LPCSTR lpctstrFileName,
  2632. IN LPCFAX_COVERPAGE_INFO_EXA lpcCoverPageInfo,
  2633. IN LPCFAX_PERSONAL_PROFILEA lpcSenderProfile,
  2634. IN DWORD dwNumRecipients,
  2635. IN LPCFAX_PERSONAL_PROFILEA lpcRecipientList,
  2636. IN LPCFAX_JOB_PARAM_EXA lpcJobParams,
  2637. OUT PDWORDLONG lpdwlMessageId,
  2638. OUT PDWORDLONG lpdwlRecipientMessageIds
  2639. );
  2640. typedef BOOL
  2641. (WINAPI *PFAXSENDDOCUMENTEXW)(
  2642. IN HANDLE hFaxHandle,
  2643. IN LPCWSTR lpctstrFileName,
  2644. IN LPCFAX_COVERPAGE_INFO_EXW lpcCoverPageInfo,
  2645. IN LPCFAX_PERSONAL_PROFILEW lpcSenderProfile,
  2646. IN DWORD dwNumRecipients,
  2647. IN LPCFAX_PERSONAL_PROFILEW lpcRecipientList,
  2648. IN LPCFAX_JOB_PARAM_EXW lpcJobParams,
  2649. OUT PDWORDLONG lpdwlMessageId,
  2650. OUT PDWORDLONG lpdwlRecipientMessageIds
  2651. );
  2652. #ifdef UNICODE
  2653. #define PFAXSENDDOCUMENTEX PFAXSENDDOCUMENTEXW
  2654. #else
  2655. #define PFAXSENDDOCUMENTEX PFAXSENDDOCUMENTEXA
  2656. #endif // !UNICODE
  2657. //********************************************
  2658. //* Archive jobs
  2659. //********************************************
  2660. typedef struct _FAX_MESSAGEA
  2661. {
  2662. DWORD dwSizeOfStruct;
  2663. DWORD dwValidityMask;
  2664. DWORDLONG dwlMessageId;
  2665. DWORDLONG dwlBroadcastId;
  2666. DWORD dwJobType;
  2667. DWORD dwQueueStatus;
  2668. DWORD dwExtendedStatus;
  2669. LPCSTR lpctstrExtendedStatus;
  2670. DWORD dwSize;
  2671. DWORD dwPageCount;
  2672. LPCSTR lpctstrRecipientNumber;
  2673. LPCSTR lpctstrRecipientName;
  2674. LPCSTR lpctstrSenderNumber;
  2675. LPCSTR lpctstrSenderName;
  2676. LPCSTR lpctstrTsid;
  2677. LPCSTR lpctstrCsid;
  2678. LPCSTR lpctstrSenderUserName;
  2679. LPCSTR lpctstrBillingCode;
  2680. SYSTEMTIME tmOriginalScheduleTime;
  2681. SYSTEMTIME tmSubmissionTime;
  2682. SYSTEMTIME tmTransmissionStartTime;
  2683. SYSTEMTIME tmTransmissionEndTime;
  2684. LPCSTR lpctstrDeviceName;
  2685. FAX_ENUM_PRIORITY_TYPE Priority;
  2686. DWORD dwRetries;
  2687. LPCSTR lpctstrDocumentName;
  2688. LPCSTR lpctstrSubject;
  2689. LPCSTR lpctstrCallerID;
  2690. LPCSTR lpctstrRoutingInfo;
  2691. } FAX_MESSAGEA, *PFAX_MESSAGEA;
  2692. typedef struct _FAX_MESSAGEW
  2693. {
  2694. DWORD dwSizeOfStruct;
  2695. DWORD dwValidityMask;
  2696. DWORDLONG dwlMessageId;
  2697. DWORDLONG dwlBroadcastId;
  2698. DWORD dwJobType;
  2699. DWORD dwQueueStatus;
  2700. DWORD dwExtendedStatus;
  2701. LPCWSTR lpctstrExtendedStatus;
  2702. DWORD dwSize;
  2703. DWORD dwPageCount;
  2704. LPCWSTR lpctstrRecipientNumber;
  2705. LPCWSTR lpctstrRecipientName;
  2706. LPCWSTR lpctstrSenderNumber;
  2707. LPCWSTR lpctstrSenderName;
  2708. LPCWSTR lpctstrTsid;
  2709. LPCWSTR lpctstrCsid;
  2710. LPCWSTR lpctstrSenderUserName;
  2711. LPCWSTR lpctstrBillingCode;
  2712. SYSTEMTIME tmOriginalScheduleTime;
  2713. SYSTEMTIME tmSubmissionTime;
  2714. SYSTEMTIME tmTransmissionStartTime;
  2715. SYSTEMTIME tmTransmissionEndTime;
  2716. LPCWSTR lpctstrDeviceName;
  2717. FAX_ENUM_PRIORITY_TYPE Priority;
  2718. DWORD dwRetries;
  2719. LPCWSTR lpctstrDocumentName;
  2720. LPCWSTR lpctstrSubject;
  2721. LPCWSTR lpctstrCallerID;
  2722. LPCWSTR lpctstrRoutingInfo;
  2723. } FAX_MESSAGEW, *PFAX_MESSAGEW;
  2724. #ifdef UNICODE
  2725. typedef FAX_MESSAGEW FAX_MESSAGE;
  2726. typedef PFAX_MESSAGEW PFAX_MESSAGE;
  2727. #else
  2728. typedef FAX_MESSAGEA FAX_MESSAGE;
  2729. typedef PFAX_MESSAGEA PFAX_MESSAGE;
  2730. #endif // UNICODE
  2731. WINFAXAPI
  2732. BOOL
  2733. WINAPI
  2734. FaxStartMessagesEnum (
  2735. IN HANDLE hFaxHandle,
  2736. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  2737. OUT PHANDLE phEnum
  2738. );
  2739. WINFAXAPI
  2740. BOOL
  2741. WINAPI
  2742. FaxEndMessagesEnum (
  2743. IN HANDLE hEnum
  2744. );
  2745. WINFAXAPI
  2746. BOOL
  2747. WINAPI
  2748. FaxEnumMessagesA (
  2749. IN HANDLE hEnum,
  2750. IN DWORD dwNumMessages,
  2751. OUT PFAX_MESSAGEA *ppMsgs,
  2752. OUT LPDWORD lpdwReturnedMsgs
  2753. );
  2754. WINFAXAPI
  2755. BOOL
  2756. WINAPI
  2757. FaxEnumMessagesW (
  2758. IN HANDLE hEnum,
  2759. IN DWORD dwNumMessages,
  2760. OUT PFAX_MESSAGEW *ppMsgs,
  2761. OUT LPDWORD lpdwReturnedMsgs
  2762. );
  2763. #ifdef UNICODE
  2764. #define FaxEnumMessages FaxEnumMessagesW
  2765. #else
  2766. #define FaxEnumMessages FaxEnumMessagesA
  2767. #endif // !UNICODE
  2768. WINFAXAPI
  2769. BOOL
  2770. WINAPI
  2771. FaxGetMessageA (
  2772. IN HANDLE hFaxHandle,
  2773. IN DWORDLONG dwlMessageId,
  2774. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  2775. OUT PFAX_MESSAGEA *ppMsg
  2776. );
  2777. WINFAXAPI
  2778. BOOL
  2779. WINAPI
  2780. FaxGetMessageW (
  2781. IN HANDLE hFaxHandle,
  2782. IN DWORDLONG dwlMessageId,
  2783. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  2784. OUT PFAX_MESSAGEW *ppMsg
  2785. );
  2786. #ifdef UNICODE
  2787. #define FaxGetMessage FaxGetMessageW
  2788. #else
  2789. #define FaxGetMessage FaxGetMessageA
  2790. #endif // !UNICODE
  2791. WINFAXAPI
  2792. BOOL
  2793. WINAPI
  2794. FaxRemoveMessage (
  2795. IN HANDLE hFaxHandle,
  2796. IN DWORDLONG dwlMessageId,
  2797. IN FAX_ENUM_MESSAGE_FOLDER Folder
  2798. );
  2799. WINFAXAPI
  2800. BOOL
  2801. WINAPI
  2802. FaxGetMessageTiffA (
  2803. IN HANDLE hFaxHandle,
  2804. IN DWORDLONG dwlMessageId,
  2805. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  2806. IN LPCSTR lpctstrFilePath
  2807. );
  2808. WINFAXAPI
  2809. BOOL
  2810. WINAPI
  2811. FaxGetMessageTiffW (
  2812. IN HANDLE hFaxHandle,
  2813. IN DWORDLONG dwlMessageId,
  2814. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  2815. IN LPCWSTR lpctstrFilePath
  2816. );
  2817. #ifdef UNICODE
  2818. #define FaxGetMessageTiff FaxGetMessageTiffW
  2819. #else
  2820. #define FaxGetMessageTiff FaxGetMessageTiffA
  2821. #endif // !UNICODE
  2822. //************************************
  2823. //* Non-RPC extended interfaces
  2824. //************************************
  2825. HRESULT WINAPI
  2826. FaxFreeSenderInformation(
  2827. PFAX_PERSONAL_PROFILE pfppSender
  2828. );
  2829. HRESULT WINAPI
  2830. FaxSetSenderInformation(
  2831. PFAX_PERSONAL_PROFILE pfppSender
  2832. );
  2833. HRESULT WINAPI
  2834. FaxGetSenderInformation(
  2835. PFAX_PERSONAL_PROFILE pfppSender
  2836. );
  2837. //********************************************
  2838. //* Security
  2839. //********************************************
  2840. //
  2841. // Specific access rights
  2842. //
  2843. typedef enum
  2844. {
  2845. FAX_ACCESS_SUBMIT = 0x0001,
  2846. FAX_ACCESS_SUBMIT_NORMAL = 0x0002,
  2847. FAX_ACCESS_SUBMIT_HIGH = 0x0004,
  2848. FAX_ACCESS_QUERY_JOBS = 0x0008,
  2849. FAX_ACCESS_MANAGE_JOBS = 0x0010,
  2850. FAX_ACCESS_QUERY_CONFIG = 0x0020,
  2851. FAX_ACCESS_MANAGE_CONFIG = 0x0040,
  2852. FAX_ACCESS_QUERY_IN_ARCHIVE = 0x0080,
  2853. FAX_ACCESS_MANAGE_IN_ARCHIVE = 0x0100,
  2854. FAX_ACCESS_QUERY_OUT_ARCHIVE = 0x0200,
  2855. FAX_ACCESS_MANAGE_OUT_ARCHIVE = 0x0400
  2856. } FAX_SPECIFIC_ACCESS_RIGHTS;
  2857. #define FAX_GENERIC_READ (FAX_ACCESS_QUERY_JOBS | FAX_ACCESS_QUERY_CONFIG | FAX_ACCESS_QUERY_IN_ARCHIVE | FAX_ACCESS_QUERY_OUT_ARCHIVE)
  2858. #define FAX_GENERIC_WRITE (FAX_ACCESS_MANAGE_JOBS | FAX_ACCESS_MANAGE_CONFIG | FAX_ACCESS_MANAGE_IN_ARCHIVE | FAX_ACCESS_MANAGE_OUT_ARCHIVE)
  2859. #define FAX_GENERIC_EXECUTE (FAX_ACCESS_SUBMIT)
  2860. #define FAX_GENERIC_ALL (FAX_ACCESS_SUBMIT | \
  2861. FAX_ACCESS_SUBMIT_NORMAL | \
  2862. FAX_ACCESS_SUBMIT_HIGH | \
  2863. FAX_ACCESS_QUERY_JOBS | \
  2864. FAX_ACCESS_MANAGE_JOBS | \
  2865. FAX_ACCESS_QUERY_CONFIG | \
  2866. FAX_ACCESS_MANAGE_CONFIG | \
  2867. FAX_ACCESS_QUERY_IN_ARCHIVE | \
  2868. FAX_ACCESS_MANAGE_IN_ARCHIVE | \
  2869. FAX_ACCESS_QUERY_OUT_ARCHIVE | \
  2870. FAX_ACCESS_MANAGE_OUT_ARCHIVE)
  2871. //
  2872. // Functions
  2873. //
  2874. //********************************************
  2875. //* Security
  2876. //********************************************
  2877. WINFAXAPI
  2878. BOOL
  2879. WINAPI
  2880. FaxGetSecurity (
  2881. IN HANDLE hFaxHandle,
  2882. OUT PSECURITY_DESCRIPTOR *ppSecDesc
  2883. );
  2884. WINFAXAPI
  2885. BOOL
  2886. WINAPI
  2887. FaxGetSecurityEx (
  2888. IN HANDLE hFaxHandle,
  2889. IN SECURITY_INFORMATION SecurityInformation,
  2890. OUT PSECURITY_DESCRIPTOR *ppSecDesc
  2891. );
  2892. WINFAXAPI
  2893. BOOL
  2894. WINAPI
  2895. FaxSetSecurity (
  2896. IN HANDLE hFaxHandle,
  2897. IN SECURITY_INFORMATION SecurityInformation,
  2898. IN CONST PSECURITY_DESCRIPTOR pSecDesc
  2899. );
  2900. WINFAXAPI
  2901. BOOL
  2902. WINAPI
  2903. FaxAccessCheckEx (
  2904. IN HANDLE FaxHandle,
  2905. IN DWORD AccessMask,
  2906. OUT LPDWORD lpdwRights
  2907. );
  2908. //********************************************
  2909. //* Extension data
  2910. //********************************************
  2911. WINFAXAPI
  2912. BOOL
  2913. WINAPI
  2914. FaxGetExtensionDataA (
  2915. IN HANDLE hFaxHandle,
  2916. IN DWORD dwDeviceID,
  2917. IN LPCSTR lpctstrNameGUID,
  2918. OUT PVOID *ppData,
  2919. OUT LPDWORD lpdwDataSize
  2920. );
  2921. WINFAXAPI
  2922. BOOL
  2923. WINAPI
  2924. FaxGetExtensionDataW (
  2925. IN HANDLE hFaxHandle,
  2926. IN DWORD dwDeviceID,
  2927. IN LPCWSTR lpctstrNameGUID,
  2928. OUT PVOID *ppData,
  2929. OUT LPDWORD lpdwDataSize
  2930. );
  2931. #ifdef UNICODE
  2932. #define FaxGetExtensionData FaxGetExtensionDataW
  2933. #else
  2934. #define FaxGetExtensionData FaxGetExtensionDataA
  2935. #endif // !UNICODE
  2936. WINFAXAPI
  2937. BOOL
  2938. WINAPI
  2939. FaxSetExtensionDataA (
  2940. IN HANDLE hFaxHandle,
  2941. IN DWORD dwDeviceID,
  2942. IN LPCSTR lpctstrNameGUID,
  2943. IN CONST PVOID pData,
  2944. IN CONST DWORD dwDataSize
  2945. );
  2946. WINFAXAPI
  2947. BOOL
  2948. WINAPI
  2949. FaxSetExtensionDataW (
  2950. IN HANDLE hFaxHandle,
  2951. IN DWORD dwDeviceID,
  2952. IN LPCWSTR lpctstrNameGUID,
  2953. IN CONST PVOID pData,
  2954. IN CONST DWORD dwDataSize
  2955. );
  2956. #ifdef UNICODE
  2957. #define FaxSetExtensionData FaxSetExtensionDataW
  2958. #else
  2959. #define FaxSetExtensionData FaxSetExtensionDataA
  2960. #endif // !UNICODE
  2961. //********************************************
  2962. //* FSP
  2963. //********************************************
  2964. typedef enum
  2965. {
  2966. FAX_PROVIDER_STATUS_SUCCESS, // Provider was successfully loaded
  2967. FAX_PROVIDER_STATUS_SERVER_ERROR,// An error occured on the server while loading provider.
  2968. FAX_PROVIDER_STATUS_BAD_GUID, // Provider's GUID is invalid
  2969. FAX_PROVIDER_STATUS_BAD_VERSION, // Provider's API version is invalid
  2970. FAX_PROVIDER_STATUS_CANT_LOAD, // Can't load provider's DLL
  2971. FAX_PROVIDER_STATUS_CANT_LINK, // Can't find required exported function(s) in provider's DLL
  2972. FAX_PROVIDER_STATUS_CANT_INIT // Failed while initializing provider
  2973. } FAX_ENUM_PROVIDER_STATUS;
  2974. typedef struct _FAX_DEVICE_PROVIDER_INFOA
  2975. {
  2976. DWORD dwSizeOfStruct;
  2977. LPCSTR lpctstrFriendlyName;
  2978. LPCSTR lpctstrImageName;
  2979. LPCSTR lpctstrProviderName;
  2980. LPCSTR lpctstrGUID;
  2981. DWORD dwCapabilities;
  2982. FAX_VERSION Version;
  2983. FAX_ENUM_PROVIDER_STATUS Status;
  2984. DWORD dwLastError;
  2985. } FAX_DEVICE_PROVIDER_INFOA, *PFAX_DEVICE_PROVIDER_INFOA;
  2986. typedef struct _FAX_DEVICE_PROVIDER_INFOW
  2987. {
  2988. DWORD dwSizeOfStruct;
  2989. LPCWSTR lpctstrFriendlyName;
  2990. LPCWSTR lpctstrImageName;
  2991. LPCWSTR lpctstrProviderName;
  2992. LPCWSTR lpctstrGUID;
  2993. DWORD dwCapabilities;
  2994. FAX_VERSION Version;
  2995. FAX_ENUM_PROVIDER_STATUS Status;
  2996. DWORD dwLastError;
  2997. } FAX_DEVICE_PROVIDER_INFOW, *PFAX_DEVICE_PROVIDER_INFOW;
  2998. #ifdef UNICODE
  2999. typedef FAX_DEVICE_PROVIDER_INFOW FAX_DEVICE_PROVIDER_INFO;
  3000. typedef PFAX_DEVICE_PROVIDER_INFOW PFAX_DEVICE_PROVIDER_INFO;
  3001. #else
  3002. typedef FAX_DEVICE_PROVIDER_INFOA FAX_DEVICE_PROVIDER_INFO;
  3003. typedef PFAX_DEVICE_PROVIDER_INFOA PFAX_DEVICE_PROVIDER_INFO;
  3004. #endif // UNICODE
  3005. WINFAXAPI
  3006. BOOL
  3007. WINAPI
  3008. FaxEnumerateProvidersA (
  3009. IN HANDLE hFaxHandle,
  3010. OUT PFAX_DEVICE_PROVIDER_INFOA *ppProviders,
  3011. OUT LPDWORD lpdwNumProviders
  3012. );
  3013. WINFAXAPI
  3014. BOOL
  3015. WINAPI
  3016. FaxEnumerateProvidersW (
  3017. IN HANDLE hFaxHandle,
  3018. OUT PFAX_DEVICE_PROVIDER_INFOW *ppProviders,
  3019. OUT LPDWORD lpdwNumProviders
  3020. );
  3021. #ifdef UNICODE
  3022. #define FaxEnumerateProviders FaxEnumerateProvidersW
  3023. #else
  3024. #define FaxEnumerateProviders FaxEnumerateProvidersA
  3025. #endif // !UNICODE
  3026. //********************************************
  3027. //* Routing extensions
  3028. //********************************************
  3029. typedef struct _FAX_ROUTING_EXTENSION_INFOA
  3030. {
  3031. DWORD dwSizeOfStruct;
  3032. LPCSTR lpctstrFriendlyName;
  3033. LPCSTR lpctstrImageName;
  3034. LPCSTR lpctstrExtensionName;
  3035. FAX_VERSION Version;
  3036. FAX_ENUM_PROVIDER_STATUS Status;
  3037. DWORD dwLastError;
  3038. } FAX_ROUTING_EXTENSION_INFOA, *PFAX_ROUTING_EXTENSION_INFOA;
  3039. typedef struct _FAX_ROUTING_EXTENSION_INFOW
  3040. {
  3041. DWORD dwSizeOfStruct;
  3042. LPCWSTR lpctstrFriendlyName;
  3043. LPCWSTR lpctstrImageName;
  3044. LPCWSTR lpctstrExtensionName;
  3045. FAX_VERSION Version;
  3046. FAX_ENUM_PROVIDER_STATUS Status;
  3047. DWORD dwLastError;
  3048. } FAX_ROUTING_EXTENSION_INFOW, *PFAX_ROUTING_EXTENSION_INFOW;
  3049. #ifdef UNICODE
  3050. typedef FAX_ROUTING_EXTENSION_INFOW FAX_ROUTING_EXTENSION_INFO;
  3051. typedef PFAX_ROUTING_EXTENSION_INFOW PFAX_ROUTING_EXTENSION_INFO;
  3052. #else
  3053. typedef FAX_ROUTING_EXTENSION_INFOA FAX_ROUTING_EXTENSION_INFO;
  3054. typedef PFAX_ROUTING_EXTENSION_INFOA PFAX_ROUTING_EXTENSION_INFO;
  3055. #endif // UNICODE
  3056. WINFAXAPI
  3057. BOOL
  3058. WINAPI
  3059. FaxEnumRoutingExtensionsA (
  3060. IN HANDLE hFaxHandle,
  3061. OUT PFAX_ROUTING_EXTENSION_INFOA *ppRoutingExtensions,
  3062. OUT LPDWORD lpdwNumExtensions
  3063. );
  3064. WINFAXAPI
  3065. BOOL
  3066. WINAPI
  3067. FaxEnumRoutingExtensionsW (
  3068. IN HANDLE hFaxHandle,
  3069. OUT PFAX_ROUTING_EXTENSION_INFOW *ppRoutingExtensions,
  3070. OUT LPDWORD lpdwNumExtensions
  3071. );
  3072. #ifdef UNICODE
  3073. #define FaxEnumRoutingExtensions FaxEnumRoutingExtensionsW
  3074. #else
  3075. #define FaxEnumRoutingExtensions FaxEnumRoutingExtensionsA
  3076. #endif // !UNICODE
  3077. //********************************************
  3078. //* Ports
  3079. //********************************************
  3080. typedef enum
  3081. {
  3082. FAX_DEVICE_STATUS_POWERED_OFF = 0x0001,
  3083. FAX_DEVICE_STATUS_SENDING = 0x0002,
  3084. FAX_DEVICE_STATUS_RECEIVING = 0x0004,
  3085. FAX_DEVICE_STATUS_RINGING = 0x0008
  3086. } FAX_ENUM_DEVICE_STATUS;
  3087. typedef enum
  3088. {
  3089. FAX_DEVICE_RECEIVE_MODE_OFF = 0, // Do not answer to incoming calls
  3090. FAX_DEVICE_RECEIVE_MODE_AUTO = 1, // Automatically answer to incoming calls after dwRings rings
  3091. FAX_DEVICE_RECEIVE_MODE_MANUAL = 2 // Manually answer to incoming calls - only FaxAnswerCall answers the call
  3092. } FAX_ENUM_DEVICE_RECEIVE_MODE;
  3093. typedef struct _FAX_PORT_INFO_EXA
  3094. {
  3095. DWORD dwSizeOfStruct; // For versioning
  3096. DWORD dwDeviceID; // Fax id
  3097. LPCSTR lpctstrDeviceName; // Name of the device
  3098. LPSTR lptstrDescription; // Descriptive string
  3099. LPCSTR lpctstrProviderName; // FSP's name
  3100. LPCSTR lpctstrProviderGUID; // FSP's GUID
  3101. BOOL bSend; // Is the device send-enabled?
  3102. FAX_ENUM_DEVICE_RECEIVE_MODE ReceiveMode; // The device receive mode. See FAX_ENUM_DEVICE_RECEIVE_MODE for details.
  3103. DWORD dwStatus; // Device status - a combination of values from FAX_ENUM_DEVICE_STATUS
  3104. DWORD dwRings; // Number of rings before answering an incoming call
  3105. LPSTR lptstrCsid; // Called Station Id
  3106. LPSTR lptstrTsid; // Transmitting Station Id
  3107. } FAX_PORT_INFO_EXA, *PFAX_PORT_INFO_EXA;
  3108. typedef struct _FAX_PORT_INFO_EXW
  3109. {
  3110. DWORD dwSizeOfStruct; // For versioning
  3111. DWORD dwDeviceID; // Fax id
  3112. LPCWSTR lpctstrDeviceName; // Name of the device
  3113. LPWSTR lptstrDescription; // Descriptive string
  3114. LPCWSTR lpctstrProviderName; // FSP's name
  3115. LPCWSTR lpctstrProviderGUID; // FSP's GUID
  3116. BOOL bSend; // Is the device send-enabled?
  3117. FAX_ENUM_DEVICE_RECEIVE_MODE ReceiveMode; // The device receive mode. See FAX_ENUM_DEVICE_RECEIVE_MODE for details.
  3118. DWORD dwStatus; // Device status - a combination of values from FAX_ENUM_DEVICE_STATUS
  3119. DWORD dwRings; // Number of rings before answering an incoming call
  3120. LPWSTR lptstrCsid; // Called Station Id
  3121. LPWSTR lptstrTsid; // Transmitting Station Id
  3122. } FAX_PORT_INFO_EXW, *PFAX_PORT_INFO_EXW;
  3123. #ifdef UNICODE
  3124. typedef FAX_PORT_INFO_EXW FAX_PORT_INFO_EX;
  3125. typedef PFAX_PORT_INFO_EXW PFAX_PORT_INFO_EX;
  3126. #else
  3127. typedef FAX_PORT_INFO_EXA FAX_PORT_INFO_EX;
  3128. typedef PFAX_PORT_INFO_EXA PFAX_PORT_INFO_EX;
  3129. #endif // UNICODE
  3130. WINFAXAPI
  3131. DWORD
  3132. WINAPI
  3133. IsDeviceVirtual (
  3134. IN HANDLE hFaxHandle,
  3135. IN DWORD dwDeviceId,
  3136. OUT LPBOOL lpbVirtual
  3137. );
  3138. WINFAXAPI
  3139. BOOL
  3140. WINAPI
  3141. FaxGetPortExA (
  3142. IN HANDLE hFaxHandle,
  3143. IN DWORD dwDeviceId,
  3144. OUT PFAX_PORT_INFO_EXA *ppPortInfo
  3145. );
  3146. WINFAXAPI
  3147. BOOL
  3148. WINAPI
  3149. FaxGetPortExW (
  3150. IN HANDLE hFaxHandle,
  3151. IN DWORD dwDeviceId,
  3152. OUT PFAX_PORT_INFO_EXW *ppPortInfo
  3153. );
  3154. #ifdef UNICODE
  3155. #define FaxGetPortEx FaxGetPortExW
  3156. #else
  3157. #define FaxGetPortEx FaxGetPortExA
  3158. #endif // !UNICODE
  3159. WINFAXAPI
  3160. BOOL
  3161. WINAPI
  3162. FaxSetPortExA (
  3163. IN HANDLE hFaxHandle,
  3164. IN DWORD dwDeviceId,
  3165. IN PFAX_PORT_INFO_EXA pPortInfo
  3166. );
  3167. WINFAXAPI
  3168. BOOL
  3169. WINAPI
  3170. FaxSetPortExW (
  3171. IN HANDLE hFaxHandle,
  3172. IN DWORD dwDeviceId,
  3173. IN PFAX_PORT_INFO_EXW pPortInfo
  3174. );
  3175. #ifdef UNICODE
  3176. #define FaxSetPortEx FaxSetPortExW
  3177. #else
  3178. #define FaxSetPortEx FaxSetPortExA
  3179. #endif // !UNICODE
  3180. WINFAXAPI
  3181. BOOL
  3182. WINAPI
  3183. FaxEnumPortsExA (
  3184. IN HANDLE hFaxHandle,
  3185. OUT PFAX_PORT_INFO_EXA *ppPorts,
  3186. OUT LPDWORD lpdwNumPorts
  3187. );
  3188. WINFAXAPI
  3189. BOOL
  3190. WINAPI
  3191. FaxEnumPortsExW (
  3192. IN HANDLE hFaxHandle,
  3193. OUT PFAX_PORT_INFO_EXW *ppPorts,
  3194. OUT LPDWORD lpdwNumPorts
  3195. );
  3196. #ifdef UNICODE
  3197. #define FaxEnumPortsEx FaxEnumPortsExW
  3198. #else
  3199. #define FaxEnumPortsEx FaxEnumPortsExA
  3200. #endif // !UNICODE
  3201. //********************************************
  3202. //* Recipient and sender information
  3203. //********************************************
  3204. WINFAXAPI
  3205. BOOL
  3206. WINAPI
  3207. FaxGetRecipientInfoA (
  3208. IN HANDLE hFaxHandle,
  3209. IN DWORDLONG dwlMessageId,
  3210. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  3211. OUT PFAX_PERSONAL_PROFILEA *lpPersonalProfile
  3212. );
  3213. WINFAXAPI
  3214. BOOL
  3215. WINAPI
  3216. FaxGetRecipientInfoW (
  3217. IN HANDLE hFaxHandle,
  3218. IN DWORDLONG dwlMessageId,
  3219. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  3220. OUT PFAX_PERSONAL_PROFILEW *lpPersonalProfile
  3221. );
  3222. #ifdef UNICODE
  3223. #define FaxGetRecipientInfo FaxGetRecipientInfoW
  3224. #else
  3225. #define FaxGetRecipientInfo FaxGetRecipientInfoA
  3226. #endif // !UNICODE
  3227. WINFAXAPI
  3228. BOOL
  3229. WINAPI
  3230. FaxGetSenderInfoA (
  3231. IN HANDLE hFaxHandle,
  3232. IN DWORDLONG dwlMessageId,
  3233. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  3234. OUT PFAX_PERSONAL_PROFILEA *lpPersonalProfile
  3235. );
  3236. WINFAXAPI
  3237. BOOL
  3238. WINAPI
  3239. FaxGetSenderInfoW (
  3240. IN HANDLE hFaxHandle,
  3241. IN DWORDLONG dwlMessageId,
  3242. IN FAX_ENUM_MESSAGE_FOLDER Folder,
  3243. OUT PFAX_PERSONAL_PROFILEW *lpPersonalProfile
  3244. );
  3245. #ifdef UNICODE
  3246. #define FaxGetSenderInfo FaxGetSenderInfoW
  3247. #else
  3248. #define FaxGetSenderInfo FaxGetSenderInfoA
  3249. #endif // !UNICODE
  3250. //********************************************
  3251. //* Outbound routing groups
  3252. //********************************************
  3253. typedef enum
  3254. {
  3255. FAX_GROUP_STATUS_ALL_DEV_VALID,
  3256. FAX_GROUP_STATUS_EMPTY,
  3257. FAX_GROUP_STATUS_ALL_DEV_NOT_VALID,
  3258. FAX_GROUP_STATUS_SOME_DEV_NOT_VALID,
  3259. } FAX_ENUM_GROUP_STATUS;
  3260. typedef struct _FAX_OUTBOUND_ROUTING_GROUPA
  3261. {
  3262. DWORD dwSizeOfStruct;
  3263. LPCSTR lpctstrGroupName;
  3264. DWORD dwNumDevices;
  3265. LPDWORD lpdwDevices;
  3266. FAX_ENUM_GROUP_STATUS Status;
  3267. } FAX_OUTBOUND_ROUTING_GROUPA, *PFAX_OUTBOUND_ROUTING_GROUPA;
  3268. typedef struct _FAX_OUTBOUND_ROUTING_GROUPW
  3269. {
  3270. DWORD dwSizeOfStruct;
  3271. LPCWSTR lpctstrGroupName;
  3272. DWORD dwNumDevices;
  3273. LPDWORD lpdwDevices;
  3274. FAX_ENUM_GROUP_STATUS Status;
  3275. } FAX_OUTBOUND_ROUTING_GROUPW, *PFAX_OUTBOUND_ROUTING_GROUPW;
  3276. #ifdef UNICODE
  3277. typedef FAX_OUTBOUND_ROUTING_GROUPW FAX_OUTBOUND_ROUTING_GROUP;
  3278. typedef PFAX_OUTBOUND_ROUTING_GROUPW PFAX_OUTBOUND_ROUTING_GROUP;
  3279. #else
  3280. typedef FAX_OUTBOUND_ROUTING_GROUPA FAX_OUTBOUND_ROUTING_GROUP;
  3281. typedef PFAX_OUTBOUND_ROUTING_GROUPA PFAX_OUTBOUND_ROUTING_GROUP;
  3282. #endif // UNICODE
  3283. WINFAXAPI
  3284. BOOL
  3285. WINAPI
  3286. FaxEnumOutboundGroupsA (
  3287. IN HANDLE hFaxHandle,
  3288. OUT PFAX_OUTBOUND_ROUTING_GROUPA *ppGroups,
  3289. OUT LPDWORD lpdwNumGroups
  3290. );
  3291. WINFAXAPI
  3292. BOOL
  3293. WINAPI
  3294. FaxEnumOutboundGroupsW (
  3295. IN HANDLE hFaxHandle,
  3296. OUT PFAX_OUTBOUND_ROUTING_GROUPW *ppGroups,
  3297. OUT LPDWORD lpdwNumGroups
  3298. );
  3299. #ifdef UNICODE
  3300. #define FaxEnumOutboundGroups FaxEnumOutboundGroupsW
  3301. #else
  3302. #define FaxEnumOutboundGroups FaxEnumOutboundGroupsA
  3303. #endif // !UNICODE
  3304. WINFAXAPI
  3305. BOOL
  3306. WINAPI
  3307. FaxSetOutboundGroupA (
  3308. IN HANDLE hFaxHandle,
  3309. IN PFAX_OUTBOUND_ROUTING_GROUPA pGroup
  3310. );
  3311. WINFAXAPI
  3312. BOOL
  3313. WINAPI
  3314. FaxSetOutboundGroupW (
  3315. IN HANDLE hFaxHandle,
  3316. IN PFAX_OUTBOUND_ROUTING_GROUPW pGroup
  3317. );
  3318. #ifdef UNICODE
  3319. #define FaxSetOutboundGroup FaxSetOutboundGroupW
  3320. #else
  3321. #define FaxSetOutboundGroup FaxSetOutboundGroupA
  3322. #endif // !UNICODE
  3323. WINFAXAPI
  3324. BOOL
  3325. WINAPI
  3326. FaxAddOutboundGroupA (
  3327. IN HANDLE hFaxHandle,
  3328. IN LPCSTR lpctstrGroupName
  3329. );
  3330. WINFAXAPI
  3331. BOOL
  3332. WINAPI
  3333. FaxAddOutboundGroupW (
  3334. IN HANDLE hFaxHandle,
  3335. IN LPCWSTR lpctstrGroupName
  3336. );
  3337. #ifdef UNICODE
  3338. #define FaxAddOutboundGroup FaxAddOutboundGroupW
  3339. #else
  3340. #define FaxAddOutboundGroup FaxAddOutboundGroupA
  3341. #endif // !UNICODE
  3342. WINFAXAPI
  3343. BOOL
  3344. WINAPI
  3345. FaxRemoveOutboundGroupA (
  3346. IN HANDLE hFaxHandle,
  3347. IN LPCSTR lpctstrGroupName
  3348. );
  3349. WINFAXAPI
  3350. BOOL
  3351. WINAPI
  3352. FaxRemoveOutboundGroupW (
  3353. IN HANDLE hFaxHandle,
  3354. IN LPCWSTR lpctstrGroupName
  3355. );
  3356. #ifdef UNICODE
  3357. #define FaxRemoveOutboundGroup FaxRemoveOutboundGroupW
  3358. #else
  3359. #define FaxRemoveOutboundGroup FaxRemoveOutboundGroupA
  3360. #endif // !UNICODE
  3361. BOOL
  3362. WINAPI
  3363. FaxSetDeviceOrderInGroupA (
  3364. IN HANDLE hFaxHandle,
  3365. IN LPCSTR lpctstrGroupName,
  3366. IN DWORD dwDeviceId,
  3367. IN DWORD dwNewOrder
  3368. );
  3369. BOOL
  3370. WINAPI
  3371. FaxSetDeviceOrderInGroupW (
  3372. IN HANDLE hFaxHandle,
  3373. IN LPCWSTR lpctstrGroupName,
  3374. IN DWORD dwDeviceId,
  3375. IN DWORD dwNewOrder
  3376. );
  3377. #ifdef UNICODE
  3378. #define FaxSetDeviceOrderInGroup FaxSetDeviceOrderInGroupW
  3379. #else
  3380. #define FaxSetDeviceOrderInGroup FaxSetDeviceOrderInGroupA
  3381. #endif // !UNICODE
  3382. //********************************************
  3383. //* Outbound routing rules
  3384. //********************************************
  3385. typedef enum
  3386. {
  3387. FAX_RULE_STATUS_VALID,
  3388. FAX_RULE_STATUS_EMPTY_GROUP, // The rule's destination group has no devices
  3389. FAX_RULE_STATUS_ALL_GROUP_DEV_NOT_VALID, // The rule's destination group has valid devices
  3390. FAX_RULE_STATUS_SOME_GROUP_DEV_NOT_VALID, // The rule's destination group has some invalid devices
  3391. FAX_RULE_STATUS_BAD_DEVICE // The rule's destination device is not valid
  3392. } FAX_ENUM_RULE_STATUS;
  3393. typedef struct _FAX_OUTBOUND_ROUTING_RULEA
  3394. {
  3395. DWORD dwSizeOfStruct;
  3396. DWORD dwAreaCode;
  3397. DWORD dwCountryCode;
  3398. LPCSTR lpctstrCountryName;
  3399. union
  3400. {
  3401. DWORD dwDeviceId;
  3402. LPCSTR lpcstrGroupName;
  3403. } Destination;
  3404. BOOL bUseGroup;
  3405. FAX_ENUM_RULE_STATUS Status;
  3406. } FAX_OUTBOUND_ROUTING_RULEA, *PFAX_OUTBOUND_ROUTING_RULEA;
  3407. typedef struct _FAX_OUTBOUND_ROUTING_RULEW
  3408. {
  3409. DWORD dwSizeOfStruct;
  3410. DWORD dwAreaCode;
  3411. DWORD dwCountryCode;
  3412. LPCWSTR lpctstrCountryName;
  3413. union
  3414. {
  3415. DWORD dwDeviceId;
  3416. LPCWSTR lpcstrGroupName;
  3417. } Destination;
  3418. BOOL bUseGroup;
  3419. FAX_ENUM_RULE_STATUS Status;
  3420. } FAX_OUTBOUND_ROUTING_RULEW, *PFAX_OUTBOUND_ROUTING_RULEW;
  3421. #ifdef UNICODE
  3422. typedef FAX_OUTBOUND_ROUTING_RULEW FAX_OUTBOUND_ROUTING_RULE;
  3423. typedef PFAX_OUTBOUND_ROUTING_RULEW PFAX_OUTBOUND_ROUTING_RULE;
  3424. #else
  3425. typedef FAX_OUTBOUND_ROUTING_RULEA FAX_OUTBOUND_ROUTING_RULE;
  3426. typedef PFAX_OUTBOUND_ROUTING_RULEA PFAX_OUTBOUND_ROUTING_RULE;
  3427. #endif // UNICODE
  3428. WINFAXAPI
  3429. BOOL
  3430. WINAPI
  3431. FaxEnumOutboundRulesA (
  3432. IN HANDLE hFaxHandle,
  3433. OUT PFAX_OUTBOUND_ROUTING_RULEA *ppRules,
  3434. OUT LPDWORD lpdwNumRules
  3435. );
  3436. WINFAXAPI
  3437. BOOL
  3438. WINAPI
  3439. FaxEnumOutboundRulesW (
  3440. IN HANDLE hFaxHandle,
  3441. OUT PFAX_OUTBOUND_ROUTING_RULEW *ppRules,
  3442. OUT LPDWORD lpdwNumRules
  3443. );
  3444. #ifdef UNICODE
  3445. #define FaxEnumOutboundRules FaxEnumOutboundRulesW
  3446. #else
  3447. #define FaxEnumOutboundRules FaxEnumOutboundRulesA
  3448. #endif // !UNICODE
  3449. WINFAXAPI
  3450. BOOL
  3451. WINAPI
  3452. FaxSetOutboundRuleA (
  3453. IN HANDLE hFaxHandle,
  3454. IN PFAX_OUTBOUND_ROUTING_RULEA pRule
  3455. );
  3456. WINFAXAPI
  3457. BOOL
  3458. WINAPI
  3459. FaxSetOutboundRuleW (
  3460. IN HANDLE hFaxHandle,
  3461. IN PFAX_OUTBOUND_ROUTING_RULEW pRule
  3462. );
  3463. #ifdef UNICODE
  3464. #define FaxSetOutboundRule FaxSetOutboundRuleW
  3465. #else
  3466. #define FaxSetOutboundRule FaxSetOutboundRuleA
  3467. #endif // !UNICODE
  3468. WINFAXAPI
  3469. BOOL
  3470. WINAPI
  3471. FaxAddOutboundRuleA (
  3472. IN HANDLE hFaxHandle,
  3473. IN DWORD dwAreaCode,
  3474. IN DWORD dwCountryCode,
  3475. IN DWORD dwDeviceID,
  3476. IN LPCSTR lpctstrGroupName,
  3477. IN BOOL bUseGroup
  3478. );
  3479. WINFAXAPI
  3480. BOOL
  3481. WINAPI
  3482. FaxAddOutboundRuleW (
  3483. IN HANDLE hFaxHandle,
  3484. IN DWORD dwAreaCode,
  3485. IN DWORD dwCountryCode,
  3486. IN DWORD dwDeviceID,
  3487. IN LPCWSTR lpctstrGroupName,
  3488. IN BOOL bUseGroup
  3489. );
  3490. #ifdef UNICODE
  3491. #define FaxAddOutboundRule FaxAddOutboundRuleW
  3492. #else
  3493. #define FaxAddOutboundRule FaxAddOutboundRuleA
  3494. #endif // !UNICODE
  3495. WINFAXAPI
  3496. BOOL
  3497. WINAPI
  3498. FaxRemoveOutboundRule (
  3499. IN HANDLE hFaxHandle,
  3500. IN DWORD dwAreaCode,
  3501. IN DWORD dwCountryCode
  3502. );
  3503. //********************************************
  3504. //* TAPI countries support
  3505. //********************************************
  3506. typedef struct _FAX_TAPI_LINECOUNTRY_ENTRYA
  3507. {
  3508. DWORD dwCountryID;
  3509. DWORD dwCountryCode;
  3510. LPCSTR lpctstrCountryName;
  3511. LPCSTR lpctstrLongDistanceRule;
  3512. } FAX_TAPI_LINECOUNTRY_ENTRYA, *PFAX_TAPI_LINECOUNTRY_ENTRYA;
  3513. typedef struct _FAX_TAPI_LINECOUNTRY_ENTRYW
  3514. {
  3515. DWORD dwCountryID;
  3516. DWORD dwCountryCode;
  3517. LPCWSTR lpctstrCountryName;
  3518. LPCWSTR lpctstrLongDistanceRule;
  3519. } FAX_TAPI_LINECOUNTRY_ENTRYW, *PFAX_TAPI_LINECOUNTRY_ENTRYW;
  3520. #ifdef UNICODE
  3521. typedef FAX_TAPI_LINECOUNTRY_ENTRYW FAX_TAPI_LINECOUNTRY_ENTRY;
  3522. typedef PFAX_TAPI_LINECOUNTRY_ENTRYW PFAX_TAPI_LINECOUNTRY_ENTRY;
  3523. #else
  3524. typedef FAX_TAPI_LINECOUNTRY_ENTRYA FAX_TAPI_LINECOUNTRY_ENTRY;
  3525. typedef PFAX_TAPI_LINECOUNTRY_ENTRYA PFAX_TAPI_LINECOUNTRY_ENTRY;
  3526. #endif // UNICODE
  3527. typedef struct _FAX_TAPI_LINECOUNTRY_LISTA
  3528. {
  3529. DWORD dwNumCountries;
  3530. PFAX_TAPI_LINECOUNTRY_ENTRYA LineCountryEntries;
  3531. } FAX_TAPI_LINECOUNTRY_LISTA, *PFAX_TAPI_LINECOUNTRY_LISTA;
  3532. typedef struct _FAX_TAPI_LINECOUNTRY_LISTW
  3533. {
  3534. DWORD dwNumCountries;
  3535. PFAX_TAPI_LINECOUNTRY_ENTRYW LineCountryEntries;
  3536. } FAX_TAPI_LINECOUNTRY_LISTW, *PFAX_TAPI_LINECOUNTRY_LISTW;
  3537. #ifdef UNICODE
  3538. typedef FAX_TAPI_LINECOUNTRY_LISTW FAX_TAPI_LINECOUNTRY_LIST;
  3539. typedef PFAX_TAPI_LINECOUNTRY_LISTW PFAX_TAPI_LINECOUNTRY_LIST;
  3540. #else
  3541. typedef FAX_TAPI_LINECOUNTRY_LISTA FAX_TAPI_LINECOUNTRY_LIST;
  3542. typedef PFAX_TAPI_LINECOUNTRY_LISTA PFAX_TAPI_LINECOUNTRY_LIST;
  3543. #endif // UNICODE
  3544. WINFAXAPI
  3545. BOOL
  3546. WINAPI
  3547. FaxGetCountryListA (
  3548. IN HANDLE hFaxHandle,
  3549. OUT PFAX_TAPI_LINECOUNTRY_LISTA *ppCountryListBuffer
  3550. );
  3551. WINFAXAPI
  3552. BOOL
  3553. WINAPI
  3554. FaxGetCountryListW (
  3555. IN HANDLE hFaxHandle,
  3556. OUT PFAX_TAPI_LINECOUNTRY_LISTW *ppCountryListBuffer
  3557. );
  3558. #ifdef UNICODE
  3559. #define FaxGetCountryList FaxGetCountryListW
  3560. #else
  3561. #define FaxGetCountryList FaxGetCountryListA
  3562. #endif // !UNICODE
  3563. //********************************************
  3564. //* FSP registration
  3565. //********************************************
  3566. WINFAXAPI
  3567. BOOL
  3568. WINAPI
  3569. FaxRegisterServiceProviderExA(
  3570. IN HANDLE hFaxHandle,
  3571. IN LPCSTR lpctstrGUID,
  3572. IN LPCSTR lpctstrFriendlyName,
  3573. IN LPCSTR lpctstrImageName,
  3574. IN LPCSTR lpctstrTspName,
  3575. IN DWORD dwFSPIVersion,
  3576. IN DWORD dwCapabilities
  3577. );
  3578. WINFAXAPI
  3579. BOOL
  3580. WINAPI
  3581. FaxRegisterServiceProviderExW(
  3582. IN HANDLE hFaxHandle,
  3583. IN LPCWSTR lpctstrGUID,
  3584. IN LPCWSTR lpctstrFriendlyName,
  3585. IN LPCWSTR lpctstrImageName,
  3586. IN LPCWSTR lpctstrTspName,
  3587. IN DWORD dwFSPIVersion,
  3588. IN DWORD dwCapabilities
  3589. );
  3590. #ifdef UNICODE
  3591. #define FaxRegisterServiceProviderEx FaxRegisterServiceProviderExW
  3592. #else
  3593. #define FaxRegisterServiceProviderEx FaxRegisterServiceProviderExA
  3594. #endif // !UNICODE
  3595. WINFAXAPI
  3596. BOOL
  3597. WINAPI
  3598. FaxUnregisterServiceProviderExA(
  3599. IN HANDLE hFaxHandle,
  3600. IN LPCSTR lpctstrGUID
  3601. );
  3602. WINFAXAPI
  3603. BOOL
  3604. WINAPI
  3605. FaxUnregisterServiceProviderExW(
  3606. IN HANDLE hFaxHandle,
  3607. IN LPCWSTR lpctstrGUID
  3608. );
  3609. #ifdef UNICODE
  3610. #define FaxUnregisterServiceProviderEx FaxUnregisterServiceProviderExW
  3611. #else
  3612. #define FaxUnregisterServiceProviderEx FaxUnregisterServiceProviderExA
  3613. #endif // !UNICODE
  3614. //********************************************
  3615. //* Server events
  3616. //********************************************
  3617. typedef enum
  3618. {
  3619. FAX_EVENT_TYPE_LEGACY = 0x00000000,
  3620. FAX_EVENT_TYPE_IN_QUEUE = 0x00000001,
  3621. FAX_EVENT_TYPE_OUT_QUEUE = 0x00000002,
  3622. FAX_EVENT_TYPE_CONFIG = 0x00000004,
  3623. FAX_EVENT_TYPE_ACTIVITY = 0x00000008,
  3624. FAX_EVENT_TYPE_QUEUE_STATE = 0x00000010,
  3625. FAX_EVENT_TYPE_IN_ARCHIVE = 0x00000020,
  3626. FAX_EVENT_TYPE_OUT_ARCHIVE = 0x00000040,
  3627. FAX_EVENT_TYPE_FXSSVC_ENDED = 0x00000080,
  3628. FAX_EVENT_TYPE_DEVICE_STATUS = 0x00000100,
  3629. FAX_EVENT_TYPE_NEW_CALL = 0x00000200
  3630. } FAX_ENUM_EVENT_TYPE;
  3631. typedef enum
  3632. {
  3633. FAX_JOB_EVENT_TYPE_ADDED,
  3634. FAX_JOB_EVENT_TYPE_REMOVED,
  3635. FAX_JOB_EVENT_TYPE_STATUS
  3636. } FAX_ENUM_JOB_EVENT_TYPE;
  3637. typedef enum
  3638. {
  3639. FAX_CONFIG_TYPE_RECEIPTS,
  3640. FAX_CONFIG_TYPE_ACTIVITY_LOGGING,
  3641. FAX_CONFIG_TYPE_OUTBOX,
  3642. FAX_CONFIG_TYPE_SENTITEMS,
  3643. FAX_CONFIG_TYPE_INBOX,
  3644. FAX_CONFIG_TYPE_SECURITY,
  3645. FAX_CONFIG_TYPE_EVENTLOGS,
  3646. FAX_CONFIG_TYPE_DEVICES,
  3647. FAX_CONFIG_TYPE_OUT_GROUPS,
  3648. FAX_CONFIG_TYPE_OUT_RULES
  3649. } FAX_ENUM_CONFIG_TYPE;
  3650. typedef struct _FAX_EVENT_JOBA
  3651. {
  3652. DWORDLONG dwlMessageId;
  3653. FAX_ENUM_JOB_EVENT_TYPE Type;
  3654. PFAX_JOB_STATUSA pJobData;
  3655. } FAX_EVENT_JOBA, *PFAX_EVENT_JOBA;
  3656. typedef struct _FAX_EVENT_JOBW
  3657. {
  3658. DWORDLONG dwlMessageId;
  3659. FAX_ENUM_JOB_EVENT_TYPE Type;
  3660. PFAX_JOB_STATUSW pJobData;
  3661. } FAX_EVENT_JOBW, *PFAX_EVENT_JOBW;
  3662. #ifdef UNICODE
  3663. typedef FAX_EVENT_JOBW FAX_EVENT_JOB;
  3664. typedef PFAX_EVENT_JOBW PFAX_EVENT_JOB;
  3665. #else
  3666. typedef FAX_EVENT_JOBA FAX_EVENT_JOB;
  3667. typedef PFAX_EVENT_JOBA PFAX_EVENT_JOB;
  3668. #endif // UNICODE
  3669. typedef struct _FAX_EVENT_DEVICE_STATUS
  3670. {
  3671. DWORD dwDeviceId; // Id of the device whose status has just changed
  3672. DWORD dwNewStatus; // The new status - a combination of values from FAX_ENUM_DEVICE_STATUS
  3673. } FAX_EVENT_DEVICE_STATUS, *PFAX_EVENT_DEVICE_STATUS;
  3674. typedef struct _FAX_EVENT_NEW_CALLA
  3675. {
  3676. HCALL hCall;
  3677. DWORD dwDeviceId;
  3678. LPTSTR lptstrCallerId;
  3679. } FAX_EVENT_NEW_CALLA, *PFAX_EVENT_NEW_CALLA;
  3680. typedef struct _FAX_EVENT_NEW_CALLW
  3681. {
  3682. HCALL hCall;
  3683. DWORD dwDeviceId;
  3684. LPTSTR lptstrCallerId;
  3685. } FAX_EVENT_NEW_CALLW, *PFAX_EVENT_NEW_CALLW;
  3686. #ifdef UNICODE
  3687. typedef FAX_EVENT_NEW_CALLW FAX_EVENT_NEW_CALL;
  3688. typedef PFAX_EVENT_NEW_CALLW PFAX_EVENT_NEW_CALL;
  3689. #else
  3690. typedef FAX_EVENT_NEW_CALLA FAX_EVENT_NEW_CALL;
  3691. typedef PFAX_EVENT_NEW_CALLA PFAX_EVENT_NEW_CALL;
  3692. #endif // UNICODE
  3693. typedef struct _FAX_EVENT_EXA
  3694. {
  3695. DWORD dwSizeOfStruct;
  3696. FILETIME TimeStamp;
  3697. FAX_ENUM_EVENT_TYPE EventType;
  3698. union
  3699. {
  3700. FAX_EVENT_JOBA JobInfo;
  3701. FAX_ENUM_CONFIG_TYPE ConfigType;
  3702. FAX_SERVER_ACTIVITY ActivityInfo;
  3703. FAX_EVENT_NEW_CALL NewCall;
  3704. DWORD dwQueueStates;
  3705. FAX_EVENT_DEVICE_STATUS DeviceStatus;
  3706. } EventInfo;
  3707. } FAX_EVENT_EXA, *PFAX_EVENT_EXA;
  3708. typedef struct _FAX_EVENT_EXW
  3709. {
  3710. DWORD dwSizeOfStruct;
  3711. FILETIME TimeStamp;
  3712. FAX_ENUM_EVENT_TYPE EventType;
  3713. union
  3714. {
  3715. FAX_EVENT_JOBW JobInfo;
  3716. FAX_ENUM_CONFIG_TYPE ConfigType;
  3717. FAX_SERVER_ACTIVITY ActivityInfo;
  3718. FAX_EVENT_NEW_CALL NewCall;
  3719. DWORD dwQueueStates;
  3720. FAX_EVENT_DEVICE_STATUS DeviceStatus;
  3721. } EventInfo;
  3722. } FAX_EVENT_EXW, *PFAX_EVENT_EXW;
  3723. #ifdef UNICODE
  3724. typedef FAX_EVENT_EXW FAX_EVENT_EX;
  3725. typedef PFAX_EVENT_EXW PFAX_EVENT_EX;
  3726. #else
  3727. typedef FAX_EVENT_EXA FAX_EVENT_EX;
  3728. typedef PFAX_EVENT_EXA PFAX_EVENT_EX;
  3729. #endif // UNICODE
  3730. //-------------------------------------------------------------------------------
  3731. // Printers Info
  3732. //-------------------------------------------------------------------------------
  3733. typedef struct _FAX_PRINTER_INFOA
  3734. {
  3735. LPSTR lptstrPrinterName;
  3736. LPSTR lptstrServerName;
  3737. LPSTR lptstrDriverName;
  3738. } FAX_PRINTER_INFOA, *PFAX_PRINTER_INFOA;
  3739. typedef struct _FAX_PRINTER_INFOW
  3740. {
  3741. LPWSTR lptstrPrinterName;
  3742. LPWSTR lptstrServerName;
  3743. LPWSTR lptstrDriverName;
  3744. } FAX_PRINTER_INFOW, *PFAX_PRINTER_INFOW;
  3745. #ifdef UNICODE
  3746. typedef FAX_PRINTER_INFOW FAX_PRINTER_INFO;
  3747. typedef PFAX_PRINTER_INFOW PFAX_PRINTER_INFO;
  3748. #else
  3749. typedef FAX_PRINTER_INFOA FAX_PRINTER_INFO;
  3750. typedef PFAX_PRINTER_INFOA PFAX_PRINTER_INFO;
  3751. #endif // UNICODE
  3752. WINFAXAPI
  3753. BOOL
  3754. WINAPI
  3755. FaxGetServicePrintersA(
  3756. IN HANDLE hFaxHandle,
  3757. OUT PFAX_PRINTER_INFOA *ppPrinterInfo,
  3758. OUT LPDWORD lpdwPrintersReturned
  3759. );
  3760. WINFAXAPI
  3761. BOOL
  3762. WINAPI
  3763. FaxGetServicePrintersW(
  3764. IN HANDLE hFaxHandle,
  3765. OUT PFAX_PRINTER_INFOW *ppPrinterInfo,
  3766. OUT LPDWORD lpdwPrintersReturned
  3767. );
  3768. #ifdef UNICODE
  3769. #define FaxGetServicePrinters FaxGetServicePrintersW
  3770. #else
  3771. #define FaxGetServicePrinters FaxGetServicePrintersA
  3772. #endif // !UNICODE
  3773. typedef BOOL
  3774. (WINAPI *PFAXGETSERVICEPRINTERSA)(
  3775. IN HANDLE hFaxHandle,
  3776. OUT PFAX_PRINTER_INFOA *ppPrinterInfo,
  3777. OUT LPDWORD lpdwPrintersReturned
  3778. );
  3779. typedef BOOL
  3780. (WINAPI *PFAXGETSERVICEPRINTERSW)(
  3781. IN HANDLE hFaxHandle,
  3782. OUT PFAX_PRINTER_INFOW *ppPrinterInfo,
  3783. OUT LPDWORD lpdwPrintersReturned
  3784. );
  3785. #ifdef UNICODE
  3786. #define PFAXGETSERVICEPRINTERS PFAXGETSERVICEPRINTERSW
  3787. #else
  3788. #define PFAXGETSERVICEPRINTERS PFAXGETSERVICEPRINTERSA
  3789. #endif // !UNICODE
  3790. WINFAXAPI
  3791. BOOL
  3792. WINAPI
  3793. FaxRegisterForServerEvents (
  3794. IN HANDLE hFaxHandle,
  3795. IN DWORD dwEventTypes,
  3796. IN HANDLE hCompletionPort,
  3797. IN DWORD_PTR dwCompletionKey,
  3798. IN HWND hWnd,
  3799. IN DWORD dwMessage,
  3800. OUT LPHANDLE lphEvent
  3801. );
  3802. WINFAXAPI
  3803. BOOL
  3804. WINAPI
  3805. FaxUnregisterForServerEvents (
  3806. IN HANDLE hEvent
  3807. );
  3808. //********************************************
  3809. //* Manual answer support functions
  3810. //********************************************
  3811. WINFAXAPI
  3812. BOOL
  3813. WINAPI
  3814. FaxAnswerCall(
  3815. IN HANDLE hFaxHandle,
  3816. IN CONST DWORD dwDeviceId
  3817. );
  3818. //********************************************
  3819. //* Configuration Wizard support functions
  3820. //********************************************
  3821. WINFAXAPI
  3822. BOOL
  3823. WINAPI
  3824. FaxGetConfigWizardUsed (
  3825. OUT LPBOOL lpbConfigWizardUsed
  3826. );
  3827. WINFAXAPI
  3828. BOOL
  3829. WINAPI
  3830. FaxSetConfigWizardUsed (
  3831. IN HANDLE hFaxHandle,
  3832. OUT BOOL bConfigWizardUsed
  3833. );
  3834. //********************************************
  3835. //* Ivalidate archive folder
  3836. //********************************************
  3837. WINFAXAPI
  3838. BOOL
  3839. WINAPI
  3840. FaxRefreshArchive (
  3841. IN HANDLE hFaxHandle,
  3842. IN FAX_ENUM_MESSAGE_FOLDER Folder
  3843. );
  3844. WINFAXAPI
  3845. BOOL
  3846. FaxSetRecipientsLimit(
  3847. IN HANDLE hFaxHandle,
  3848. IN DWORD dwRecipientsLimit
  3849. );
  3850. WINFAXAPI
  3851. BOOL
  3852. WINAPI
  3853. FaxGetRecipientsLimit(
  3854. IN HANDLE hFaxHandle,
  3855. OUT LPDWORD lpdwRecipientsLimit
  3856. );
  3857. #include "FaxSuite.h"
  3858. WINFAXAPI
  3859. BOOL
  3860. FaxGetServerSKU(
  3861. IN HANDLE hFaxHandle,
  3862. OUT PRODUCT_SKU_TYPE* pServerSKU
  3863. );
  3864. //
  3865. // FaxCheckValidFaxFolder should be used to verify arbitrary folder paths before they are used
  3866. // as a parameter for the store-in-folder routing method.
  3867. // It should not be used to verify the fax queue folder or the fax archive folders.
  3868. //
  3869. WINFAXAPI
  3870. BOOL
  3871. FaxCheckValidFaxFolder(
  3872. IN HANDLE hFaxHandle,
  3873. IN LPCWSTR lpcwstrPath
  3874. );
  3875. #ifdef __cplusplus
  3876. }
  3877. #endif
  3878. #endif