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

  1.  
  2. /*++
  3.  
  4. Copyright (c) 1996-1998 Microsoft Corporation
  5.  
  6. Module Name:
  7.  
  8.     winfax.h
  9.  
  10. Abstract:
  11.  
  12.     This module contains the WIN32 FAX APIs.
  13.  
  14. --*/
  15.  
  16.  
  17. #ifndef _FAXAPI_
  18. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  19. #define _FAXAPI_
  20.  
  21. #ifndef MIDL_PASS
  22. #include <tapi.h>
  23. #endif
  24.  
  25. #if !defined(_WINFAX_)
  26. #define WINFAXAPI DECLSPEC_IMPORT
  27. #else
  28. #define WINFAXAPI
  29. #endif
  30.  
  31.  
  32. #ifdef __cplusplus
  33. extern "C" {
  34. #endif
  35.  
  36.  
  37. #define FAXLOG_LEVEL_NONE           0
  38. #define FAXLOG_LEVEL_MIN            1
  39. #define FAXLOG_LEVEL_MED            2
  40. #define FAXLOG_LEVEL_MAX            3
  41.  
  42. #define FAXLOG_CATEGORY_INIT        1
  43. #define FAXLOG_CATEGORY_OUTBOUND    2
  44. #define FAXLOG_CATEGORY_INBOUND     3
  45. #define FAXLOG_CATEGORY_UNKNOWN     4
  46.  
  47.  
  48. typedef struct _FAX_LOG_CATEGORYA {
  49.     LPCSTR              Name;                       // logging category name
  50.     DWORD               Category;                   // logging category number
  51.     DWORD               Level;                      // logging level for the category
  52. } FAX_LOG_CATEGORYA, *PFAX_LOG_CATEGORYA;
  53. typedef struct _FAX_LOG_CATEGORYW {
  54.     LPCWSTR             Name;                       // logging category name
  55.     DWORD               Category;                   // logging category number
  56.     DWORD               Level;                      // logging level for the category
  57. } FAX_LOG_CATEGORYW, *PFAX_LOG_CATEGORYW;
  58. #ifdef UNICODE
  59. typedef FAX_LOG_CATEGORYW FAX_LOG_CATEGORY;
  60. typedef PFAX_LOG_CATEGORYW PFAX_LOG_CATEGORY;
  61. #else
  62. typedef FAX_LOG_CATEGORYA FAX_LOG_CATEGORY;
  63. typedef PFAX_LOG_CATEGORYA PFAX_LOG_CATEGORY;
  64. #endif // UNICODE
  65.  
  66. typedef struct _FAX_TIME {
  67.     WORD    Hour;
  68.     WORD    Minute;
  69. } FAX_TIME, *PFAX_TIME;
  70.  
  71. typedef struct _FAX_CONFIGURATIONA {
  72.     DWORD               SizeOfStruct;                   // size of this structure
  73.     DWORD               Retries;                        // number of retries for fax send
  74.     DWORD               RetryDelay;                     // number of minutes between retries
  75.     DWORD               DirtyDays;                      // number of days to keep an unsent job in the queue
  76.     BOOL                Branding;                       // fsp should brand outgoing faxes
  77.     BOOL                UseDeviceTsid;                  // server uses device tsid only
  78.     BOOL                ServerCp;                       // clients must use cover pages on the server
  79.     BOOL                PauseServerQueue;               // is the server queue paused?
  80.     FAX_TIME            StartCheapTime;                 // start of discount rate period
  81.     FAX_TIME            StopCheapTime;                  // end of discount rate period
  82.     BOOL                ArchiveOutgoingFaxes;           // whether outgoing faxes should be archived
  83.     LPCSTR              ArchiveDirectory;               // archive directory for outgoing faxes
  84.     LPCSTR              InboundProfile;                 // profile used for inbound routing (email)
  85. } FAX_CONFIGURATIONA, *PFAX_CONFIGURATIONA;
  86. typedef struct _FAX_CONFIGURATIONW {
  87.     DWORD               SizeOfStruct;                   // size of this structure
  88.     DWORD               Retries;                        // number of retries for fax send
  89.     DWORD               RetryDelay;                     // number of minutes between retries
  90.     DWORD               DirtyDays;                      // number of days to keep an unsent job in the queue
  91.     BOOL                Branding;                       // fsp should brand outgoing faxes
  92.     BOOL                UseDeviceTsid;                  // server uses device tsid only
  93.     BOOL                ServerCp;                       // clients must use cover pages on the server
  94.     BOOL                PauseServerQueue;               // is the server queue paused?
  95.     FAX_TIME            StartCheapTime;                 // start of discount rate period
  96.     FAX_TIME            StopCheapTime;                  // end of discount rate period
  97.     BOOL                ArchiveOutgoingFaxes;           // whether outgoing faxes should be archived
  98.     LPCWSTR             ArchiveDirectory;               // archive directory for outgoing faxes
  99.     LPCWSTR             InboundProfile;                 // profile used for inbound routing (email)
  100. } FAX_CONFIGURATIONW, *PFAX_CONFIGURATIONW;
  101. #ifdef UNICODE
  102. typedef FAX_CONFIGURATIONW FAX_CONFIGURATION;
  103. typedef PFAX_CONFIGURATIONW PFAX_CONFIGURATION;
  104. #else
  105. typedef FAX_CONFIGURATIONA FAX_CONFIGURATION;
  106. typedef PFAX_CONFIGURATIONA PFAX_CONFIGURATION;
  107. #endif // UNICODE
  108.  
  109.  
  110. //
  111. // FaxSetJob() command codes
  112. //
  113.  
  114. #define JC_UNKNOWN                  0
  115. #define JC_DELETE                   1
  116. #define JC_PAUSE                    2
  117. #define JC_RESUME                   3
  118. #define JC_RESTART                  JC_RESUME
  119.  
  120. //
  121. // job type defines
  122. //
  123.  
  124. #define JT_UNKNOWN                  0
  125. #define JT_SEND                     1
  126. #define JT_RECEIVE                  2
  127. #define JT_ROUTING                  3
  128. #define JT_FAIL_RECEIVE             4
  129.  
  130. //
  131. // job status defines
  132. //
  133.  
  134. #define JS_PENDING                  0x00000000
  135. #define JS_INPROGRESS               0x00000001
  136. #define JS_DELETING                 0x00000002
  137. #define JS_FAILED                   0x00000004
  138. #define JS_PAUSED                   0x00000008
  139. #define JS_NOLINE                   0x00000010
  140. #define JS_RETRYING                 0x00000020
  141. #define JS_RETRIES_EXCEEDED         0x00000040
  142.  
  143. typedef struct _FAX_DEVICE_STATUSA {
  144.     DWORD               SizeOfStruct;               // size of this structure
  145.     LPCSTR              CallerId;                   // caller id string
  146.     LPCSTR              Csid;                       // station identifier
  147.     DWORD               CurrentPage;                // current page
  148.     DWORD               DeviceId;                   // permanent line id
  149.     LPCSTR              DeviceName;                 // device name
  150.     LPCSTR              DocumentName;               // document name
  151.     DWORD               JobType;                    // send or receive?
  152.     LPCSTR              PhoneNumber;                // sending phone number
  153.     LPCSTR              RoutingString;              // routing information
  154.     LPCSTR              SenderName;                 // sender name
  155.     LPCSTR              RecipientName;              // recipient name
  156.     DWORD               Size;                       // size in bytes of the document
  157.     FILETIME            StartTime;                  // starting time of the fax send/receive
  158.     DWORD               Status;                     // current status of the device, see FPS_??? masks
  159.     LPCSTR              StatusString;               // status string if the Status field is zero.  this may be NULL.
  160.     FILETIME            SubmittedTime;              // time the document was submitted
  161.     DWORD               TotalPages;                 // total number of pages in this job
  162.     LPCSTR              Tsid;                       // transmitting station identifier
  163.     LPCSTR              UserName;                   // user that submitted the active job
  164. } FAX_DEVICE_STATUSA, *PFAX_DEVICE_STATUSA;
  165. typedef struct _FAX_DEVICE_STATUSW {
  166.     DWORD               SizeOfStruct;               // size of this structure
  167.     LPCWSTR             CallerId;                   // caller id string
  168.     LPCWSTR             Csid;                       // station identifier
  169.     DWORD               CurrentPage;                // current page
  170.     DWORD               DeviceId;                   // permanent line id
  171.     LPCWSTR             DeviceName;                 // device name
  172.     LPCWSTR             DocumentName;               // document name
  173.     DWORD               JobType;                    // send or receive?
  174.     LPCWSTR             PhoneNumber;                // sending phone number
  175.     LPCWSTR             RoutingString;              // routing information
  176.     LPCWSTR             SenderName;                 // sender name
  177.     LPCWSTR             RecipientName;              // recipient name
  178.     DWORD               Size;                       // size in bytes of the document
  179.     FILETIME            StartTime;                  // starting time of the fax send/receive
  180.     DWORD               Status;                     // current status of the device, see FPS_??? masks
  181.     LPCWSTR             StatusString;               // status string if the Status field is zero.  this may be NULL.
  182.     FILETIME            SubmittedTime;              // time the document was submitted
  183.     DWORD               TotalPages;                 // total number of pages in this job
  184.     LPCWSTR             Tsid;                       // transmitting station identifier
  185.     LPCWSTR             UserName;                   // user that submitted the active job
  186. } FAX_DEVICE_STATUSW, *PFAX_DEVICE_STATUSW;
  187. #ifdef UNICODE
  188. typedef FAX_DEVICE_STATUSW FAX_DEVICE_STATUS;
  189. typedef PFAX_DEVICE_STATUSW PFAX_DEVICE_STATUS;
  190. #else
  191. typedef FAX_DEVICE_STATUSA FAX_DEVICE_STATUS;
  192. typedef PFAX_DEVICE_STATUSA PFAX_DEVICE_STATUS;
  193. #endif // UNICODE
  194.  
  195. typedef struct _FAX_JOB_ENTRYA {
  196.     DWORD               SizeOfStruct;               // size of this structure
  197.     DWORD               JobId;                      // fax job id
  198.     LPCSTR              UserName;                   // user who submitted the job
  199.     DWORD               JobType;                    // job type, see JT defines
  200.     DWORD               QueueStatus;                // job queue status, see JS defines
  201.     DWORD               Status;                     // current status of the device, see FPS_??? masks
  202.     DWORD               Size;                       // size in bytes of the document
  203.     DWORD               PageCount;                  // total page count
  204.     LPCSTR              RecipientNumber;            // recipient fax number
  205.     LPCSTR              RecipientName;              // recipient name
  206.     LPCSTR              Tsid;                       // transmitter's id
  207.     LPCSTR              SenderName;                 // sender name
  208.     LPCSTR              SenderCompany;              // sender company
  209.     LPCSTR              SenderDept;                 // sender department
  210.     LPCSTR              BillingCode;                // billing code
  211.     DWORD               ScheduleAction;             // when to schedule the fax, see JSA defines
  212.     SYSTEMTIME          ScheduleTime;               // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
  213.     DWORD               DeliveryReportType;         // delivery report type, see DRT defines
  214.     LPCSTR              DeliveryReportAddress;      // email address for delivery report (ndr or dr)
  215.     LPCSTR              DocumentName;               // document name
  216. } FAX_JOB_ENTRYA, *PFAX_JOB_ENTRYA;
  217. typedef struct _FAX_JOB_ENTRYW {
  218.     DWORD               SizeOfStruct;               // size of this structure
  219.     DWORD               JobId;                      // fax job id
  220.     LPCWSTR             UserName;                   // user who submitted the job
  221.     DWORD               JobType;                    // job type, see JT defines
  222.     DWORD               QueueStatus;                // job queue status, see JS defines
  223.     DWORD               Status;                     // current status of the device, see FPS_??? masks
  224.     DWORD               Size;                       // size in bytes of the document
  225.     DWORD               PageCount;                  // total page count
  226.     LPCWSTR             RecipientNumber;            // recipient fax number
  227.     LPCWSTR             RecipientName;              // recipient name
  228.     LPCWSTR             Tsid;                       // transmitter's id
  229.     LPCWSTR             SenderName;                 // sender name
  230.     LPCWSTR             SenderCompany;              // sender company
  231.     LPCWSTR             SenderDept;                 // sender department
  232.     LPCWSTR             BillingCode;                // billing code
  233.     DWORD               ScheduleAction;             // when to schedule the fax, see JSA defines
  234.     SYSTEMTIME          ScheduleTime;               // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
  235.     DWORD               DeliveryReportType;         // delivery report type, see DRT defines
  236.     LPCWSTR             DeliveryReportAddress;      // email address for delivery report (ndr or dr)
  237.     LPCWSTR             DocumentName;               // document name
  238. } FAX_JOB_ENTRYW, *PFAX_JOB_ENTRYW;
  239. #ifdef UNICODE
  240. typedef FAX_JOB_ENTRYW FAX_JOB_ENTRY;
  241. typedef PFAX_JOB_ENTRYW PFAX_JOB_ENTRY;
  242. #else
  243. typedef FAX_JOB_ENTRYA FAX_JOB_ENTRY;
  244. typedef PFAX_JOB_ENTRYA PFAX_JOB_ENTRY;
  245. #endif // UNICODE
  246.  
  247. //
  248. // fax port state masks
  249. //
  250. // if you change these defines the be sure to
  251. // change the resources in the fax service.
  252. //
  253.  
  254. #define FPS_DIALING              0x20000001
  255. #define FPS_SENDING              0x20000002
  256. #define FPS_RECEIVING            0x20000004
  257. #define FPS_COMPLETED            0x20000008
  258. #define FPS_HANDLED              0x20000010
  259. #define FPS_UNAVAILABLE          0x20000020
  260. #define FPS_BUSY                 0x20000040
  261. #define FPS_NO_ANSWER            0x20000080
  262. #define FPS_BAD_ADDRESS          0x20000100
  263. #define FPS_NO_DIAL_TONE         0x20000200
  264. #define FPS_DISCONNECTED         0x20000400
  265. #define FPS_FATAL_ERROR          0x20000800
  266. #define FPS_NOT_FAX_CALL         0x20001000
  267. #define FPS_CALL_DELAYED         0x20002000
  268. #define FPS_CALL_BLACKLISTED     0x20004000
  269. #define FPS_INITIALIZING         0x20008000
  270. #define FPS_OFFLINE              0x20010000
  271. #define FPS_RINGING              0x20020000
  272.  
  273. #define FPS_AVAILABLE            0x20100000
  274. #define FPS_ABORTING             0x20200000
  275. #define FPS_ROUTING              0x20400000
  276. #define FPS_ANSWERED             0x20800000
  277.  
  278. //
  279. // fax port capability mask
  280. //
  281.  
  282. #define FPF_RECEIVE       0x00000001
  283. #define FPF_SEND          0x00000002
  284. #define FPF_VIRTUAL       0x00000004
  285.  
  286. typedef struct _FAX_PORT_INFOA {
  287.     DWORD               SizeOfStruct;               // size of this structure
  288.     DWORD               DeviceId;                   //
  289.     DWORD               State;                      //
  290.     DWORD               Flags;                      //
  291.     DWORD               Rings;                      //
  292.     DWORD               Priority;                   //
  293.     LPCSTR              DeviceName;                 //
  294.     LPCSTR              Tsid;                       //
  295.     LPCSTR              Csid;                       //
  296. } FAX_PORT_INFOA, *PFAX_PORT_INFOA;
  297. typedef struct _FAX_PORT_INFOW {
  298.     DWORD               SizeOfStruct;               // size of this structure
  299.     DWORD               DeviceId;                   //
  300.     DWORD               State;                      //
  301.     DWORD               Flags;                      //
  302.     DWORD               Rings;                      //
  303.     DWORD               Priority;                   //
  304.     LPCWSTR             DeviceName;                 //
  305.     LPCWSTR             Tsid;                       //
  306.     LPCWSTR             Csid;                       //
  307. } FAX_PORT_INFOW, *PFAX_PORT_INFOW;
  308. #ifdef UNICODE
  309. typedef FAX_PORT_INFOW FAX_PORT_INFO;
  310. typedef PFAX_PORT_INFOW PFAX_PORT_INFO;
  311. #else
  312. typedef FAX_PORT_INFOA FAX_PORT_INFO;
  313. typedef PFAX_PORT_INFOA PFAX_PORT_INFO;
  314. #endif // UNICODE
  315.  
  316.  
  317. typedef struct _FAX_ROUTING_METHODA {
  318.     DWORD               SizeOfStruct;               // size of this structure
  319.     DWORD               DeviceId;                   // device identifier
  320.     BOOL                Enabled;                    // is this method enabled for this device?
  321.     LPCSTR              DeviceName;                 // device name
  322.     LPCSTR              Guid;                       // guid that identifies this routing method
  323.     LPCSTR              FriendlyName;               // friendly name for this method
  324.     LPCSTR              FunctionName;               // exported function name that identifies this method
  325.     LPCSTR              ExtensionImageName;         // module (dll) name that implements this method
  326.     LPCSTR              ExtensionFriendlyName;      // displayable string that identifies the extension
  327. } FAX_ROUTING_METHODA, *PFAX_ROUTING_METHODA;
  328. typedef struct _FAX_ROUTING_METHODW {
  329.     DWORD               SizeOfStruct;               // size of this structure
  330.     DWORD               DeviceId;                   // device identifier
  331.     BOOL                Enabled;                    // is this method enabled for this device?
  332.     LPCWSTR             DeviceName;                 // device name
  333.     LPCWSTR             Guid;                       // guid that identifies this routing method
  334.     LPCWSTR             FriendlyName;               // friendly name for this method
  335.     LPCWSTR             FunctionName;               // exported function name that identifies this method
  336.     LPCWSTR             ExtensionImageName;         // module (dll) name that implements this method
  337.     LPCWSTR             ExtensionFriendlyName;      // displayable string that identifies the extension
  338. } FAX_ROUTING_METHODW, *PFAX_ROUTING_METHODW;
  339. #ifdef UNICODE
  340. typedef FAX_ROUTING_METHODW FAX_ROUTING_METHOD;
  341. typedef PFAX_ROUTING_METHODW PFAX_ROUTING_METHOD;
  342. #else
  343. typedef FAX_ROUTING_METHODA FAX_ROUTING_METHOD;
  344. typedef PFAX_ROUTING_METHODA PFAX_ROUTING_METHOD;
  345. #endif // UNICODE
  346.  
  347.  
  348. typedef struct _FAX_GLOBAL_ROUTING_INFOA {
  349.     DWORD               SizeOfStruct;               // size of this structure
  350.     DWORD               Priority;                   // priority of this device
  351.     LPCSTR              Guid;                       // guid that identifies this routing method
  352.     LPCSTR              FriendlyName;               // friendly name for this method
  353.     LPCSTR              FunctionName;               // exported function name that identifies this method
  354.     LPCSTR              ExtensionImageName;         // module (dll) name that implements this method
  355.     LPCSTR              ExtensionFriendlyName;      // displayable string that identifies the extension
  356. } FAX_GLOBAL_ROUTING_INFOA, *PFAX_GLOBAL_ROUTING_INFOA;
  357. typedef struct _FAX_GLOBAL_ROUTING_INFOW {
  358.     DWORD               SizeOfStruct;               // size of this structure
  359.     DWORD               Priority;                   // priority of this device
  360.     LPCWSTR             Guid;                       // guid that identifies this routing method
  361.     LPCWSTR             FriendlyName;               // friendly name for this method
  362.     LPCWSTR             FunctionName;               // exported function name that identifies this method
  363.     LPCWSTR             ExtensionImageName;         // module (dll) name that implements this method
  364.     LPCWSTR             ExtensionFriendlyName;      // displayable string that identifies the extension
  365. } FAX_GLOBAL_ROUTING_INFOW, *PFAX_GLOBAL_ROUTING_INFOW;
  366. #ifdef UNICODE
  367. typedef FAX_GLOBAL_ROUTING_INFOW FAX_GLOBAL_ROUTING_INFO;
  368. typedef PFAX_GLOBAL_ROUTING_INFOW PFAX_GLOBAL_ROUTING_INFO;
  369. #else
  370. typedef FAX_GLOBAL_ROUTING_INFOA FAX_GLOBAL_ROUTING_INFO;
  371. typedef PFAX_GLOBAL_ROUTING_INFOA PFAX_GLOBAL_ROUTING_INFO;
  372. #endif // UNICODE
  373.  
  374.  
  375. typedef struct _FAX_COVERPAGE_INFOA {
  376.     DWORD               SizeOfStruct;               // Size of this structure
  377.     //
  378.     // general
  379.     //
  380.     LPCSTR              CoverPageName;              // coverpage document name
  381.     BOOL                UseServerCoverPage;         // coverpage exists on the fax server
  382.     //
  383.     // Recipient information
  384.     //
  385.     LPCSTR              RecName;                    //
  386.     LPCSTR              RecFaxNumber;               //
  387.     LPCSTR              RecCompany;                 //
  388.     LPCSTR              RecStreetAddress;           //
  389.     LPCSTR              RecCity;                    //
  390.     LPCSTR              RecState;                   //
  391.     LPCSTR              RecZip;                     //
  392.     LPCSTR              RecCountry;                 //
  393.     LPCSTR              RecTitle;                   //
  394.     LPCSTR              RecDepartment;              //
  395.     LPCSTR              RecOfficeLocation;          //
  396.     LPCSTR              RecHomePhone;               //
  397.     LPCSTR              RecOfficePhone;             //
  398.     //
  399.     // Sender information
  400.     //
  401.     LPCSTR              SdrName;                    //
  402.     LPCSTR              SdrFaxNumber;               //
  403.     LPCSTR              SdrCompany;                 //
  404.     LPCSTR              SdrAddress;                 //
  405.     LPCSTR              SdrTitle;                   //
  406.     LPCSTR              SdrDepartment;              //
  407.     LPCSTR              SdrOfficeLocation;          //
  408.     LPCSTR              SdrHomePhone;               //
  409.     LPCSTR              SdrOfficePhone;             //
  410.     //
  411.     // Misc information
  412.     //
  413.     LPCSTR              Note;                       //
  414.     LPCSTR              Subject;                    //
  415.     SYSTEMTIME          TimeSent;                   // Time the fax was sent
  416.     DWORD               PageCount;                  // Number of pages
  417. } FAX_COVERPAGE_INFOA, *PFAX_COVERPAGE_INFOA;
  418. typedef struct _FAX_COVERPAGE_INFOW {
  419.     DWORD               SizeOfStruct;               // Size of this structure
  420.     //
  421.     // general
  422.     //
  423.     LPCWSTR             CoverPageName;              // coverpage document name
  424.     BOOL                UseServerCoverPage;         // coverpage exists on the fax server
  425.     //
  426.     // Recipient information
  427.     //
  428.     LPCWSTR             RecName;                    //
  429.     LPCWSTR             RecFaxNumber;               //
  430.     LPCWSTR             RecCompany;                 //
  431.     LPCWSTR             RecStreetAddress;           //
  432.     LPCWSTR             RecCity;                    //
  433.     LPCWSTR             RecState;                   //
  434.     LPCWSTR             RecZip;                     //
  435.     LPCWSTR             RecCountry;                 //
  436.     LPCWSTR             RecTitle;                   //
  437.     LPCWSTR             RecDepartment;              //
  438.     LPCWSTR             RecOfficeLocation;          //
  439.     LPCWSTR             RecHomePhone;               //
  440.     LPCWSTR             RecOfficePhone;             //
  441.     //
  442.     // Sender information
  443.     //
  444.     LPCWSTR             SdrName;                    //
  445.     LPCWSTR             SdrFaxNumber;               //
  446.     LPCWSTR             SdrCompany;                 //
  447.     LPCWSTR             SdrAddress;                 //
  448.     LPCWSTR             SdrTitle;                   //
  449.     LPCWSTR             SdrDepartment;              //
  450.     LPCWSTR             SdrOfficeLocation;          //
  451.     LPCWSTR             SdrHomePhone;               //
  452.     LPCWSTR             SdrOfficePhone;             //
  453.     //
  454.     // Misc information
  455.     //
  456.     LPCWSTR             Note;                       //
  457.     LPCWSTR             Subject;                    //
  458.     SYSTEMTIME          TimeSent;                   // Time the fax was sent
  459.     DWORD               PageCount;                  // Number of pages
  460. } FAX_COVERPAGE_INFOW, *PFAX_COVERPAGE_INFOW;
  461. #ifdef UNICODE
  462. typedef FAX_COVERPAGE_INFOW FAX_COVERPAGE_INFO;
  463. typedef PFAX_COVERPAGE_INFOW PFAX_COVERPAGE_INFO;
  464. #else
  465. typedef FAX_COVERPAGE_INFOA FAX_COVERPAGE_INFO;
  466. typedef PFAX_COVERPAGE_INFOA PFAX_COVERPAGE_INFO;
  467. #endif // UNICODE
  468.  
  469. #define JSA_NOW                 0
  470. #define JSA_SPECIFIC_TIME       1
  471. #define JSA_DISCOUNT_PERIOD     2
  472.  
  473. #define DRT_NONE                0
  474. #define DRT_EMAIL               1
  475. #define DRT_INBOX               2
  476.  
  477.  
  478. typedef struct _FAX_JOB_PARAMA {
  479.     DWORD               SizeOfStruct;               // size of this structure
  480.     LPCSTR              RecipientNumber;            // recipient fax number
  481.     LPCSTR              RecipientName;              // recipient name
  482.     LPCSTR              Tsid;                       // transmitter's id
  483.     LPCSTR              SenderName;                 // sender name
  484.     LPCSTR              SenderCompany;              // sender company
  485.     LPCSTR              SenderDept;                 // sender department
  486.     LPCSTR              BillingCode;                // billing code    
  487.     DWORD               ScheduleAction;             // when to schedule the fax, see JSA defines
  488.     SYSTEMTIME          ScheduleTime;               // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
  489.     DWORD               DeliveryReportType;         // delivery report type, see DRT defines
  490.     LPCSTR              DeliveryReportAddress;      // email address for delivery report (ndr or dr)
  491.     LPCSTR              DocumentName;               // document name (optional)
  492.     HCALL               CallHandle;                 // optional call handle
  493.     DWORD_PTR           Reserved[3];                // reserved for ms use only
  494. } FAX_JOB_PARAMA, *PFAX_JOB_PARAMA;
  495. typedef struct _FAX_JOB_PARAMW {
  496.     DWORD               SizeOfStruct;               // size of this structure
  497.     LPCWSTR             RecipientNumber;            // recipient fax number
  498.     LPCWSTR             RecipientName;              // recipient name
  499.     LPCWSTR             Tsid;                       // transmitter's id
  500.     LPCWSTR             SenderName;                 // sender name
  501.     LPCWSTR             SenderCompany;              // sender company
  502.     LPCWSTR             SenderDept;                 // sender department
  503.     LPCWSTR             BillingCode;                // billing code    
  504.     DWORD               ScheduleAction;             // when to schedule the fax, see JSA defines
  505.     SYSTEMTIME          ScheduleTime;               // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
  506.     DWORD               DeliveryReportType;         // delivery report type, see DRT defines
  507.     LPCWSTR             DeliveryReportAddress;      // email address for delivery report (ndr or dr)
  508.     LPCWSTR             DocumentName;               // document name (optional)
  509.     HCALL               CallHandle;                 // optional call handle
  510.     DWORD_PTR           Reserved[3];                // reserved for ms use only
  511. } FAX_JOB_PARAMW, *PFAX_JOB_PARAMW;
  512. #ifdef UNICODE
  513. typedef FAX_JOB_PARAMW FAX_JOB_PARAM;
  514. typedef PFAX_JOB_PARAMW PFAX_JOB_PARAM;
  515. #else
  516. typedef FAX_JOB_PARAMA FAX_JOB_PARAM;
  517. typedef PFAX_JOB_PARAMA PFAX_JOB_PARAM;
  518. #endif // UNICODE
  519.  
  520.  
  521.  
  522. //
  523. // Event Ids
  524. //
  525. // FEI_NEVENTS is the number of events
  526. //
  527.  
  528. #define FEI_DIALING                 0x00000001
  529. #define FEI_SENDING                 0x00000002
  530. #define FEI_RECEIVING               0x00000003
  531. #define FEI_COMPLETED               0x00000004
  532. #define FEI_BUSY                    0x00000005
  533. #define FEI_NO_ANSWER               0x00000006
  534. #define FEI_BAD_ADDRESS             0x00000007
  535. #define FEI_NO_DIAL_TONE            0x00000008
  536. #define FEI_DISCONNECTED            0x00000009
  537. #define FEI_FATAL_ERROR             0x0000000a
  538. #define FEI_NOT_FAX_CALL            0x0000000b
  539. #define FEI_CALL_DELAYED            0x0000000c
  540. #define FEI_CALL_BLACKLISTED        0x0000000d
  541. #define FEI_RINGING                 0x0000000e
  542. #define FEI_ABORTING                0x0000000f
  543. #define FEI_ROUTING                 0x00000010
  544. #define FEI_MODEM_POWERED_ON        0x00000011
  545. #define FEI_MODEM_POWERED_OFF       0x00000012
  546. #define FEI_IDLE                    0x00000013
  547. #define FEI_FAXSVC_ENDED            0x00000014
  548. #define FEI_ANSWERED                0x00000015
  549. #define FEI_JOB_QUEUED              0x00000016
  550. #define FEI_DELETED                 0x00000017
  551. #define FEI_INITIALIZING            0x00000018
  552. #define FEI_LINE_UNAVAILABLE        0x00000019
  553. #define FEI_HANDLED                 0x0000001a
  554. #define FEI_FAXSVC_STARTED          0x0000001b
  555.  
  556.  
  557.  
  558. #define FEI_NEVENTS                 FEI_FAXSVC_STARTED
  559.  
  560. typedef struct _FAX_EVENTA {
  561.     DWORD               SizeOfStruct;               // Size of this structure
  562.     FILETIME            TimeStamp;                  // Timestamp for when the event was generated
  563.     DWORD               DeviceId;                   // Permanent line id
  564.     DWORD               EventId;                    // Current event id
  565.     DWORD               JobId;                      // Fax Job Id, 0xffffffff indicates inactive job
  566. } FAX_EVENTA, *PFAX_EVENTA;
  567. typedef struct _FAX_EVENTW {
  568.     DWORD               SizeOfStruct;               // Size of this structure
  569.     FILETIME            TimeStamp;                  // Timestamp for when the event was generated
  570.     DWORD               DeviceId;                   // Permanent line id
  571.     DWORD               EventId;                    // Current event id
  572.     DWORD               JobId;                      // Fax Job Id, 0xffffffff indicates inactive job
  573. } FAX_EVENTW, *PFAX_EVENTW;
  574. #ifdef UNICODE
  575. typedef FAX_EVENTW FAX_EVENT;
  576. typedef PFAX_EVENTW PFAX_EVENT;
  577. #else
  578. typedef FAX_EVENTA FAX_EVENT;
  579. typedef PFAX_EVENTA PFAX_EVENT;
  580. #endif // UNICODE
  581.  
  582.  
  583. typedef struct _FAX_PRINT_INFOA {
  584.     DWORD               SizeOfStruct;               // Size of this structure
  585.     LPCSTR              DocName;                    // Document name that appears in the spooler
  586.     LPCSTR              RecipientName;              // Recipient name
  587.     LPCSTR              RecipientNumber;            // Recipient fax number (non-canonical number)
  588.     LPCSTR              SenderName;                 // Sender name
  589.     LPCSTR              SenderCompany;              // Sender company (optional)
  590.     LPCSTR              SenderDept;                 // Sender department
  591.     LPCSTR              SenderBillingCode;          // Billing code
  592.     LPCSTR              DrProfileName;              // Profile name for delivery report    <--| mutually exclusive
  593.     LPCSTR              DrEmailAddress;             // E.Mail address for delivery report  <--|
  594.     LPCSTR              OutputFileName;             // for print to file, resulting file name
  595. } FAX_PRINT_INFOA, *PFAX_PRINT_INFOA;
  596. typedef struct _FAX_PRINT_INFOW {
  597.     DWORD               SizeOfStruct;               // Size of this structure
  598.     LPCWSTR             DocName;                    // Document name that appears in the spooler
  599.     LPCWSTR             RecipientName;              // Recipient name
  600.     LPCWSTR             RecipientNumber;            // Recipient fax number (non-canonical number)
  601.     LPCWSTR             SenderName;                 // Sender name
  602.     LPCWSTR             SenderCompany;              // Sender company (optional)
  603.     LPCWSTR             SenderDept;                 // Sender department
  604.     LPCWSTR             SenderBillingCode;          // Billing code
  605.     LPCWSTR             DrProfileName;              // Profile name for delivery report    <--| mutually exclusive
  606.     LPCWSTR             DrEmailAddress;             // E.Mail address for delivery report  <--|
  607.     LPCWSTR             OutputFileName;             // for print to file, resulting file name
  608. } FAX_PRINT_INFOW, *PFAX_PRINT_INFOW;
  609. #ifdef UNICODE
  610. typedef FAX_PRINT_INFOW FAX_PRINT_INFO;
  611. typedef PFAX_PRINT_INFOW PFAX_PRINT_INFO;
  612. #else
  613. typedef FAX_PRINT_INFOA FAX_PRINT_INFO;
  614. typedef PFAX_PRINT_INFOA PFAX_PRINT_INFO;
  615. #endif // UNICODE
  616.  
  617.  
  618. typedef struct _FAX_CONTEXT_INFOA {
  619.     DWORD               SizeOfStruct;                           // Size of this structure
  620.     HDC                 hDC;                                    // Device Context
  621.     CHAR                ServerName[MAX_COMPUTERNAME_LENGTH+1];  // Server name
  622. } FAX_CONTEXT_INFOA, *PFAX_CONTEXT_INFOA;
  623. typedef struct _FAX_CONTEXT_INFOW {
  624.     DWORD               SizeOfStruct;                           // Size of this structure
  625.     HDC                 hDC;                                    // Device Context
  626.     WCHAR               ServerName[MAX_COMPUTERNAME_LENGTH+1];  // Server name
  627. } FAX_CONTEXT_INFOW, *PFAX_CONTEXT_INFOW;
  628. #ifdef UNICODE
  629. typedef FAX_CONTEXT_INFOW FAX_CONTEXT_INFO;
  630. typedef PFAX_CONTEXT_INFOW PFAX_CONTEXT_INFO;
  631. #else
  632. typedef FAX_CONTEXT_INFOA FAX_CONTEXT_INFO;
  633. typedef PFAX_CONTEXT_INFOA PFAX_CONTEXT_INFO;
  634. #endif // UNICODE
  635.  
  636.  
  637. //
  638. // Fax Specific Access Rights
  639. //
  640.  
  641. #define FAX_JOB_SUBMIT          (0x0001)
  642. #define FAX_JOB_QUERY           (0x0002)
  643. #define FAX_CONFIG_QUERY        (0x0004)
  644. #define FAX_CONFIG_SET          (0x0008)
  645. #define FAX_PORT_QUERY          (0x0010)
  646. #define FAX_PORT_SET            (0x0020)
  647. #define FAX_JOB_MANAGE          (0x0040)
  648.  
  649. #define FAX_READ                (STANDARD_RIGHTS_READ        |\
  650.                                  FAX_JOB_QUERY               |\
  651.                                  FAX_CONFIG_QUERY            |\
  652.                                  FAX_PORT_QUERY)
  653.  
  654. #define FAX_WRITE               (STANDARD_RIGHTS_WRITE       |\
  655.                                  FAX_JOB_SUBMIT )
  656.  
  657. #define FAX_ALL_ACCESS          (STANDARD_RIGHTS_ALL         |\
  658.                                  FAX_JOB_SUBMIT              |\
  659.                                  FAX_JOB_QUERY               |\
  660.                                  FAX_CONFIG_QUERY            |\
  661.                                  FAX_CONFIG_SET              |\
  662.                                  FAX_PORT_QUERY              |\
  663.                                  FAX_PORT_SET                |\
  664.                                  FAX_JOB_MANAGE)
  665.  
  666.  
  667. //
  668. // prototypes
  669. //
  670. WINFAXAPI
  671. BOOL
  672. WINAPI
  673. FaxConnectFaxServerA(
  674.     IN  LPCSTR MachineName OPTIONAL,
  675.     OUT LPHANDLE FaxHandle
  676.     );
  677. //
  678. // prototypes
  679. //
  680. WINFAXAPI
  681. BOOL
  682. WINAPI
  683. FaxConnectFaxServerW(
  684.     IN  LPCWSTR MachineName OPTIONAL,
  685.     OUT LPHANDLE FaxHandle
  686.     );
  687. #ifdef UNICODE
  688. #define FaxConnectFaxServer  FaxConnectFaxServerW
  689. #else
  690. #define FaxConnectFaxServer  FaxConnectFaxServerA
  691. #endif // !UNICODE
  692.  
  693. typedef BOOL
  694. (WINAPI *PFAXCONNECTFAXSERVERA)(
  695.     IN  LPCSTR MachineName OPTIONAL,
  696.     OUT LPHANDLE FaxHandle
  697.     );
  698. typedef BOOL
  699. (WINAPI *PFAXCONNECTFAXSERVERW)(
  700.     IN  LPCWSTR MachineName OPTIONAL,
  701.     OUT LPHANDLE FaxHandle
  702.     );
  703. #ifdef UNICODE
  704. #define PFAXCONNECTFAXSERVER  PFAXCONNECTFAXSERVERW
  705. #else
  706. #define PFAXCONNECTFAXSERVER  PFAXCONNECTFAXSERVERA
  707. #endif // !UNICODE
  708.  
  709. WINFAXAPI
  710. BOOL
  711. WINAPI
  712. FaxClose(
  713.     IN HANDLE FaxHandle
  714.     );
  715.  
  716. typedef BOOL
  717. (WINAPI *PFAXCLOSE)(
  718.     IN HANDLE FaxHandle
  719.     );
  720.  
  721.  
  722. WINFAXAPI
  723. BOOL
  724. WINAPI
  725. FaxAccessCheck(
  726.     IN HANDLE FaxHandle,
  727.     IN DWORD  AccessMask
  728.     );
  729.  
  730. typedef BOOL
  731. (WINAPI *PFAXACCESSCHECK)(
  732.     IN HANDLE FaxHandle,
  733.     IN DWORD  AccessMask
  734.     );
  735.  
  736.  
  737. #define PORT_OPEN_QUERY     0x00000001
  738. #define PORT_OPEN_MODIFY    0x00000002
  739.  
  740. WINFAXAPI
  741. BOOL
  742. WINAPI
  743. FaxOpenPort(
  744.     IN  HANDLE FaxHandle,
  745.     IN  DWORD DeviceId,
  746.     IN  DWORD Flags,
  747.     OUT LPHANDLE FaxPortHandle
  748.     );
  749.  
  750. typedef BOOL
  751. (WINAPI *PFAXOPENPORT)(
  752.     IN  HANDLE FaxHandle,
  753.     IN  DWORD DeviceId,
  754.     IN  DWORD Flags,
  755.     OUT LPHANDLE FaxPortHandle
  756.     );
  757.  
  758.  
  759.  
  760. WINFAXAPI
  761. BOOL
  762. WINAPI
  763. FaxCompleteJobParamsA(
  764.     IN OUT PFAX_JOB_PARAMA *JobParams,
  765.     IN OUT PFAX_COVERPAGE_INFOA *CoverpageInfo
  766.     );
  767. WINFAXAPI
  768. BOOL
  769. WINAPI
  770. FaxCompleteJobParamsW(
  771.     IN OUT PFAX_JOB_PARAMW *JobParams,
  772.     IN OUT PFAX_COVERPAGE_INFOW *CoverpageInfo
  773.     );
  774. #ifdef UNICODE
  775. #define FaxCompleteJobParams  FaxCompleteJobParamsW
  776. #else
  777. #define FaxCompleteJobParams  FaxCompleteJobParamsA
  778. #endif // !UNICODE
  779.  
  780. typedef BOOL
  781. (WINAPI *PFAXCOMPLETEJOBPARAMSA)(
  782.     IN OUT PFAX_JOB_PARAMA *JobParams,
  783.     IN OUT PFAX_COVERPAGE_INFOA *CoverpageInfo
  784.     );
  785. typedef BOOL
  786. (WINAPI *PFAXCOMPLETEJOBPARAMSW)(
  787.     IN OUT PFAX_JOB_PARAMW *JobParams,
  788.     IN OUT PFAX_COVERPAGE_INFOW *CoverpageInfo
  789.     );
  790. #ifdef UNICODE
  791. #define PFAXCOMPLETEJOBPARAMS  PFAXCOMPLETEJOBPARAMSW
  792. #else
  793. #define PFAXCOMPLETEJOBPARAMS  PFAXCOMPLETEJOBPARAMSA
  794. #endif // !UNICODE
  795.  
  796.  
  797. WINFAXAPI
  798. BOOL
  799. WINAPI
  800. FaxSendDocumentA(
  801.     IN HANDLE FaxHandle,
  802.     IN LPCSTR FileName,
  803.     IN PFAX_JOB_PARAMA JobParams,
  804.     IN const FAX_COVERPAGE_INFOA *CoverpageInfo, OPTIONAL
  805.     OUT LPDWORD FaxJobId OPTIONAL
  806.     );
  807. WINFAXAPI
  808. BOOL
  809. WINAPI
  810. FaxSendDocumentW(
  811.     IN HANDLE FaxHandle,
  812.     IN LPCWSTR FileName,
  813.     IN PFAX_JOB_PARAMW JobParams,
  814.     IN const FAX_COVERPAGE_INFOW *CoverpageInfo, OPTIONAL
  815.     OUT LPDWORD FaxJobId OPTIONAL
  816.     );
  817. #ifdef UNICODE
  818. #define FaxSendDocument  FaxSendDocumentW
  819. #else
  820. #define FaxSendDocument  FaxSendDocumentA
  821. #endif // !UNICODE
  822.  
  823. typedef BOOL
  824. (WINAPI *PFAXSENDDOCUMENTA)(
  825.     IN HANDLE FaxHandle,
  826.     IN LPCSTR FileName,
  827.     IN PFAX_JOB_PARAMA JobParams,
  828.     IN const FAX_COVERPAGE_INFOA *CoverpageInfo, OPTIONAL
  829.     OUT LPDWORD FaxJobId OPTIONAL
  830.     );
  831. typedef BOOL
  832. (WINAPI *PFAXSENDDOCUMENTW)(
  833.     IN HANDLE FaxHandle,
  834.     IN LPCWSTR FileName,
  835.     IN PFAX_JOB_PARAMW JobParams,
  836.     IN const FAX_COVERPAGE_INFOW *CoverpageInfo, OPTIONAL
  837.     OUT LPDWORD FaxJobId OPTIONAL
  838.     );
  839. #ifdef UNICODE
  840. #define PFAXSENDDOCUMENT  PFAXSENDDOCUMENTW
  841. #else
  842. #define PFAXSENDDOCUMENT  PFAXSENDDOCUMENTA
  843. #endif // !UNICODE
  844.  
  845. typedef BOOL
  846. (CALLBACK *PFAX_RECIPIENT_CALLBACKA)(
  847.     IN HANDLE FaxHandle,
  848.     IN DWORD RecipientNumber,
  849.     IN LPVOID Context,
  850.     IN OUT PFAX_JOB_PARAMA JobParams,
  851.     IN OUT PFAX_COVERPAGE_INFOA CoverpageInfo OPTIONAL
  852.     );
  853. typedef BOOL
  854. (CALLBACK *PFAX_RECIPIENT_CALLBACKW)(
  855.     IN HANDLE FaxHandle,
  856.     IN DWORD RecipientNumber,
  857.     IN LPVOID Context,
  858.     IN OUT PFAX_JOB_PARAMW JobParams,
  859.     IN OUT PFAX_COVERPAGE_INFOW CoverpageInfo OPTIONAL
  860.     );
  861. #ifdef UNICODE
  862. #define PFAX_RECIPIENT_CALLBACK  PFAX_RECIPIENT_CALLBACKW
  863. #else
  864. #define PFAX_RECIPIENT_CALLBACK  PFAX_RECIPIENT_CALLBACKA
  865. #endif // !UNICODE
  866.  
  867. WINFAXAPI
  868. BOOL
  869. WINAPI
  870. FaxSendDocumentForBroadcastA(
  871.     IN  HANDLE FaxHandle,
  872.     IN  LPCSTR FileName,
  873.     OUT LPDWORD FaxJobId,
  874.     IN  PFAX_RECIPIENT_CALLBACKA FaxRecipientCallback,
  875.     IN  LPVOID Context
  876.     );
  877. WINFAXAPI
  878. BOOL
  879. WINAPI
  880. FaxSendDocumentForBroadcastW(
  881.     IN  HANDLE FaxHandle,
  882.     IN  LPCWSTR FileName,
  883.     OUT LPDWORD FaxJobId,
  884.     IN  PFAX_RECIPIENT_CALLBACKW FaxRecipientCallback,
  885.     IN  LPVOID Context
  886.     );
  887. #ifdef UNICODE
  888. #define FaxSendDocumentForBroadcast  FaxSendDocumentForBroadcastW
  889. #else
  890. #define FaxSendDocumentForBroadcast  FaxSendDocumentForBroadcastA
  891. #endif // !UNICODE
  892.  
  893. typedef BOOL
  894. (WINAPI *PFAXSENDDOCUMENTFORBROADCASTA)(
  895.     IN  HANDLE FaxHandle,
  896.     IN  LPCSTR FileName,
  897.     OUT LPDWORD FaxJobId,
  898.     IN  PFAX_RECIPIENT_CALLBACKA FaxRecipientCallback,
  899.     IN  LPVOID Context
  900.     );
  901. typedef BOOL
  902. (WINAPI *PFAXSENDDOCUMENTFORBROADCASTW)(
  903.     IN  HANDLE FaxHandle,
  904.     IN  LPCWSTR FileName,
  905.     OUT LPDWORD FaxJobId,
  906.     IN  PFAX_RECIPIENT_CALLBACKW FaxRecipientCallback,
  907.     IN  LPVOID Context
  908.     );
  909. #ifdef UNICODE
  910. #define PFAXSENDDOCUMENTFORBROADCAST  PFAXSENDDOCUMENTFORBROADCASTW
  911. #else
  912. #define PFAXSENDDOCUMENTFORBROADCAST  PFAXSENDDOCUMENTFORBROADCASTA
  913. #endif // !UNICODE
  914.  
  915. WINFAXAPI
  916. BOOL
  917. WINAPI
  918. FaxEnumJobsA(
  919.     IN  HANDLE FaxHandle,
  920.     OUT PFAX_JOB_ENTRYA *JobEntry,
  921.     OUT LPDWORD JobsReturned
  922.     );
  923. WINFAXAPI
  924. BOOL
  925. WINAPI
  926. FaxEnumJobsW(
  927.     IN  HANDLE FaxHandle,
  928.     OUT PFAX_JOB_ENTRYW *JobEntry,
  929.     OUT LPDWORD JobsReturned
  930.     );
  931. #ifdef UNICODE
  932. #define FaxEnumJobs  FaxEnumJobsW
  933. #else
  934. #define FaxEnumJobs  FaxEnumJobsA
  935. #endif // !UNICODE
  936.  
  937. typedef BOOL
  938. (WINAPI *PFAXENUMJOBSA)(
  939.     IN  HANDLE FaxHandle,
  940.     OUT PFAX_JOB_ENTRYA *JobEntry,
  941.     OUT LPDWORD JobsReturned
  942.     );
  943. typedef BOOL
  944. (WINAPI *PFAXENUMJOBSW)(
  945.     IN  HANDLE FaxHandle,
  946.     OUT PFAX_JOB_ENTRYW *JobEntry,
  947.     OUT LPDWORD JobsReturned
  948.     );
  949. #ifdef UNICODE
  950. #define PFAXENUMJOBS  PFAXENUMJOBSW
  951. #else
  952. #define PFAXENUMJOBS  PFAXENUMJOBSA
  953. #endif // !UNICODE
  954.  
  955. WINFAXAPI
  956. BOOL
  957. WINAPI
  958. FaxGetJobA(
  959.    IN  HANDLE FaxHandle,
  960.    IN  DWORD JobId,
  961.    OUT PFAX_JOB_ENTRYA *JobEntry
  962.    );
  963. WINFAXAPI
  964. BOOL
  965. WINAPI
  966. FaxGetJobW(
  967.    IN  HANDLE FaxHandle,
  968.    IN  DWORD JobId,
  969.    OUT PFAX_JOB_ENTRYW *JobEntry
  970.    );
  971. #ifdef UNICODE
  972. #define FaxGetJob  FaxGetJobW
  973. #else
  974. #define FaxGetJob  FaxGetJobA
  975. #endif // !UNICODE
  976.  
  977. typedef BOOL
  978. (WINAPI *PFAXGETJOBA)(
  979.     IN  HANDLE FaxHandle,
  980.     IN  DWORD JobId,
  981.     OUT PFAX_JOB_ENTRYA *JobEntry
  982.     );
  983. typedef BOOL
  984. (WINAPI *PFAXGETJOBW)(
  985.     IN  HANDLE FaxHandle,
  986.     IN  DWORD JobId,
  987.     OUT PFAX_JOB_ENTRYW *JobEntry
  988.     );
  989. #ifdef UNICODE
  990. #define PFAXGETJOB  PFAXGETJOBW
  991. #else
  992. #define PFAXGETJOB  PFAXGETJOBA
  993. #endif // !UNICODE
  994.  
  995. WINFAXAPI
  996. BOOL
  997. WINAPI
  998. FaxSetJobA(
  999.    IN HANDLE FaxHandle,
  1000.    IN DWORD JobId,
  1001.    IN DWORD Command,
  1002.    IN const FAX_JOB_ENTRYA *JobEntry
  1003.    );
  1004. WINFAXAPI
  1005. BOOL
  1006. WINAPI
  1007. FaxSetJobW(
  1008.    IN HANDLE FaxHandle,
  1009.    IN DWORD JobId,
  1010.    IN DWORD Command,
  1011.    IN const FAX_JOB_ENTRYW *JobEntry
  1012.    );
  1013. #ifdef UNICODE
  1014. #define FaxSetJob  FaxSetJobW
  1015. #else
  1016. #define FaxSetJob  FaxSetJobA
  1017. #endif // !UNICODE
  1018.  
  1019. typedef BOOL
  1020. (WINAPI *PFAXSETJOBA)(
  1021.     IN HANDLE FaxHandle,
  1022.     IN DWORD JobId,
  1023.     IN DWORD Command,
  1024.     IN const FAX_JOB_ENTRYA *JobEntry
  1025.     );
  1026. typedef BOOL
  1027. (WINAPI *PFAXSETJOBW)(
  1028.     IN HANDLE FaxHandle,
  1029.     IN DWORD JobId,
  1030.     IN DWORD Command,
  1031.     IN const FAX_JOB_ENTRYW *JobEntry
  1032.     );
  1033. #ifdef UNICODE
  1034. #define PFAXSETJOB  PFAXSETJOBW
  1035. #else
  1036. #define PFAXSETJOB  PFAXSETJOBA
  1037. #endif // !UNICODE
  1038.  
  1039. WINFAXAPI
  1040. BOOL
  1041. WINAPI
  1042. FaxGetPageData(
  1043.    IN HANDLE FaxHandle,
  1044.    IN DWORD JobId,
  1045.    OUT LPBYTE *Buffer,
  1046.    OUT LPDWORD BufferSize,
  1047.    OUT LPDWORD ImageWidth,
  1048.    OUT LPDWORD ImageHeight
  1049.    );
  1050.  
  1051. typedef BOOL
  1052. (WINAPI *PFAXGETPAGEDATA)(
  1053.    IN HANDLE FaxHandle,
  1054.    IN DWORD JobId,
  1055.    OUT LPBYTE *Buffer,
  1056.    OUT LPDWORD BufferSize,
  1057.    OUT LPDWORD ImageWidth,
  1058.    OUT LPDWORD ImageHeight
  1059.    );
  1060.  
  1061. WINFAXAPI
  1062. BOOL
  1063. WINAPI
  1064. FaxGetDeviceStatusA(
  1065.     IN  HANDLE FaxPortHandle,
  1066.     OUT PFAX_DEVICE_STATUSA *DeviceStatus
  1067.     );
  1068. WINFAXAPI
  1069. BOOL
  1070. WINAPI
  1071. FaxGetDeviceStatusW(
  1072.     IN  HANDLE FaxPortHandle,
  1073.     OUT PFAX_DEVICE_STATUSW *DeviceStatus
  1074.     );
  1075. #ifdef UNICODE
  1076. #define FaxGetDeviceStatus  FaxGetDeviceStatusW
  1077. #else
  1078. #define FaxGetDeviceStatus  FaxGetDeviceStatusA
  1079. #endif // !UNICODE
  1080.  
  1081. typedef BOOL
  1082. (WINAPI *PFAXGETDEVICESTATUSA)(
  1083.     IN  HANDLE FaxPortHandle,
  1084.     OUT PFAX_DEVICE_STATUSA *DeviceStatus
  1085.     );
  1086. typedef BOOL
  1087. (WINAPI *PFAXGETDEVICESTATUSW)(
  1088.     IN  HANDLE FaxPortHandle,
  1089.     OUT PFAX_DEVICE_STATUSW *DeviceStatus
  1090.     );
  1091. #ifdef UNICODE
  1092. #define PFAXGETDEVICESTATUS  PFAXGETDEVICESTATUSW
  1093. #else
  1094. #define PFAXGETDEVICESTATUS  PFAXGETDEVICESTATUSA
  1095. #endif // !UNICODE
  1096.  
  1097.  
  1098. WINFAXAPI
  1099. BOOL
  1100. WINAPI
  1101. FaxAbort(
  1102.     IN HANDLE FaxHandle,
  1103.     IN DWORD JobId
  1104.     );
  1105.  
  1106. typedef BOOL
  1107. (WINAPI *PFAXABORT)(
  1108.     IN HANDLE FaxHandle,
  1109.     IN DWORD JobId
  1110.     );
  1111.  
  1112. WINFAXAPI
  1113. BOOL
  1114. WINAPI
  1115. FaxGetConfigurationA(
  1116.     IN  HANDLE FaxHandle,
  1117.     OUT PFAX_CONFIGURATIONA *FaxConfig
  1118.     );
  1119. WINFAXAPI
  1120. BOOL
  1121. WINAPI
  1122. FaxGetConfigurationW(
  1123.     IN  HANDLE FaxHandle,
  1124.     OUT PFAX_CONFIGURATIONW *FaxConfig
  1125.     );
  1126. #ifdef UNICODE
  1127. #define FaxGetConfiguration  FaxGetConfigurationW
  1128. #else
  1129. #define FaxGetConfiguration  FaxGetConfigurationA
  1130. #endif // !UNICODE
  1131.  
  1132. typedef BOOL
  1133. (WINAPI *PFAXGETCONFIGURATIONA)(
  1134.     IN  HANDLE FaxHandle,
  1135.     OUT PFAX_CONFIGURATIONA *FaxConfig
  1136.     );
  1137. typedef BOOL
  1138. (WINAPI *PFAXGETCONFIGURATIONW)(
  1139.     IN  HANDLE FaxHandle,
  1140.     OUT PFAX_CONFIGURATIONW *FaxConfig
  1141.     );
  1142. #ifdef UNICODE
  1143. #define PFAXGETCONFIGURATION  PFAXGETCONFIGURATIONW
  1144. #else
  1145. #define PFAXGETCONFIGURATION  PFAXGETCONFIGURATIONA
  1146. #endif // !UNICODE
  1147.  
  1148. WINFAXAPI
  1149. BOOL
  1150. WINAPI
  1151. FaxSetConfigurationA(
  1152.     IN  HANDLE FaxHandle,
  1153.     IN  const FAX_CONFIGURATIONA *FaxConfig
  1154.     );
  1155. WINFAXAPI
  1156. BOOL
  1157. WINAPI
  1158. FaxSetConfigurationW(
  1159.     IN  HANDLE FaxHandle,
  1160.     IN  const FAX_CONFIGURATIONW *FaxConfig
  1161.     );
  1162. #ifdef UNICODE
  1163. #define FaxSetConfiguration  FaxSetConfigurationW
  1164. #else
  1165. #define FaxSetConfiguration  FaxSetConfigurationA
  1166. #endif // !UNICODE
  1167.  
  1168. typedef BOOL
  1169. (WINAPI *PFAXSETCONFIGURATIONA)(
  1170.     IN  HANDLE FaxHandle,
  1171.     IN  const FAX_CONFIGURATIONA *FaxConfig
  1172.     );
  1173. typedef BOOL
  1174. (WINAPI *PFAXSETCONFIGURATIONW)(
  1175.     IN  HANDLE FaxHandle,
  1176.     IN  const FAX_CONFIGURATIONW *FaxConfig
  1177.     );
  1178. #ifdef UNICODE
  1179. #define PFAXSETCONFIGURATION  PFAXSETCONFIGURATIONW
  1180. #else
  1181. #define PFAXSETCONFIGURATION  PFAXSETCONFIGURATIONA
  1182. #endif // !UNICODE
  1183.  
  1184. WINFAXAPI
  1185. BOOL
  1186. WINAPI
  1187. FaxGetLoggingCategoriesA(
  1188.     IN  HANDLE FaxHandle,
  1189.     OUT PFAX_LOG_CATEGORYA *Categories,
  1190.     OUT LPDWORD NumberCategories
  1191.     );
  1192. WINFAXAPI
  1193. BOOL
  1194. WINAPI
  1195. FaxGetLoggingCategoriesW(
  1196.     IN  HANDLE FaxHandle,
  1197.     OUT PFAX_LOG_CATEGORYW *Categories,
  1198.     OUT LPDWORD NumberCategories
  1199.     );
  1200. #ifdef UNICODE
  1201. #define FaxGetLoggingCategories  FaxGetLoggingCategoriesW
  1202. #else
  1203. #define FaxGetLoggingCategories  FaxGetLoggingCategoriesA
  1204. #endif // !UNICODE
  1205.  
  1206. typedef BOOL
  1207. (WINAPI *PFAXGETLOGGINGCATEGORIESA)(
  1208.     IN  HANDLE FaxHandle,
  1209.     OUT PFAX_LOG_CATEGORYA *Categories,
  1210.     OUT LPDWORD NumberCategories
  1211.     );
  1212. typedef BOOL
  1213. (WINAPI *PFAXGETLOGGINGCATEGORIESW)(
  1214.     IN  HANDLE FaxHandle,
  1215.     OUT PFAX_LOG_CATEGORYW *Categories,
  1216.     OUT LPDWORD NumberCategories
  1217.     );
  1218. #ifdef UNICODE
  1219. #define PFAXGETLOGGINGCATEGORIES  PFAXGETLOGGINGCATEGORIESW
  1220. #else
  1221. #define PFAXGETLOGGINGCATEGORIES  PFAXGETLOGGINGCATEGORIESA
  1222. #endif // !UNICODE
  1223.  
  1224. WINFAXAPI
  1225. BOOL
  1226. WINAPI
  1227. FaxSetLoggingCategoriesA(
  1228.     IN  HANDLE FaxHandle,
  1229.     IN  const FAX_LOG_CATEGORYA *Categories,
  1230.     IN  DWORD NumberCategories
  1231.     );
  1232. WINFAXAPI
  1233. BOOL
  1234. WINAPI
  1235. FaxSetLoggingCategoriesW(
  1236.     IN  HANDLE FaxHandle,
  1237.     IN  const FAX_LOG_CATEGORYW *Categories,
  1238.     IN  DWORD NumberCategories
  1239.     );
  1240. #ifdef UNICODE
  1241. #define FaxSetLoggingCategories  FaxSetLoggingCategoriesW
  1242. #else
  1243. #define FaxSetLoggingCategories  FaxSetLoggingCategoriesA
  1244. #endif // !UNICODE
  1245.  
  1246. typedef BOOL
  1247. (WINAPI *PFAXSETLOGGINGCATEGORIESA)(
  1248.     IN  HANDLE FaxHandle,
  1249.     IN  const FAX_LOG_CATEGORYA *Categories,
  1250.     IN  DWORD NumberCategories
  1251.     );
  1252. typedef BOOL
  1253. (WINAPI *PFAXSETLOGGINGCATEGORIESW)(
  1254.     IN  HANDLE FaxHandle,
  1255.     IN  const FAX_LOG_CATEGORYW *Categories,
  1256.     IN  DWORD NumberCategories
  1257.     );
  1258. #ifdef UNICODE
  1259. #define PFAXSETLOGGINGCATEGORIES  PFAXSETLOGGINGCATEGORIESW
  1260. #else
  1261. #define PFAXSETLOGGINGCATEGORIES  PFAXSETLOGGINGCATEGORIESA
  1262. #endif // !UNICODE
  1263.  
  1264. WINFAXAPI
  1265. BOOL
  1266. WINAPI
  1267. FaxEnumPortsA(
  1268.     IN  HANDLE FaxHandle,
  1269.     OUT PFAX_PORT_INFOA *PortInfo,
  1270.     OUT LPDWORD PortsReturned
  1271.     );
  1272. WINFAXAPI
  1273. BOOL
  1274. WINAPI
  1275. FaxEnumPortsW(
  1276.     IN  HANDLE FaxHandle,
  1277.     OUT PFAX_PORT_INFOW *PortInfo,
  1278.     OUT LPDWORD PortsReturned
  1279.     );
  1280. #ifdef UNICODE
  1281. #define FaxEnumPorts  FaxEnumPortsW
  1282. #else
  1283. #define FaxEnumPorts  FaxEnumPortsA
  1284. #endif // !UNICODE
  1285.  
  1286. typedef BOOL
  1287. (WINAPI *PFAXENUMPORTSA)(
  1288.     IN  HANDLE FaxHandle,
  1289.     OUT PFAX_PORT_INFOA *PortInfo,
  1290.     OUT LPDWORD PortsReturned
  1291.     );
  1292. typedef BOOL
  1293. (WINAPI *PFAXENUMPORTSW)(
  1294.     IN  HANDLE FaxHandle,
  1295.     OUT PFAX_PORT_INFOW *PortInfo,
  1296.     OUT LPDWORD PortsReturned
  1297.     );
  1298. #ifdef UNICODE
  1299. #define PFAXENUMPORTS  PFAXENUMPORTSW
  1300. #else
  1301. #define PFAXENUMPORTS  PFAXENUMPORTSA
  1302. #endif // !UNICODE
  1303.  
  1304. WINFAXAPI
  1305. BOOL
  1306. WINAPI
  1307. FaxGetPortA(
  1308.     IN  HANDLE FaxPortHandle,
  1309.     OUT PFAX_PORT_INFOA *PortInfo
  1310.     );
  1311. WINFAXAPI
  1312. BOOL
  1313. WINAPI
  1314. FaxGetPortW(
  1315.     IN  HANDLE FaxPortHandle,
  1316.     OUT PFAX_PORT_INFOW *PortInfo
  1317.     );
  1318. #ifdef UNICODE
  1319. #define FaxGetPort  FaxGetPortW
  1320. #else
  1321. #define FaxGetPort  FaxGetPortA
  1322. #endif // !UNICODE
  1323.  
  1324. typedef BOOL
  1325. (WINAPI *PFAXGETPORTA)(
  1326.     IN  HANDLE FaxPortHandle,
  1327.     OUT PFAX_PORT_INFOA *PortInfo
  1328.     );
  1329. typedef BOOL
  1330. (WINAPI *PFAXGETPORTW)(
  1331.     IN  HANDLE FaxPortHandle,
  1332.     OUT PFAX_PORT_INFOW *PortInfo
  1333.     );
  1334. #ifdef UNICODE
  1335. #define PFAXGETPORT  PFAXGETPORTW
  1336. #else
  1337. #define PFAXGETPORT  PFAXGETPORTA
  1338. #endif // !UNICODE
  1339.  
  1340.  
  1341. WINFAXAPI
  1342. BOOL
  1343. WINAPI
  1344. FaxSetPortA(
  1345.     IN  HANDLE FaxPortHandle,
  1346.     IN  const FAX_PORT_INFOA *PortInfo
  1347.     );
  1348. WINFAXAPI
  1349. BOOL
  1350. WINAPI
  1351. FaxSetPortW(
  1352.     IN  HANDLE FaxPortHandle,
  1353.     IN  const FAX_PORT_INFOW *PortInfo
  1354.     );
  1355. #ifdef UNICODE
  1356. #define FaxSetPort  FaxSetPortW
  1357. #else
  1358. #define FaxSetPort  FaxSetPortA
  1359. #endif // !UNICODE
  1360.  
  1361. typedef BOOL
  1362. (WINAPI *PFAXSETPORTA)(
  1363.     IN  HANDLE FaxPortHandle,
  1364.     IN  const FAX_PORT_INFOA *PortInfo
  1365.     );
  1366. typedef BOOL
  1367. (WINAPI *PFAXSETPORTW)(
  1368.     IN  HANDLE FaxPortHandle,
  1369.     IN  const FAX_PORT_INFOW *PortInfo
  1370.     );
  1371. #ifdef UNICODE
  1372. #define PFAXSETPORT  PFAXSETPORTW
  1373. #else
  1374. #define PFAXSETPORT  PFAXSETPORTA
  1375. #endif // !UNICODE
  1376.  
  1377.  
  1378. WINFAXAPI
  1379. BOOL
  1380. WINAPI
  1381. FaxEnumRoutingMethodsA(
  1382.     IN  HANDLE FaxPortHandle,
  1383.     OUT PFAX_ROUTING_METHODA *RoutingMethod,
  1384.     OUT LPDWORD MethodsReturned
  1385.     );
  1386. WINFAXAPI
  1387. BOOL
  1388. WINAPI
  1389. FaxEnumRoutingMethodsW(
  1390.     IN  HANDLE FaxPortHandle,
  1391.     OUT PFAX_ROUTING_METHODW *RoutingMethod,
  1392.     OUT LPDWORD MethodsReturned
  1393.     );
  1394. #ifdef UNICODE
  1395. #define FaxEnumRoutingMethods  FaxEnumRoutingMethodsW
  1396. #else
  1397. #define FaxEnumRoutingMethods  FaxEnumRoutingMethodsA
  1398. #endif // !UNICODE
  1399.  
  1400. typedef BOOL
  1401. (WINAPI *PFAXENUMROUTINGMETHODSA)(
  1402.     IN  HANDLE FaxPortHandle,
  1403.     OUT PFAX_ROUTING_METHODA *RoutingMethod,
  1404.     OUT LPDWORD MethodsReturned
  1405.     );
  1406. typedef BOOL
  1407. (WINAPI *PFAXENUMROUTINGMETHODSW)(
  1408.     IN  HANDLE FaxPortHandle,
  1409.     OUT PFAX_ROUTING_METHODW *RoutingMethod,
  1410.     OUT LPDWORD MethodsReturned
  1411.     );
  1412. #ifdef UNICODE
  1413. #define PFAXENUMROUTINGMETHODS  PFAXENUMROUTINGMETHODSW
  1414. #else
  1415. #define PFAXENUMROUTINGMETHODS  PFAXENUMROUTINGMETHODSA
  1416. #endif // !UNICODE
  1417.  
  1418. WINFAXAPI
  1419. BOOL
  1420. WINAPI
  1421. FaxEnableRoutingMethodA(
  1422.     IN  HANDLE FaxPortHandle,
  1423.     IN  LPCSTR RoutingGuid,
  1424.     IN  BOOL Enabled
  1425.     );
  1426. WINFAXAPI
  1427. BOOL
  1428. WINAPI
  1429. FaxEnableRoutingMethodW(
  1430.     IN  HANDLE FaxPortHandle,
  1431.     IN  LPCWSTR RoutingGuid,
  1432.     IN  BOOL Enabled
  1433.     );
  1434. #ifdef UNICODE
  1435. #define FaxEnableRoutingMethod  FaxEnableRoutingMethodW
  1436. #else
  1437. #define FaxEnableRoutingMethod  FaxEnableRoutingMethodA
  1438. #endif // !UNICODE
  1439.  
  1440. typedef BOOL
  1441. (WINAPI *PFAXENABLEROUTINGMETHODA)(
  1442.     IN  HANDLE FaxPortHandle,
  1443.     IN  LPCSTR RoutingGuid,
  1444.     IN  BOOL Enabled
  1445.     );
  1446. typedef BOOL
  1447. (WINAPI *PFAXENABLEROUTINGMETHODW)(
  1448.     IN  HANDLE FaxPortHandle,
  1449.     IN  LPCWSTR RoutingGuid,
  1450.     IN  BOOL Enabled
  1451.     );
  1452. #ifdef UNICODE
  1453. #define PFAXENABLEROUTINGMETHOD  PFAXENABLEROUTINGMETHODW
  1454. #else
  1455. #define PFAXENABLEROUTINGMETHOD  PFAXENABLEROUTINGMETHODA
  1456. #endif // !UNICODE
  1457.  
  1458.  
  1459. WINFAXAPI
  1460. BOOL
  1461. WINAPI
  1462. FaxEnumGlobalRoutingInfoA(
  1463.     IN  HANDLE FaxHandle,
  1464.     OUT PFAX_GLOBAL_ROUTING_INFOA *RoutingInfo,
  1465.     OUT LPDWORD MethodsReturned
  1466.     );
  1467. WINFAXAPI
  1468. BOOL
  1469. WINAPI
  1470. FaxEnumGlobalRoutingInfoW(
  1471.     IN  HANDLE FaxHandle,
  1472.     OUT PFAX_GLOBAL_ROUTING_INFOW *RoutingInfo,
  1473.     OUT LPDWORD MethodsReturned
  1474.     );
  1475. #ifdef UNICODE
  1476. #define FaxEnumGlobalRoutingInfo  FaxEnumGlobalRoutingInfoW
  1477. #else
  1478. #define FaxEnumGlobalRoutingInfo  FaxEnumGlobalRoutingInfoA
  1479. #endif // !UNICODE
  1480.  
  1481. typedef BOOL
  1482. (WINAPI *PFAXENUMGLOBALROUTINGINFOA)(
  1483.     IN  HANDLE FaxHandle,
  1484.     OUT PFAX_GLOBAL_ROUTING_INFOA *RoutingInfo,
  1485.     OUT LPDWORD MethodsReturned
  1486.     );
  1487. typedef BOOL
  1488. (WINAPI *PFAXENUMGLOBALROUTINGINFOW)(
  1489.     IN  HANDLE FaxHandle,
  1490.     OUT PFAX_GLOBAL_ROUTING_INFOW *RoutingInfo,
  1491.     OUT LPDWORD MethodsReturned
  1492.     );
  1493. #ifdef UNICODE
  1494. #define PFAXENUMGLOBALROUTINGINFO  PFAXENUMGLOBALROUTINGINFOW
  1495. #else
  1496. #define PFAXENUMGLOBALROUTINGINFO  PFAXENUMGLOBALROUTINGINFOA
  1497. #endif // !UNICODE
  1498.  
  1499. WINFAXAPI
  1500. BOOL
  1501. WINAPI
  1502. FaxSetGlobalRoutingInfoA(
  1503.     IN  HANDLE FaxHandle,
  1504.     IN  const FAX_GLOBAL_ROUTING_INFOA *RoutingInfo
  1505.     );
  1506. WINFAXAPI
  1507. BOOL
  1508. WINAPI
  1509. FaxSetGlobalRoutingInfoW(
  1510.     IN  HANDLE FaxHandle,
  1511.     IN  const FAX_GLOBAL_ROUTING_INFOW *RoutingInfo
  1512.     );
  1513. #ifdef UNICODE
  1514. #define FaxSetGlobalRoutingInfo  FaxSetGlobalRoutingInfoW
  1515. #else
  1516. #define FaxSetGlobalRoutingInfo  FaxSetGlobalRoutingInfoA
  1517. #endif // !UNICODE
  1518.  
  1519. typedef BOOL
  1520. (WINAPI *PFAXSETGLOBALROUTINGINFOA)(
  1521.     IN  HANDLE FaxPortHandle,
  1522.     IN  const FAX_GLOBAL_ROUTING_INFOA *RoutingInfo
  1523.     );
  1524. typedef BOOL
  1525. (WINAPI *PFAXSETGLOBALROUTINGINFOW)(
  1526.     IN  HANDLE FaxPortHandle,
  1527.     IN  const FAX_GLOBAL_ROUTING_INFOW *RoutingInfo
  1528.     );
  1529. #ifdef UNICODE
  1530. #define PFAXSETGLOBALROUTINGINFO  PFAXSETGLOBALROUTINGINFOW
  1531. #else
  1532. #define PFAXSETGLOBALROUTINGINFO  PFAXSETGLOBALROUTINGINFOA
  1533. #endif // !UNICODE
  1534.  
  1535.  
  1536. WINFAXAPI
  1537. BOOL
  1538. WINAPI
  1539. FaxGetRoutingInfoA(
  1540.     IN  HANDLE FaxPortHandle,
  1541.     IN  LPCSTR RoutingGuid,
  1542.     OUT LPBYTE *RoutingInfoBuffer,
  1543.     OUT LPDWORD RoutingInfoBufferSize
  1544.     );
  1545. WINFAXAPI
  1546. BOOL
  1547. WINAPI
  1548. FaxGetRoutingInfoW(
  1549.     IN  HANDLE FaxPortHandle,
  1550.     IN  LPCWSTR RoutingGuid,
  1551.     OUT LPBYTE *RoutingInfoBuffer,
  1552.     OUT LPDWORD RoutingInfoBufferSize
  1553.     );
  1554. #ifdef UNICODE
  1555. #define FaxGetRoutingInfo  FaxGetRoutingInfoW
  1556. #else
  1557. #define FaxGetRoutingInfo  FaxGetRoutingInfoA
  1558. #endif // !UNICODE
  1559.  
  1560. typedef BOOL
  1561. (WINAPI *PFAXGETROUTINGINFOA)(
  1562.     IN  HANDLE FaxPortHandle,
  1563.     IN  LPCSTR RoutingGuid,
  1564.     OUT LPBYTE *RoutingInfoBuffer,
  1565.     OUT LPDWORD RoutingInfoBufferSize
  1566.     );
  1567. typedef BOOL
  1568. (WINAPI *PFAXGETROUTINGINFOW)(
  1569.     IN  HANDLE FaxPortHandle,
  1570.     IN  LPCWSTR RoutingGuid,
  1571.     OUT LPBYTE *RoutingInfoBuffer,
  1572.     OUT LPDWORD RoutingInfoBufferSize
  1573.     );
  1574. #ifdef UNICODE
  1575. #define PFAXGETROUTINGINFO  PFAXGETROUTINGINFOW
  1576. #else
  1577. #define PFAXGETROUTINGINFO  PFAXGETROUTINGINFOA
  1578. #endif // !UNICODE
  1579.  
  1580.  
  1581. WINFAXAPI
  1582. BOOL
  1583. WINAPI
  1584. FaxSetRoutingInfoA(
  1585.     IN  HANDLE FaxPortHandle,
  1586.     IN  LPCSTR RoutingGuid,
  1587.     IN  const BYTE *RoutingInfoBuffer,
  1588.     IN  DWORD RoutingInfoBufferSize
  1589.     );
  1590. WINFAXAPI
  1591. BOOL
  1592. WINAPI
  1593. FaxSetRoutingInfoW(
  1594.     IN  HANDLE FaxPortHandle,
  1595.     IN  LPCWSTR RoutingGuid,
  1596.     IN  const BYTE *RoutingInfoBuffer,
  1597.     IN  DWORD RoutingInfoBufferSize
  1598.     );
  1599. #ifdef UNICODE
  1600. #define FaxSetRoutingInfo  FaxSetRoutingInfoW
  1601. #else
  1602. #define FaxSetRoutingInfo  FaxSetRoutingInfoA
  1603. #endif // !UNICODE
  1604.  
  1605. typedef BOOL
  1606. (WINAPI *PFAXSETROUTINGINFOA)(
  1607.     IN  HANDLE FaxPortHandle,
  1608.     IN  LPCSTR RoutingGuid,
  1609.     IN  const BYTE *RoutingInfoBuffer,
  1610.     IN  DWORD RoutingInfoBufferSize
  1611.     );
  1612. typedef BOOL
  1613. (WINAPI *PFAXSETROUTINGINFOW)(
  1614.     IN  HANDLE FaxPortHandle,
  1615.     IN  LPCWSTR RoutingGuid,
  1616.     IN  const BYTE *RoutingInfoBuffer,
  1617.     IN  DWORD RoutingInfoBufferSize
  1618.     );
  1619. #ifdef UNICODE
  1620. #define PFAXSETROUTINGINFO  PFAXSETROUTINGINFOW
  1621. #else
  1622. #define PFAXSETROUTINGINFO  PFAXSETROUTINGINFOA
  1623. #endif // !UNICODE
  1624.  
  1625.  
  1626.  
  1627. WINFAXAPI
  1628. BOOL
  1629. WINAPI
  1630. FaxInitializeEventQueue(
  1631.     IN HANDLE FaxHandle,
  1632.     IN HANDLE CompletionPort,
  1633.     IN ULONG_PTR CompletionKey,
  1634.     IN HWND hWnd,
  1635.     IN UINT MessageStart
  1636.     );
  1637.  
  1638. typedef BOOL
  1639. (WINAPI *PFAXINITIALIZEEVENTQUEUE)(
  1640.     IN HANDLE FaxHandle,
  1641.     IN HANDLE CompletionPort,
  1642.     IN ULONG_PTR CompletionKey,
  1643.     IN HWND hWnd,
  1644.     IN UINT MessageStart
  1645.     );
  1646.  
  1647. WINFAXAPI
  1648. VOID
  1649. WINAPI
  1650. FaxFreeBuffer(
  1651.     LPVOID Buffer
  1652.     );
  1653.  
  1654. typedef VOID
  1655. (WINAPI *PFAXFREEBUFFER)(
  1656.     LPVOID Buffer
  1657.     );
  1658.  
  1659. WINFAXAPI
  1660. BOOL
  1661. WINAPI
  1662. FaxStartPrintJobA(
  1663.     IN  LPCSTR PrinterName,
  1664.     IN  const FAX_PRINT_INFOA *PrintInfo,
  1665.     OUT LPDWORD FaxJobId,
  1666.     OUT PFAX_CONTEXT_INFOA FaxContextInfo
  1667.     );
  1668. WINFAXAPI
  1669. BOOL
  1670. WINAPI
  1671. FaxStartPrintJobW(
  1672.     IN  LPCWSTR PrinterName,
  1673.     IN  const FAX_PRINT_INFOW *PrintInfo,
  1674.     OUT LPDWORD FaxJobId,
  1675.     OUT PFAX_CONTEXT_INFOW FaxContextInfo
  1676.     );
  1677. #ifdef UNICODE
  1678. #define FaxStartPrintJob  FaxStartPrintJobW
  1679. #else
  1680. #define FaxStartPrintJob  FaxStartPrintJobA
  1681. #endif // !UNICODE
  1682.  
  1683. typedef BOOL
  1684. (WINAPI *PFAXSTARTPRINTJOBA)(
  1685.     IN  LPCSTR PrinterName,
  1686.     IN  const FAX_PRINT_INFOA *PrintInfo,
  1687.     OUT LPDWORD FaxJobId,
  1688.     OUT PFAX_CONTEXT_INFOA FaxContextInfo
  1689.     );
  1690. typedef BOOL
  1691. (WINAPI *PFAXSTARTPRINTJOBW)(
  1692.     IN  LPCWSTR PrinterName,
  1693.     IN  const FAX_PRINT_INFOW *PrintInfo,
  1694.     OUT LPDWORD FaxJobId,
  1695.     OUT PFAX_CONTEXT_INFOW FaxContextInfo
  1696.     );
  1697. #ifdef UNICODE
  1698. #define PFAXSTARTPRINTJOB  PFAXSTARTPRINTJOBW
  1699. #else
  1700. #define PFAXSTARTPRINTJOB  PFAXSTARTPRINTJOBA
  1701. #endif // !UNICODE
  1702.  
  1703. WINFAXAPI
  1704. BOOL
  1705. WINAPI
  1706. FaxPrintCoverPageA(
  1707.     IN const FAX_CONTEXT_INFOA *FaxContextInfo,
  1708.     IN const FAX_COVERPAGE_INFOA *CoverPageInfo
  1709.     );
  1710. WINFAXAPI
  1711. BOOL
  1712. WINAPI
  1713. FaxPrintCoverPageW(
  1714.     IN const FAX_CONTEXT_INFOW *FaxContextInfo,
  1715.     IN const FAX_COVERPAGE_INFOW *CoverPageInfo
  1716.     );
  1717. #ifdef UNICODE
  1718. #define FaxPrintCoverPage  FaxPrintCoverPageW
  1719. #else
  1720. #define FaxPrintCoverPage  FaxPrintCoverPageA
  1721. #endif // !UNICODE
  1722.  
  1723. typedef BOOL
  1724. (WINAPI *PFAXPRINTCOVERPAGEA)(
  1725.     IN const FAX_CONTEXT_INFOA *FaxContextInfo,
  1726.     IN const FAX_COVERPAGE_INFOA *CoverPageInfo
  1727.     );
  1728. typedef BOOL
  1729. (WINAPI *PFAXPRINTCOVERPAGEW)(
  1730.     IN const FAX_CONTEXT_INFOW *FaxContextInfo,
  1731.     IN const FAX_COVERPAGE_INFOW *CoverPageInfo
  1732.     );
  1733. #ifdef UNICODE
  1734. #define PFAXPRINTCOVERPAGE  PFAXPRINTCOVERPAGEW
  1735. #else
  1736. #define PFAXPRINTCOVERPAGE  PFAXPRINTCOVERPAGEA
  1737. #endif // !UNICODE
  1738.  
  1739. WINFAXAPI
  1740. BOOL
  1741. WINAPI
  1742. FaxRegisterServiceProviderW(
  1743.     IN LPCWSTR DeviceProvider,
  1744.     IN LPCWSTR FriendlyName,
  1745.     IN LPCWSTR ImageName,
  1746.     IN LPCWSTR TspName
  1747.     );
  1748.  
  1749. #define FaxRegisterServiceProvider  FaxRegisterServiceProviderW
  1750.  
  1751. typedef BOOL
  1752. (WINAPI *PFAXREGISTERSERVICEPROVIDERW)(    
  1753.     IN LPCWSTR DeviceProvider,
  1754.     IN LPCWSTR FriendlyName,
  1755.     IN LPCWSTR ImageName,
  1756.     IN LPCWSTR TspName
  1757.     );
  1758.     
  1759. #define PFAXREGISTERSERVICEPROVIDER PFAXREGISTERSERVICEPROVIDERW
  1760.  
  1761. typedef BOOL
  1762. (CALLBACK *PFAX_ROUTING_INSTALLATION_CALLBACKW)(
  1763.     IN HANDLE FaxHandle,
  1764.     IN LPVOID Context,
  1765.     IN OUT LPWSTR MethodName,
  1766.     IN OUT LPWSTR FriendlyName,
  1767.     IN OUT LPWSTR FunctionName,
  1768.     IN OUT LPWSTR Guid
  1769.     );
  1770.  
  1771. #define PFAX_ROUTING_INSTALLATION_CALLBACK PFAX_ROUTING_INSTALLATION_CALLBACKW
  1772.  
  1773.  
  1774. WINFAXAPI
  1775. BOOL
  1776. WINAPI
  1777. FaxRegisterRoutingExtensionW(
  1778.     IN HANDLE  FaxHandle,
  1779.     IN LPCWSTR ExtensionName,
  1780.     IN LPCWSTR FriendlyName,
  1781.     IN LPCWSTR ImageName,
  1782.     IN PFAX_ROUTING_INSTALLATION_CALLBACKW CallBack,
  1783.     IN LPVOID Context
  1784.     );
  1785.  
  1786. #define FaxRegisterRoutingExtension FaxRegisterRoutingExtensionW
  1787.  
  1788.  
  1789. typedef BOOL
  1790. (WINAPI *PFAXREGISTERROUTINGEXTENSIONW)(
  1791.     IN HANDLE  FaxHandle,
  1792.     IN LPCWSTR ExtensionName,
  1793.     IN LPCWSTR FriendlyName,
  1794.     IN LPCWSTR ImageName,
  1795.     IN PFAX_ROUTING_INSTALLATION_CALLBACKW CallBack,
  1796.     IN LPVOID Context
  1797.     );
  1798.  
  1799. #define PFAXREGISTERROUTINGEXTENSION PFAXREGISTERROUTINGEXTENSIONW
  1800.  
  1801.  
  1802.  
  1803. #ifdef __cplusplus
  1804. }
  1805. #endif
  1806.  
  1807. #pragma option pop /*P_O_Pop*/
  1808. #endif
  1809.