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

1143 lines
31 KiB

  1. ;begin_both
  2. /*++
  3. Copyright (c) 1996-1998 Microsoft Corporation
  4. Module Name:
  5. winfax.h
  6. Abstract:
  7. This module contains the WIN32 FAX APIs.
  8. --*/
  9. ;end_both
  10. #ifndef _FAXAPI_
  11. #define _FAXAPI_
  12. #ifndef MIDL_PASS
  13. #include <tapi.h>
  14. #endif
  15. #if !defined(_WINFAX_)
  16. #define WINFAXAPI DECLSPEC_IMPORT
  17. #else
  18. #define WINFAXAPI
  19. #endif
  20. ;begin_internal
  21. #ifndef _FAXAPIP_
  22. #define _FAXAPIP_
  23. ;end_internal
  24. ;begin_both
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28. ;end_both
  29. #define FAXLOG_LEVEL_NONE 0
  30. #define FAXLOG_LEVEL_MIN 1
  31. #define FAXLOG_LEVEL_MED 2
  32. #define FAXLOG_LEVEL_MAX 3
  33. #define FAXLOG_CATEGORY_INIT 1
  34. #define FAXLOG_CATEGORY_OUTBOUND 2
  35. #define FAXLOG_CATEGORY_INBOUND 3
  36. #define FAXLOG_CATEGORY_UNKNOWN 4
  37. typedef struct _FAX_LOG_CATEGORY% {
  38. LPCTSTR% Name; // logging category name
  39. DWORD Category; // logging category number
  40. DWORD Level; // logging level for the category
  41. } FAX_LOG_CATEGORY%, *PFAX_LOG_CATEGORY%;
  42. typedef struct _FAX_TIME {
  43. WORD Hour;
  44. WORD Minute;
  45. } FAX_TIME, *PFAX_TIME;
  46. typedef struct _FAX_CONFIGURATION% {
  47. DWORD SizeOfStruct; // size of this structure
  48. DWORD Retries; // number of retries for fax send
  49. DWORD RetryDelay; // number of minutes between retries
  50. DWORD DirtyDays; // number of days to keep an unsent job in the queue
  51. BOOL Branding; // fsp should brand outgoing faxes
  52. BOOL UseDeviceTsid; // server uses device tsid only
  53. BOOL ServerCp; // clients must use cover pages on the server
  54. BOOL PauseServerQueue; // is the server queue paused?
  55. FAX_TIME StartCheapTime; // start of discount rate period
  56. FAX_TIME StopCheapTime; // end of discount rate period
  57. BOOL ArchiveOutgoingFaxes; // whether outgoing faxes should be archived
  58. LPCTSTR% ArchiveDirectory; // archive directory for outgoing faxes
  59. LPCTSTR% InboundProfile; // profile used for inbound routing (email)
  60. } FAX_CONFIGURATION%, *PFAX_CONFIGURATION%;
  61. //
  62. // FaxSetJob() command codes
  63. //
  64. #define JC_UNKNOWN 0
  65. #define JC_DELETE 1
  66. #define JC_PAUSE 2
  67. #define JC_RESUME 3
  68. #define JC_RESTART JC_RESUME
  69. //
  70. // job type defines
  71. //
  72. #define JT_UNKNOWN 0
  73. #define JT_SEND 1
  74. #define JT_RECEIVE 2
  75. #define JT_ROUTING 3
  76. #define JT_FAIL_RECEIVE 4
  77. //
  78. // job status defines
  79. //
  80. #define JS_PENDING 0x00000000
  81. #define JS_INPROGRESS 0x00000001
  82. #define JS_DELETING 0x00000002
  83. #define JS_FAILED 0x00000004
  84. #define JS_PAUSED 0x00000008
  85. #define JS_NOLINE 0x00000010
  86. #define JS_RETRYING 0x00000020
  87. #define JS_RETRIES_EXCEEDED 0x00000040
  88. typedef struct _FAX_DEVICE_STATUS% {
  89. DWORD SizeOfStruct; // size of this structure
  90. LPCTSTR% CallerId; // caller id string
  91. LPCTSTR% Csid; // station identifier
  92. DWORD CurrentPage; // current page
  93. DWORD DeviceId; // permanent line id
  94. LPCTSTR% DeviceName; // device name
  95. LPCTSTR% DocumentName; // document name
  96. DWORD JobType; // send or receive?
  97. LPCTSTR% PhoneNumber; // sending phone number
  98. LPCTSTR% RoutingString; // routing information
  99. LPCTSTR% SenderName; // sender name
  100. LPCTSTR% RecipientName; // recipient name
  101. DWORD Size; // size in bytes of the document
  102. FILETIME StartTime; // starting time of the fax send/receive
  103. DWORD Status; // current status of the device, see FPS_??? masks
  104. LPCTSTR% StatusString; // status string if the Status field is zero. this may be NULL.
  105. FILETIME SubmittedTime; // time the document was submitted
  106. DWORD TotalPages; // total number of pages in this job
  107. LPCTSTR% Tsid; // transmitting station identifier
  108. LPCTSTR% UserName; // user that submitted the active job
  109. } FAX_DEVICE_STATUS%, *PFAX_DEVICE_STATUS%;
  110. typedef struct _FAX_JOB_ENTRY% {
  111. DWORD SizeOfStruct; // size of this structure
  112. DWORD JobId; // fax job id
  113. LPCTSTR% UserName; // user who submitted the job
  114. DWORD JobType; // job type, see JT defines
  115. DWORD QueueStatus; // job queue status, see JS defines
  116. DWORD Status; // current status of the device, see FPS_??? masks
  117. DWORD Size; // size in bytes of the document
  118. DWORD PageCount; // total page count
  119. LPCTSTR% RecipientNumber; // recipient fax number
  120. LPCTSTR% RecipientName; // recipient name
  121. LPCTSTR% Tsid; // transmitter's id
  122. LPCTSTR% SenderName; // sender name
  123. LPCTSTR% SenderCompany; // sender company
  124. LPCTSTR% SenderDept; // sender department
  125. LPCTSTR% BillingCode; // billing code
  126. DWORD ScheduleAction; // when to schedule the fax, see JSA defines
  127. SYSTEMTIME ScheduleTime; // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
  128. DWORD DeliveryReportType; // delivery report type, see DRT defines
  129. LPCTSTR% DeliveryReportAddress; // email address for delivery report (ndr or dr)
  130. LPCTSTR% DocumentName; // document name
  131. } FAX_JOB_ENTRY%, *PFAX_JOB_ENTRY%;
  132. //
  133. // fax port state masks
  134. //
  135. // if you change these defines the be sure to
  136. // change the resources in the fax service.
  137. //
  138. #define FPS_DIALING 0x20000001
  139. #define FPS_SENDING 0x20000002
  140. #define FPS_RECEIVING 0x20000004
  141. #define FPS_COMPLETED 0x20000008
  142. #define FPS_HANDLED 0x20000010
  143. #define FPS_UNAVAILABLE 0x20000020
  144. #define FPS_BUSY 0x20000040
  145. #define FPS_NO_ANSWER 0x20000080
  146. #define FPS_BAD_ADDRESS 0x20000100
  147. #define FPS_NO_DIAL_TONE 0x20000200
  148. #define FPS_DISCONNECTED 0x20000400
  149. #define FPS_FATAL_ERROR 0x20000800
  150. #define FPS_NOT_FAX_CALL 0x20001000
  151. #define FPS_CALL_DELAYED 0x20002000
  152. #define FPS_CALL_BLACKLISTED 0x20004000
  153. #define FPS_INITIALIZING 0x20008000
  154. #define FPS_OFFLINE 0x20010000
  155. #define FPS_RINGING 0x20020000
  156. #define FPS_AVAILABLE 0x20100000
  157. #define FPS_ABORTING 0x20200000
  158. #define FPS_ROUTING 0x20400000
  159. #define FPS_ANSWERED 0x20800000
  160. //
  161. // fax port capability mask
  162. //
  163. #define FPF_RECEIVE 0x00000001
  164. #define FPF_SEND 0x00000002
  165. #define FPF_VIRTUAL 0x00000004
  166. ;begin_internal
  167. #define FPF_OBSOLETE 0x00000008
  168. #define FPF_NEW 0x00000010
  169. #define FPF_SELECTED 0x00000020
  170. ;end_internal
  171. typedef struct _FAX_PORT_INFO% {
  172. DWORD SizeOfStruct; // size of this structure
  173. DWORD DeviceId; //
  174. DWORD State; //
  175. DWORD Flags; //
  176. DWORD Rings; //
  177. DWORD Priority; //
  178. LPCTSTR% DeviceName; //
  179. LPCTSTR% Tsid; //
  180. LPCTSTR% Csid; //
  181. } FAX_PORT_INFO%, *PFAX_PORT_INFO%;
  182. typedef struct _FAX_ROUTING_METHOD% {
  183. DWORD SizeOfStruct; // size of this structure
  184. DWORD DeviceId; // device identifier
  185. BOOL Enabled; // is this method enabled for this device?
  186. LPCTSTR% DeviceName; // device name
  187. LPCTSTR% Guid; // guid that identifies this routing method
  188. LPCTSTR% FriendlyName; // friendly name for this method
  189. LPCTSTR% FunctionName; // exported function name that identifies this method
  190. LPCTSTR% ExtensionImageName; // module (dll) name that implements this method
  191. LPCTSTR% ExtensionFriendlyName; // displayable string that identifies the extension
  192. } FAX_ROUTING_METHOD%, *PFAX_ROUTING_METHOD%;
  193. typedef struct _FAX_GLOBAL_ROUTING_INFO% {
  194. DWORD SizeOfStruct; // size of this structure
  195. DWORD Priority; // priority of this device
  196. LPCTSTR% Guid; // guid that identifies this routing method
  197. LPCTSTR% FriendlyName; // friendly name for this method
  198. LPCTSTR% FunctionName; // exported function name that identifies this method
  199. LPCTSTR% ExtensionImageName; // module (dll) name that implements this method
  200. LPCTSTR% ExtensionFriendlyName; // displayable string that identifies the extension
  201. } FAX_GLOBAL_ROUTING_INFO%, *PFAX_GLOBAL_ROUTING_INFO%;
  202. typedef struct _FAX_COVERPAGE_INFO% {
  203. DWORD SizeOfStruct; // Size of this structure
  204. //
  205. // general
  206. //
  207. LPCTSTR% CoverPageName; // coverpage document name
  208. BOOL UseServerCoverPage; // coverpage exists on the fax server
  209. //
  210. // Recipient information
  211. //
  212. LPCTSTR% RecName; //
  213. LPCTSTR% RecFaxNumber; //
  214. LPCTSTR% RecCompany; //
  215. LPCTSTR% RecStreetAddress; //
  216. LPCTSTR% RecCity; //
  217. LPCTSTR% RecState; //
  218. LPCTSTR% RecZip; //
  219. LPCTSTR% RecCountry; //
  220. LPCTSTR% RecTitle; //
  221. LPCTSTR% RecDepartment; //
  222. LPCTSTR% RecOfficeLocation; //
  223. LPCTSTR% RecHomePhone; //
  224. LPCTSTR% RecOfficePhone; //
  225. //
  226. // Sender information
  227. //
  228. LPCTSTR% SdrName; //
  229. LPCTSTR% SdrFaxNumber; //
  230. LPCTSTR% SdrCompany; //
  231. LPCTSTR% SdrAddress; //
  232. LPCTSTR% SdrTitle; //
  233. LPCTSTR% SdrDepartment; //
  234. LPCTSTR% SdrOfficeLocation; //
  235. LPCTSTR% SdrHomePhone; //
  236. LPCTSTR% SdrOfficePhone; //
  237. //
  238. // Misc information
  239. //
  240. LPCTSTR% Note; //
  241. LPCTSTR% Subject; //
  242. SYSTEMTIME TimeSent; // Time the fax was sent
  243. DWORD PageCount; // Number of pages
  244. } FAX_COVERPAGE_INFO%, *PFAX_COVERPAGE_INFO%;
  245. #define JSA_NOW 0
  246. #define JSA_SPECIFIC_TIME 1
  247. #define JSA_DISCOUNT_PERIOD 2
  248. #define DRT_NONE 0
  249. #define DRT_EMAIL 1
  250. #define DRT_INBOX 2
  251. ;begin_internal
  252. //
  253. // the reserved fields are private data used
  254. // by the fax monitor and winfax.
  255. //
  256. //
  257. // Reserved[0] == 0xffffffff
  258. // Reserved[1] == Print job id
  259. //
  260. // Reserved[0] == 0xfffffffe start of a broadcast job
  261. //
  262. ;end_internal
  263. typedef struct _FAX_JOB_PARAM% {
  264. DWORD SizeOfStruct; // size of this structure
  265. LPCTSTR% RecipientNumber; // recipient fax number
  266. LPCTSTR% RecipientName; // recipient name
  267. LPCTSTR% Tsid; // transmitter's id
  268. LPCTSTR% SenderName; // sender name
  269. LPCTSTR% SenderCompany; // sender company
  270. LPCTSTR% SenderDept; // sender department
  271. LPCTSTR% BillingCode; // billing code
  272. DWORD ScheduleAction; // when to schedule the fax, see JSA defines
  273. SYSTEMTIME ScheduleTime; // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
  274. DWORD DeliveryReportType; // delivery report type, see DRT defines
  275. LPCTSTR% DeliveryReportAddress; // email address for delivery report (ndr or dr)
  276. LPCTSTR% DocumentName; // document name (optional)
  277. HCALL CallHandle; // optional call handle
  278. DWORD_PTR Reserved[3]; // reserved for ms use only
  279. } FAX_JOB_PARAM%, *PFAX_JOB_PARAM%;
  280. ;begin_internal
  281. typedef struct _FAX_TAPI_LOCATIONS% {
  282. DWORD PermanentLocationID;
  283. LPCTSTR% LocationName;
  284. DWORD CountryCode;
  285. DWORD AreaCode;
  286. DWORD NumTollPrefixes;
  287. LPCTSTR% TollPrefixes;
  288. } FAX_TAPI_LOCATIONS%, *PFAX_TAPI_LOCATIONS%;
  289. typedef struct _FAX_TAPI_LOCATION_INFO% {
  290. DWORD CurrentLocationID;
  291. DWORD NumLocations;
  292. PFAX_TAPI_LOCATIONS% TapiLocations;
  293. } FAX_TAPI_LOCATION_INFO%, *PFAX_TAPI_LOCATION_INFO%;
  294. ;end_internal
  295. //
  296. // Event Ids
  297. //
  298. // FEI_NEVENTS is the number of events
  299. //
  300. #define FEI_DIALING 0x00000001
  301. #define FEI_SENDING 0x00000002
  302. #define FEI_RECEIVING 0x00000003
  303. #define FEI_COMPLETED 0x00000004
  304. #define FEI_BUSY 0x00000005
  305. #define FEI_NO_ANSWER 0x00000006
  306. #define FEI_BAD_ADDRESS 0x00000007
  307. #define FEI_NO_DIAL_TONE 0x00000008
  308. #define FEI_DISCONNECTED 0x00000009
  309. #define FEI_FATAL_ERROR 0x0000000a
  310. #define FEI_NOT_FAX_CALL 0x0000000b
  311. #define FEI_CALL_DELAYED 0x0000000c
  312. #define FEI_CALL_BLACKLISTED 0x0000000d
  313. #define FEI_RINGING 0x0000000e
  314. #define FEI_ABORTING 0x0000000f
  315. #define FEI_ROUTING 0x00000010
  316. #define FEI_MODEM_POWERED_ON 0x00000011
  317. #define FEI_MODEM_POWERED_OFF 0x00000012
  318. #define FEI_IDLE 0x00000013
  319. #define FEI_FAXSVC_ENDED 0x00000014
  320. #define FEI_ANSWERED 0x00000015
  321. #define FEI_JOB_QUEUED 0x00000016
  322. #define FEI_DELETED 0x00000017
  323. #define FEI_INITIALIZING 0x00000018
  324. #define FEI_LINE_UNAVAILABLE 0x00000019
  325. #define FEI_HANDLED 0x0000001a
  326. #define FEI_FAXSVC_STARTED 0x0000001b
  327. #define FEI_NEVENTS FEI_FAXSVC_STARTED
  328. typedef struct _FAX_EVENT% {
  329. DWORD SizeOfStruct; // Size of this structure
  330. FILETIME TimeStamp; // Timestamp for when the event was generated
  331. DWORD DeviceId; // Permanent line id
  332. DWORD EventId; // Current event id
  333. DWORD JobId; // Fax Job Id, 0xffffffff indicates inactive job
  334. } FAX_EVENT%, *PFAX_EVENT%;
  335. typedef struct _FAX_PRINT_INFO% {
  336. DWORD SizeOfStruct; // Size of this structure
  337. LPCTSTR% DocName; // Document name that appears in the spooler
  338. LPCTSTR% RecipientName; // Recipient name
  339. LPCTSTR% RecipientNumber; // Recipient fax number (non-canonical number)
  340. LPCTSTR% SenderName; // Sender name
  341. LPCTSTR% SenderCompany; // Sender company (optional)
  342. LPCTSTR% SenderDept; // Sender department
  343. LPCTSTR% SenderBillingCode; // Billing code
  344. LPCTSTR% DrProfileName; // Profile name for delivery report <--| mutually exclusive
  345. LPCTSTR% DrEmailAddress; // E.Mail address for delivery report <--|
  346. LPCTSTR% OutputFileName; // for print to file, resulting file name
  347. } FAX_PRINT_INFO%, *PFAX_PRINT_INFO%;
  348. typedef struct _FAX_CONTEXT_INFO% {
  349. DWORD SizeOfStruct; // Size of this structure
  350. HDC hDC; // Device Context
  351. TCHAR% ServerName[MAX_COMPUTERNAME_LENGTH+1]; // Server name
  352. } FAX_CONTEXT_INFO%, *PFAX_CONTEXT_INFO%;
  353. //
  354. // Fax Specific Access Rights
  355. //
  356. #define FAX_JOB_SUBMIT (0x0001)
  357. #define FAX_JOB_QUERY (0x0002)
  358. #define FAX_CONFIG_QUERY (0x0004)
  359. #define FAX_CONFIG_SET (0x0008)
  360. #define FAX_PORT_QUERY (0x0010)
  361. #define FAX_PORT_SET (0x0020)
  362. #define FAX_JOB_MANAGE (0x0040)
  363. #define FAX_READ (STANDARD_RIGHTS_READ |\
  364. FAX_JOB_QUERY |\
  365. FAX_CONFIG_QUERY |\
  366. FAX_PORT_QUERY)
  367. #define FAX_WRITE (STANDARD_RIGHTS_WRITE |\
  368. FAX_JOB_SUBMIT )
  369. #define FAX_ALL_ACCESS (STANDARD_RIGHTS_ALL |\
  370. FAX_JOB_SUBMIT |\
  371. FAX_JOB_QUERY |\
  372. FAX_CONFIG_QUERY |\
  373. FAX_CONFIG_SET |\
  374. FAX_PORT_QUERY |\
  375. FAX_PORT_SET |\
  376. FAX_JOB_MANAGE)
  377. //
  378. // prototypes
  379. //
  380. WINFAXAPI
  381. BOOL
  382. WINAPI
  383. FaxConnectFaxServer%(
  384. IN LPCTSTR% MachineName OPTIONAL,
  385. OUT LPHANDLE FaxHandle
  386. );
  387. typedef BOOL
  388. (WINAPI *PFAXCONNECTFAXSERVER%)(
  389. IN LPCTSTR% MachineName OPTIONAL,
  390. OUT LPHANDLE FaxHandle
  391. );
  392. WINFAXAPI
  393. BOOL
  394. WINAPI
  395. FaxClose(
  396. IN HANDLE FaxHandle
  397. );
  398. typedef BOOL
  399. (WINAPI *PFAXCLOSE)(
  400. IN HANDLE FaxHandle
  401. );
  402. ;begin_internal
  403. WINFAXAPI
  404. BOOL
  405. WINAPI
  406. FaxGetVersion(
  407. IN HANDLE FaxHandle,
  408. OUT LPDWORD Version
  409. );
  410. typedef BOOL
  411. (WINAPI *PFAXGETVERSION)(
  412. IN HANDLE FaxHandle,
  413. OUT LPDWORD Version
  414. );
  415. ;end_internal
  416. WINFAXAPI
  417. BOOL
  418. WINAPI
  419. FaxAccessCheck(
  420. IN HANDLE FaxHandle,
  421. IN DWORD AccessMask
  422. );
  423. typedef BOOL
  424. (WINAPI *PFAXACCESSCHECK)(
  425. IN HANDLE FaxHandle,
  426. IN DWORD AccessMask
  427. );
  428. #define PORT_OPEN_QUERY 0x00000001
  429. #define PORT_OPEN_MODIFY 0x00000002
  430. WINFAXAPI
  431. BOOL
  432. WINAPI
  433. FaxOpenPort(
  434. IN HANDLE FaxHandle,
  435. IN DWORD DeviceId,
  436. IN DWORD Flags,
  437. OUT LPHANDLE FaxPortHandle
  438. );
  439. typedef BOOL
  440. (WINAPI *PFAXOPENPORT)(
  441. IN HANDLE FaxHandle,
  442. IN DWORD DeviceId,
  443. IN DWORD Flags,
  444. OUT LPHANDLE FaxPortHandle
  445. );
  446. WINFAXAPI
  447. BOOL
  448. WINAPI
  449. FaxCompleteJobParams%(
  450. IN OUT PFAX_JOB_PARAM% *JobParams,
  451. IN OUT PFAX_COVERPAGE_INFO% *CoverpageInfo
  452. );
  453. typedef BOOL
  454. (WINAPI *PFAXCOMPLETEJOBPARAMS%)(
  455. IN OUT PFAX_JOB_PARAM% *JobParams,
  456. IN OUT PFAX_COVERPAGE_INFO% *CoverpageInfo
  457. );
  458. WINFAXAPI
  459. BOOL
  460. WINAPI
  461. FaxSendDocument%(
  462. IN HANDLE FaxHandle,
  463. IN LPCTSTR% FileName,
  464. IN PFAX_JOB_PARAM% JobParams,
  465. IN const FAX_COVERPAGE_INFO% *CoverpageInfo, OPTIONAL
  466. OUT LPDWORD FaxJobId OPTIONAL
  467. );
  468. typedef BOOL
  469. (WINAPI *PFAXSENDDOCUMENT%)(
  470. IN HANDLE FaxHandle,
  471. IN LPCTSTR% FileName,
  472. IN PFAX_JOB_PARAM% JobParams,
  473. IN const FAX_COVERPAGE_INFO% *CoverpageInfo, OPTIONAL
  474. OUT LPDWORD FaxJobId OPTIONAL
  475. );
  476. typedef BOOL
  477. (CALLBACK *PFAX_RECIPIENT_CALLBACK%)(
  478. IN HANDLE FaxHandle,
  479. IN DWORD RecipientNumber,
  480. IN LPVOID Context,
  481. IN OUT PFAX_JOB_PARAM% JobParams,
  482. IN OUT PFAX_COVERPAGE_INFO% CoverpageInfo OPTIONAL
  483. );
  484. WINFAXAPI
  485. BOOL
  486. WINAPI
  487. FaxSendDocumentForBroadcast%(
  488. IN HANDLE FaxHandle,
  489. IN LPCTSTR% FileName,
  490. OUT LPDWORD FaxJobId,
  491. IN PFAX_RECIPIENT_CALLBACK% FaxRecipientCallback,
  492. IN LPVOID Context
  493. );
  494. typedef BOOL
  495. (WINAPI *PFAXSENDDOCUMENTFORBROADCAST%)(
  496. IN HANDLE FaxHandle,
  497. IN LPCTSTR% FileName,
  498. OUT LPDWORD FaxJobId,
  499. IN PFAX_RECIPIENT_CALLBACK% FaxRecipientCallback,
  500. IN LPVOID Context
  501. );
  502. WINFAXAPI
  503. BOOL
  504. WINAPI
  505. FaxEnumJobs%(
  506. IN HANDLE FaxHandle,
  507. OUT PFAX_JOB_ENTRY% *JobEntry,
  508. OUT LPDWORD JobsReturned
  509. );
  510. typedef BOOL
  511. (WINAPI *PFAXENUMJOBS%)(
  512. IN HANDLE FaxHandle,
  513. OUT PFAX_JOB_ENTRY% *JobEntry,
  514. OUT LPDWORD JobsReturned
  515. );
  516. WINFAXAPI
  517. BOOL
  518. WINAPI
  519. FaxGetJob%(
  520. IN HANDLE FaxHandle,
  521. IN DWORD JobId,
  522. OUT PFAX_JOB_ENTRY% *JobEntry
  523. );
  524. typedef BOOL
  525. (WINAPI *PFAXGETJOB%)(
  526. IN HANDLE FaxHandle,
  527. IN DWORD JobId,
  528. OUT PFAX_JOB_ENTRY% *JobEntry
  529. );
  530. WINFAXAPI
  531. BOOL
  532. WINAPI
  533. FaxSetJob%(
  534. IN HANDLE FaxHandle,
  535. IN DWORD JobId,
  536. IN DWORD Command,
  537. IN const FAX_JOB_ENTRY% *JobEntry
  538. );
  539. typedef BOOL
  540. (WINAPI *PFAXSETJOB%)(
  541. IN HANDLE FaxHandle,
  542. IN DWORD JobId,
  543. IN DWORD Command,
  544. IN const FAX_JOB_ENTRY% *JobEntry
  545. );
  546. WINFAXAPI
  547. BOOL
  548. WINAPI
  549. FaxGetPageData(
  550. IN HANDLE FaxHandle,
  551. IN DWORD JobId,
  552. OUT LPBYTE *Buffer,
  553. OUT LPDWORD BufferSize,
  554. OUT LPDWORD ImageWidth,
  555. OUT LPDWORD ImageHeight
  556. );
  557. typedef BOOL
  558. (WINAPI *PFAXGETPAGEDATA)(
  559. IN HANDLE FaxHandle,
  560. IN DWORD JobId,
  561. OUT LPBYTE *Buffer,
  562. OUT LPDWORD BufferSize,
  563. OUT LPDWORD ImageWidth,
  564. OUT LPDWORD ImageHeight
  565. );
  566. WINFAXAPI
  567. BOOL
  568. WINAPI
  569. FaxGetDeviceStatus%(
  570. IN HANDLE FaxPortHandle,
  571. OUT PFAX_DEVICE_STATUS% *DeviceStatus
  572. );
  573. typedef BOOL
  574. (WINAPI *PFAXGETDEVICESTATUS%)(
  575. IN HANDLE FaxPortHandle,
  576. OUT PFAX_DEVICE_STATUS% *DeviceStatus
  577. );
  578. WINFAXAPI
  579. BOOL
  580. WINAPI
  581. FaxAbort(
  582. IN HANDLE FaxHandle,
  583. IN DWORD JobId
  584. );
  585. typedef BOOL
  586. (WINAPI *PFAXABORT)(
  587. IN HANDLE FaxHandle,
  588. IN DWORD JobId
  589. );
  590. WINFAXAPI
  591. BOOL
  592. WINAPI
  593. FaxGetConfiguration%(
  594. IN HANDLE FaxHandle,
  595. OUT PFAX_CONFIGURATION% *FaxConfig
  596. );
  597. typedef BOOL
  598. (WINAPI *PFAXGETCONFIGURATION%)(
  599. IN HANDLE FaxHandle,
  600. OUT PFAX_CONFIGURATION% *FaxConfig
  601. );
  602. WINFAXAPI
  603. BOOL
  604. WINAPI
  605. FaxSetConfiguration%(
  606. IN HANDLE FaxHandle,
  607. IN const FAX_CONFIGURATION% *FaxConfig
  608. );
  609. typedef BOOL
  610. (WINAPI *PFAXSETCONFIGURATION%)(
  611. IN HANDLE FaxHandle,
  612. IN const FAX_CONFIGURATION% *FaxConfig
  613. );
  614. WINFAXAPI
  615. BOOL
  616. WINAPI
  617. FaxGetLoggingCategories%(
  618. IN HANDLE FaxHandle,
  619. OUT PFAX_LOG_CATEGORY% *Categories,
  620. OUT LPDWORD NumberCategories
  621. );
  622. typedef BOOL
  623. (WINAPI *PFAXGETLOGGINGCATEGORIES%)(
  624. IN HANDLE FaxHandle,
  625. OUT PFAX_LOG_CATEGORY% *Categories,
  626. OUT LPDWORD NumberCategories
  627. );
  628. WINFAXAPI
  629. BOOL
  630. WINAPI
  631. FaxSetLoggingCategories%(
  632. IN HANDLE FaxHandle,
  633. IN const FAX_LOG_CATEGORY% *Categories,
  634. IN DWORD NumberCategories
  635. );
  636. typedef BOOL
  637. (WINAPI *PFAXSETLOGGINGCATEGORIES%)(
  638. IN HANDLE FaxHandle,
  639. IN const FAX_LOG_CATEGORY% *Categories,
  640. IN DWORD NumberCategories
  641. );
  642. WINFAXAPI
  643. BOOL
  644. WINAPI
  645. FaxEnumPorts%(
  646. IN HANDLE FaxHandle,
  647. OUT PFAX_PORT_INFO% *PortInfo,
  648. OUT LPDWORD PortsReturned
  649. );
  650. typedef BOOL
  651. (WINAPI *PFAXENUMPORTS%)(
  652. IN HANDLE FaxHandle,
  653. OUT PFAX_PORT_INFO% *PortInfo,
  654. OUT LPDWORD PortsReturned
  655. );
  656. WINFAXAPI
  657. BOOL
  658. WINAPI
  659. FaxGetPort%(
  660. IN HANDLE FaxPortHandle,
  661. OUT PFAX_PORT_INFO% *PortInfo
  662. );
  663. typedef BOOL
  664. (WINAPI *PFAXGETPORT%)(
  665. IN HANDLE FaxPortHandle,
  666. OUT PFAX_PORT_INFO% *PortInfo
  667. );
  668. WINFAXAPI
  669. BOOL
  670. WINAPI
  671. FaxSetPort%(
  672. IN HANDLE FaxPortHandle,
  673. IN const FAX_PORT_INFO% *PortInfo
  674. );
  675. typedef BOOL
  676. (WINAPI *PFAXSETPORT%)(
  677. IN HANDLE FaxPortHandle,
  678. IN const FAX_PORT_INFO% *PortInfo
  679. );
  680. WINFAXAPI
  681. BOOL
  682. WINAPI
  683. FaxEnumRoutingMethods%(
  684. IN HANDLE FaxPortHandle,
  685. OUT PFAX_ROUTING_METHOD% *RoutingMethod,
  686. OUT LPDWORD MethodsReturned
  687. );
  688. typedef BOOL
  689. (WINAPI *PFAXENUMROUTINGMETHODS%)(
  690. IN HANDLE FaxPortHandle,
  691. OUT PFAX_ROUTING_METHOD% *RoutingMethod,
  692. OUT LPDWORD MethodsReturned
  693. );
  694. WINFAXAPI
  695. BOOL
  696. WINAPI
  697. FaxEnableRoutingMethod%(
  698. IN HANDLE FaxPortHandle,
  699. IN LPCTSTR% RoutingGuid,
  700. IN BOOL Enabled
  701. );
  702. typedef BOOL
  703. (WINAPI *PFAXENABLEROUTINGMETHOD%)(
  704. IN HANDLE FaxPortHandle,
  705. IN LPCTSTR% RoutingGuid,
  706. IN BOOL Enabled
  707. );
  708. WINFAXAPI
  709. BOOL
  710. WINAPI
  711. FaxEnumGlobalRoutingInfo%(
  712. IN HANDLE FaxHandle,
  713. OUT PFAX_GLOBAL_ROUTING_INFO% *RoutingInfo,
  714. OUT LPDWORD MethodsReturned
  715. );
  716. typedef BOOL
  717. (WINAPI *PFAXENUMGLOBALROUTINGINFO%)(
  718. IN HANDLE FaxHandle,
  719. OUT PFAX_GLOBAL_ROUTING_INFO% *RoutingInfo,
  720. OUT LPDWORD MethodsReturned
  721. );
  722. WINFAXAPI
  723. BOOL
  724. WINAPI
  725. FaxSetGlobalRoutingInfo%(
  726. IN HANDLE FaxHandle,
  727. IN const FAX_GLOBAL_ROUTING_INFO% *RoutingInfo
  728. );
  729. typedef BOOL
  730. (WINAPI *PFAXSETGLOBALROUTINGINFO%)(
  731. IN HANDLE FaxPortHandle,
  732. IN const FAX_GLOBAL_ROUTING_INFO% *RoutingInfo
  733. );
  734. WINFAXAPI
  735. BOOL
  736. WINAPI
  737. FaxGetRoutingInfo%(
  738. IN HANDLE FaxPortHandle,
  739. IN LPCTSTR% RoutingGuid,
  740. OUT LPBYTE *RoutingInfoBuffer,
  741. OUT LPDWORD RoutingInfoBufferSize
  742. );
  743. typedef BOOL
  744. (WINAPI *PFAXGETROUTINGINFO%)(
  745. IN HANDLE FaxPortHandle,
  746. IN LPCTSTR% RoutingGuid,
  747. OUT LPBYTE *RoutingInfoBuffer,
  748. OUT LPDWORD RoutingInfoBufferSize
  749. );
  750. WINFAXAPI
  751. BOOL
  752. WINAPI
  753. FaxSetRoutingInfo%(
  754. IN HANDLE FaxPortHandle,
  755. IN LPCTSTR% RoutingGuid,
  756. IN const BYTE *RoutingInfoBuffer,
  757. IN DWORD RoutingInfoBufferSize
  758. );
  759. typedef BOOL
  760. (WINAPI *PFAXSETROUTINGINFO%)(
  761. IN HANDLE FaxPortHandle,
  762. IN LPCTSTR% RoutingGuid,
  763. IN const BYTE *RoutingInfoBuffer,
  764. IN DWORD RoutingInfoBufferSize
  765. );
  766. ;begin_internal
  767. WINFAXAPI
  768. BOOL
  769. WINAPI
  770. FaxGetTapiLocations%(
  771. IN HANDLE FaxHandle,
  772. OUT PFAX_TAPI_LOCATION_INFO% *TapiLocationInfo
  773. );
  774. typedef BOOL
  775. (WINAPI *PFAXGETTAPILOCATIONS%)(
  776. IN HANDLE FaxHandle,
  777. OUT PFAX_TAPI_LOCATION_INFO% *TapiLocationInfo
  778. );
  779. WINFAXAPI
  780. BOOL
  781. WINAPI
  782. FaxSetTapiLocations%(
  783. IN HANDLE FaxHandle,
  784. IN PFAX_TAPI_LOCATION_INFO% TapiLocationInfo
  785. );
  786. typedef BOOL
  787. (WINAPI *PFAXSETTAPILOCATIONS%)(
  788. IN HANDLE FaxHandle,
  789. IN PFAX_TAPI_LOCATION_INFO% TapiLocationInfo
  790. );
  791. WINFAXAPI
  792. BOOL
  793. WINAPI
  794. FaxGetMapiProfiles%(
  795. IN HANDLE FaxHandle,
  796. OUT LPBYTE *MapiProfiles
  797. );
  798. typedef BOOL
  799. (WINAPI *PFAXGETMAPIPROFILES%)(
  800. IN HANDLE FaxHandle,
  801. OUT LPBYTE *MapiProfiles
  802. );
  803. typedef struct FaxSecurityDescriptor {
  804. DWORD Id;
  805. LPWSTR FriendlyName;
  806. LPBYTE SecurityDescriptor;
  807. } FAX_SECURITY_DESCRIPTOR, * PFAX_SECURITY_DESCRIPTOR;
  808. WINFAXAPI
  809. BOOL
  810. WINAPI
  811. FaxGetSecurityDescriptorCount(
  812. IN HANDLE FaxHandle,
  813. OUT LPDWORD Count
  814. );
  815. WINFAXAPI
  816. BOOL
  817. WINAPI
  818. FaxGetSecurityDescriptor(
  819. IN HANDLE FaxHandle,
  820. IN DWORD Id,
  821. OUT PFAX_SECURITY_DESCRIPTOR * FaxSecurityDescriptor
  822. );
  823. WINFAXAPI
  824. BOOL
  825. WINAPI
  826. FaxSetSecurityDescriptor(
  827. IN HANDLE FaxHandle,
  828. IN PFAX_SECURITY_DESCRIPTOR FaxSecurityDescriptor
  829. );
  830. ;end_internal
  831. WINFAXAPI
  832. BOOL
  833. WINAPI
  834. FaxInitializeEventQueue(
  835. IN HANDLE FaxHandle,
  836. IN HANDLE CompletionPort,
  837. IN ULONG_PTR CompletionKey,
  838. IN HWND hWnd,
  839. IN UINT MessageStart
  840. );
  841. typedef BOOL
  842. (WINAPI *PFAXINITIALIZEEVENTQUEUE)(
  843. IN HANDLE FaxHandle,
  844. IN HANDLE CompletionPort,
  845. IN ULONG_PTR CompletionKey,
  846. IN HWND hWnd,
  847. IN UINT MessageStart
  848. );
  849. WINFAXAPI
  850. VOID
  851. WINAPI
  852. FaxFreeBuffer(
  853. LPVOID Buffer
  854. );
  855. typedef VOID
  856. (WINAPI *PFAXFREEBUFFER)(
  857. LPVOID Buffer
  858. );
  859. WINFAXAPI
  860. BOOL
  861. WINAPI
  862. FaxStartPrintJob%(
  863. IN LPCTSTR% PrinterName,
  864. IN const FAX_PRINT_INFO% *PrintInfo,
  865. OUT LPDWORD FaxJobId,
  866. OUT PFAX_CONTEXT_INFO% FaxContextInfo
  867. );
  868. typedef BOOL
  869. (WINAPI *PFAXSTARTPRINTJOB%)(
  870. IN LPCTSTR% PrinterName,
  871. IN const FAX_PRINT_INFO% *PrintInfo,
  872. OUT LPDWORD FaxJobId,
  873. OUT PFAX_CONTEXT_INFO% FaxContextInfo
  874. );
  875. WINFAXAPI
  876. BOOL
  877. WINAPI
  878. FaxPrintCoverPage%(
  879. IN const FAX_CONTEXT_INFO% *FaxContextInfo,
  880. IN const FAX_COVERPAGE_INFO% *CoverPageInfo
  881. );
  882. typedef BOOL
  883. (WINAPI *PFAXPRINTCOVERPAGE%)(
  884. IN const FAX_CONTEXT_INFO% *FaxContextInfo,
  885. IN const FAX_COVERPAGE_INFO% *CoverPageInfo
  886. );
  887. WINFAXAPI
  888. BOOL
  889. WINAPI
  890. FaxRegisterServiceProviderW(
  891. IN LPCWSTR DeviceProvider,
  892. IN LPCWSTR FriendlyName,
  893. IN LPCWSTR ImageName,
  894. IN LPCWSTR TspName
  895. );
  896. #define FaxRegisterServiceProvider FaxRegisterServiceProviderW
  897. typedef BOOL
  898. (WINAPI *PFAXREGISTERSERVICEPROVIDERW)(
  899. IN LPCWSTR DeviceProvider,
  900. IN LPCWSTR FriendlyName,
  901. IN LPCWSTR ImageName,
  902. IN LPCWSTR TspName
  903. );
  904. #define PFAXREGISTERSERVICEPROVIDER PFAXREGISTERSERVICEPROVIDERW
  905. typedef BOOL
  906. (CALLBACK *PFAX_ROUTING_INSTALLATION_CALLBACKW)(
  907. IN HANDLE FaxHandle,
  908. IN LPVOID Context,
  909. IN OUT LPWSTR MethodName,
  910. IN OUT LPWSTR FriendlyName,
  911. IN OUT LPWSTR FunctionName,
  912. IN OUT LPWSTR Guid
  913. );
  914. #define PFAX_ROUTING_INSTALLATION_CALLBACK PFAX_ROUTING_INSTALLATION_CALLBACKW
  915. WINFAXAPI
  916. BOOL
  917. WINAPI
  918. FaxRegisterRoutingExtensionW(
  919. IN HANDLE FaxHandle,
  920. IN LPCWSTR ExtensionName,
  921. IN LPCWSTR FriendlyName,
  922. IN LPCWSTR ImageName,
  923. IN PFAX_ROUTING_INSTALLATION_CALLBACKW CallBack,
  924. IN LPVOID Context
  925. );
  926. #define FaxRegisterRoutingExtension FaxRegisterRoutingExtensionW
  927. typedef BOOL
  928. (WINAPI *PFAXREGISTERROUTINGEXTENSIONW)(
  929. IN HANDLE FaxHandle,
  930. IN LPCWSTR ExtensionName,
  931. IN LPCWSTR FriendlyName,
  932. IN LPCWSTR ImageName,
  933. IN PFAX_ROUTING_INSTALLATION_CALLBACKW CallBack,
  934. IN LPVOID Context
  935. );
  936. #define PFAXREGISTERROUTINGEXTENSION PFAXREGISTERROUTINGEXTENSIONW
  937. ;begin_internal
  938. WINFAXAPI
  939. BOOL
  940. WINAPI
  941. FaxGetInstallType(
  942. IN HANDLE FaxHandle,
  943. OUT LPDWORD InstallType,
  944. OUT LPDWORD InstalledPlatforms,
  945. OUT LPDWORD ProductType
  946. );
  947. typedef BOOL
  948. (WINAPI *PFAXGETINSTALLTYPE)(
  949. IN HANDLE FaxHandle,
  950. OUT LPDWORD InstallType,
  951. OUT LPDWORD InstalledPlatforms,
  952. OUT LPDWORD ProductType
  953. );
  954. ;end_internal
  955. ;begin_both
  956. #ifdef __cplusplus
  957. }
  958. #endif
  959. #endif
  960. ;end_both