|
|
/*++
Copyright (c) 1996-1998 Microsoft Corporation
Module Name:
winfax.h
Abstract:
This module contains the WIN32 FAX APIs.
--*/
#ifndef _FAXAPI_
#define _FAXAPI_
#ifndef MIDL_PASS
#include <tapi.h>
#endif
#if !defined(_WINFAX_)
#define WINFAXAPI DECLSPEC_IMPORT
#else
#define WINFAXAPI
#endif
#ifdef __cplusplus
extern "C" { #endif
#pragma pack (push,EnterWinFax)
#pragma pack (1)
typedef enum { FAXLOG_LEVEL_NONE = 0, FAXLOG_LEVEL_MIN, FAXLOG_LEVEL_MED, FAXLOG_LEVEL_MAX } FAX_ENUM_LOG_LEVELS;
typedef enum { FAXLOG_CATEGORY_INIT = 1, // Initialization / shutdown
FAXLOG_CATEGORY_OUTBOUND, // Outbound messages
FAXLOG_CATEGORY_INBOUND, // Inbound messages
FAXLOG_CATEGORY_UNKNOWN // Unknown category (all others)
} FAX_ENUM_LOG_CATEGORIES;
typedef struct _FAX_LOG_CATEGORYA { LPCSTR Name; // logging category name
DWORD Category; // logging category number
DWORD Level; // logging level for the category
} FAX_LOG_CATEGORYA, *PFAX_LOG_CATEGORYA; typedef struct _FAX_LOG_CATEGORYW { LPCWSTR Name; // logging category name
DWORD Category; // logging category number
DWORD Level; // logging level for the category
} FAX_LOG_CATEGORYW, *PFAX_LOG_CATEGORYW; #ifdef UNICODE
typedef FAX_LOG_CATEGORYW FAX_LOG_CATEGORY; typedef PFAX_LOG_CATEGORYW PFAX_LOG_CATEGORY; #else
typedef FAX_LOG_CATEGORYA FAX_LOG_CATEGORY; typedef PFAX_LOG_CATEGORYA PFAX_LOG_CATEGORY; #endif // UNICODE
typedef struct _FAX_TIME { WORD Hour; WORD Minute; } FAX_TIME, *PFAX_TIME;
typedef struct _FAX_CONFIGURATIONA { DWORD SizeOfStruct; // size of this structure
DWORD Retries; // number of retries for fax send
DWORD RetryDelay; // number of minutes between retries
DWORD DirtyDays; // number of days to keep an unsent job in the queue
BOOL Branding; // fsp should brand outgoing faxes
BOOL UseDeviceTsid; // server uses device tsid only
BOOL ServerCp; // clients must use cover pages on the server
BOOL PauseServerQueue; // is the server queue paused?
FAX_TIME StartCheapTime; // start of discount rate period
FAX_TIME StopCheapTime; // end of discount rate period
BOOL ArchiveOutgoingFaxes; // whether outgoing faxes should be archived
LPCSTR ArchiveDirectory; // archive directory for outgoing faxes
LPCSTR InboundProfile; // profile used for inbound routing (email)
} FAX_CONFIGURATIONA, *PFAX_CONFIGURATIONA; typedef struct _FAX_CONFIGURATIONW { DWORD SizeOfStruct; // size of this structure
DWORD Retries; // number of retries for fax send
DWORD RetryDelay; // number of minutes between retries
DWORD DirtyDays; // number of days to keep an unsent job in the queue
BOOL Branding; // fsp should brand outgoing faxes
BOOL UseDeviceTsid; // server uses device tsid only
BOOL ServerCp; // clients must use cover pages on the server
BOOL PauseServerQueue; // is the server queue paused?
FAX_TIME StartCheapTime; // start of discount rate period
FAX_TIME StopCheapTime; // end of discount rate period
BOOL ArchiveOutgoingFaxes; // whether outgoing faxes should be archived
LPCWSTR ArchiveDirectory; // archive directory for outgoing faxes
LPCWSTR InboundProfile; // profile used for inbound routing (email)
} FAX_CONFIGURATIONW, *PFAX_CONFIGURATIONW; #ifdef UNICODE
typedef FAX_CONFIGURATIONW FAX_CONFIGURATION; typedef PFAX_CONFIGURATIONW PFAX_CONFIGURATION; #else
typedef FAX_CONFIGURATIONA FAX_CONFIGURATION; typedef PFAX_CONFIGURATIONA PFAX_CONFIGURATION; #endif // UNICODE
//
// FaxSetJob() command codes
//
typedef enum { JC_UNKNOWN = 0, JC_DELETE, JC_PAUSE, JC_RESUME } FAX_ENUM_JOB_COMMANDS;
#define JC_RESTART JC_RESUME
//
// job type defines
//
typedef enum { JT_UNKNOWN = 0x0001, // Fax type is not determined yet
JT_SEND = 0x0002, // Outgoing fax message
JT_RECEIVE = 0x0004, // Incoming fax message
JT_ROUTING = 0x0008, // Incoming message - being routed
JT_FAIL_RECEIVE = 0x0010 // Fail receive job
} FAX_ENUM_JOB_TYPES;
//
// job status defines
//
#define JS_PENDING 0x00000001
#define JS_INPROGRESS 0x00000002
#define JS_DELETING 0x00000004
#define JS_FAILED 0x00000008
#define JS_PAUSED 0x00000010
#define JS_NOLINE 0x00000020
#define JS_RETRYING 0x00000040
#define JS_RETRIES_EXCEEDED 0x00000080
typedef struct _FAX_DEVICE_STATUSA { DWORD SizeOfStruct; // size of this structure
LPCSTR CallerId; // caller id string
LPCSTR Csid; // station identifier
DWORD CurrentPage; // current page
DWORD DeviceId; // permanent line id
LPCSTR DeviceName; // device name
LPCSTR DocumentName; // document name
DWORD JobType; // send or receive?
LPCSTR PhoneNumber; // sending phone number
LPCSTR RoutingString; // routing information
LPCSTR SenderName; // sender name
LPCSTR RecipientName; // recipient name
DWORD Size; // size in bytes of the document
FILETIME StartTime; // starting time of the fax send/receive
DWORD Status; // current status of the device, see FPS_??? masks
LPCSTR StatusString; // status string if the Status field is zero. this may be NULL.
FILETIME SubmittedTime; // time the document was submitted
DWORD TotalPages; // total number of pages in this job
LPCSTR Tsid; // transmitting station identifier
LPCSTR UserName; // user that submitted the active job
} FAX_DEVICE_STATUSA, *PFAX_DEVICE_STATUSA; typedef struct _FAX_DEVICE_STATUSW { DWORD SizeOfStruct; // size of this structure
LPCWSTR CallerId; // caller id string
LPCWSTR Csid; // station identifier
DWORD CurrentPage; // current page
DWORD DeviceId; // permanent line id
LPCWSTR DeviceName; // device name
LPCWSTR DocumentName; // document name
DWORD JobType; // send or receive?
LPCWSTR PhoneNumber; // sending phone number
LPCWSTR RoutingString; // routing information
LPCWSTR SenderName; // sender name
LPCWSTR RecipientName; // recipient name
DWORD Size; // size in bytes of the document
FILETIME StartTime; // starting time of the fax send/receive
DWORD Status; // current status of the device, see FPS_??? masks
LPCWSTR StatusString; // status string if the Status field is zero. this may be NULL.
FILETIME SubmittedTime; // time the document was submitted
DWORD TotalPages; // total number of pages in this job
LPCWSTR Tsid; // transmitting station identifier
LPCWSTR UserName; // user that submitted the active job
} FAX_DEVICE_STATUSW, *PFAX_DEVICE_STATUSW; #ifdef UNICODE
typedef FAX_DEVICE_STATUSW FAX_DEVICE_STATUS; typedef PFAX_DEVICE_STATUSW PFAX_DEVICE_STATUS; #else
typedef FAX_DEVICE_STATUSA FAX_DEVICE_STATUS; typedef PFAX_DEVICE_STATUSA PFAX_DEVICE_STATUS; #endif // UNICODE
typedef struct _FAX_JOB_ENTRYA { DWORD SizeOfStruct; // size of this structure
DWORD JobId; // fax job id
LPCSTR UserName; // user who submitted the job
DWORD JobType; // job type, see JT defines
DWORD QueueStatus; // job queue status, see JS defines
DWORD Status; // current status of the device, see FPS_??? masks
DWORD Size; // size in bytes of the document
DWORD PageCount; // total page count
LPCSTR RecipientNumber; // recipient fax number
LPCSTR RecipientName; // recipient name
LPCSTR Tsid; // transmitter's id
LPCSTR SenderName; // sender name
LPCSTR SenderCompany; // sender company
LPCSTR SenderDept; // sender department
LPCSTR BillingCode; // billing code
DWORD ScheduleAction; // when to schedule the fax, see JSA defines
SYSTEMTIME ScheduleTime; // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
DWORD DeliveryReportType; // delivery report type, see DRT defines
LPCSTR DeliveryReportAddress; // email address for delivery report (ndr or dr)
LPCSTR DocumentName; // document name
} FAX_JOB_ENTRYA, *PFAX_JOB_ENTRYA; typedef struct _FAX_JOB_ENTRYW { DWORD SizeOfStruct; // size of this structure
DWORD JobId; // fax job id
LPCWSTR UserName; // user who submitted the job
DWORD JobType; // job type, see JT defines
DWORD QueueStatus; // job queue status, see JS defines
DWORD Status; // current status of the device, see FPS_??? masks
DWORD Size; // size in bytes of the document
DWORD PageCount; // total page count
LPCWSTR RecipientNumber; // recipient fax number
LPCWSTR RecipientName; // recipient name
LPCWSTR Tsid; // transmitter's id
LPCWSTR SenderName; // sender name
LPCWSTR SenderCompany; // sender company
LPCWSTR SenderDept; // sender department
LPCWSTR BillingCode; // billing code
DWORD ScheduleAction; // when to schedule the fax, see JSA defines
SYSTEMTIME ScheduleTime; // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
DWORD DeliveryReportType; // delivery report type, see DRT defines
LPCWSTR DeliveryReportAddress; // email address for delivery report (ndr or dr)
LPCWSTR DocumentName; // document name
} FAX_JOB_ENTRYW, *PFAX_JOB_ENTRYW; #ifdef UNICODE
typedef FAX_JOB_ENTRYW FAX_JOB_ENTRY; typedef PFAX_JOB_ENTRYW PFAX_JOB_ENTRY; #else
typedef FAX_JOB_ENTRYA FAX_JOB_ENTRY; typedef PFAX_JOB_ENTRYA PFAX_JOB_ENTRY; #endif // UNICODE
//
// fax port state masks
//
// if you change these defines the be sure to
// change the resources in the fax service.
//
#define FPS_DIALING 0x20000001
#define FPS_SENDING 0x20000002
#define FPS_RECEIVING 0x20000004
#define FPS_COMPLETED 0x20000008
#define FPS_HANDLED 0x20000010
#define FPS_UNAVAILABLE 0x20000020
#define FPS_BUSY 0x20000040
#define FPS_NO_ANSWER 0x20000080
#define FPS_BAD_ADDRESS 0x20000100
#define FPS_NO_DIAL_TONE 0x20000200
#define FPS_DISCONNECTED 0x20000400
#define FPS_FATAL_ERROR 0x20000800
#define FPS_NOT_FAX_CALL 0x20001000
#define FPS_CALL_DELAYED 0x20002000
#define FPS_CALL_BLACKLISTED 0x20004000
#define FPS_INITIALIZING 0x20008000
#define FPS_OFFLINE 0x20010000
#define FPS_RINGING 0x20020000
#define FPS_AVAILABLE 0x20100000
#define FPS_ABORTING 0x20200000
#define FPS_ROUTING 0x20400000
#define FPS_ANSWERED 0x20800000
//
// fax port capability mask
//
#define FPF_RECEIVE 0x00000001
#define FPF_SEND 0x00000002
#define FPF_VIRTUAL 0x00000004
#define FPF_AUTO_ANSWER 0x00000040
typedef struct _FAX_PORT_INFOA { DWORD SizeOfStruct; // size of this structure
DWORD DeviceId; // Device ID
DWORD State; // State of the device
DWORD Flags; // Device specific flags
DWORD Rings; // Number of rings before answer
DWORD Priority; // Device priority
LPCSTR DeviceName; // Device name
LPCSTR Tsid; // Device Tsid
LPCSTR Csid; // Device Csid
} FAX_PORT_INFOA, *PFAX_PORT_INFOA; typedef struct _FAX_PORT_INFOW { DWORD SizeOfStruct; // size of this structure
DWORD DeviceId; // Device ID
DWORD State; // State of the device
DWORD Flags; // Device specific flags
DWORD Rings; // Number of rings before answer
DWORD Priority; // Device priority
LPCWSTR DeviceName; // Device name
LPCWSTR Tsid; // Device Tsid
LPCWSTR Csid; // Device Csid
} FAX_PORT_INFOW, *PFAX_PORT_INFOW; #ifdef UNICODE
typedef FAX_PORT_INFOW FAX_PORT_INFO; typedef PFAX_PORT_INFOW PFAX_PORT_INFO; #else
typedef FAX_PORT_INFOA FAX_PORT_INFO; typedef PFAX_PORT_INFOA PFAX_PORT_INFO; #endif // UNICODE
typedef struct _FAX_ROUTING_METHODA { DWORD SizeOfStruct; // size of this structure
DWORD DeviceId; // device identifier
BOOL Enabled; // is this method enabled for this device?
LPCSTR DeviceName; // device name
LPCSTR Guid; // guid that identifies this routing method
LPCSTR FriendlyName; // friendly name for this method
LPCSTR FunctionName; // exported function name that identifies this method
LPCSTR ExtensionImageName; // module (dll) name that implements this method
LPCSTR ExtensionFriendlyName; // displayable string that identifies the extension
} FAX_ROUTING_METHODA, *PFAX_ROUTING_METHODA; typedef struct _FAX_ROUTING_METHODW { DWORD SizeOfStruct; // size of this structure
DWORD DeviceId; // device identifier
BOOL Enabled; // is this method enabled for this device?
LPCWSTR DeviceName; // device name
LPCWSTR Guid; // guid that identifies this routing method
LPCWSTR FriendlyName; // friendly name for this method
LPCWSTR FunctionName; // exported function name that identifies this method
LPCWSTR ExtensionImageName; // module (dll) name that implements this method
LPCWSTR ExtensionFriendlyName; // displayable string that identifies the extension
} FAX_ROUTING_METHODW, *PFAX_ROUTING_METHODW; #ifdef UNICODE
typedef FAX_ROUTING_METHODW FAX_ROUTING_METHOD; typedef PFAX_ROUTING_METHODW PFAX_ROUTING_METHOD; #else
typedef FAX_ROUTING_METHODA FAX_ROUTING_METHOD; typedef PFAX_ROUTING_METHODA PFAX_ROUTING_METHOD; #endif // UNICODE
typedef struct _FAX_GLOBAL_ROUTING_INFOA { DWORD SizeOfStruct; // size of this structure
DWORD Priority; // priority of this device
LPCSTR Guid; // guid that identifies this routing method
LPCSTR FriendlyName; // friendly name for this method
LPCSTR FunctionName; // exported function name that identifies this method
LPCSTR ExtensionImageName; // module (dll) name that implements this method
LPCSTR ExtensionFriendlyName; // displayable string that identifies the extension
} FAX_GLOBAL_ROUTING_INFOA, *PFAX_GLOBAL_ROUTING_INFOA; typedef struct _FAX_GLOBAL_ROUTING_INFOW { DWORD SizeOfStruct; // size of this structure
DWORD Priority; // priority of this device
LPCWSTR Guid; // guid that identifies this routing method
LPCWSTR FriendlyName; // friendly name for this method
LPCWSTR FunctionName; // exported function name that identifies this method
LPCWSTR ExtensionImageName; // module (dll) name that implements this method
LPCWSTR ExtensionFriendlyName; // displayable string that identifies the extension
} FAX_GLOBAL_ROUTING_INFOW, *PFAX_GLOBAL_ROUTING_INFOW; #ifdef UNICODE
typedef FAX_GLOBAL_ROUTING_INFOW FAX_GLOBAL_ROUTING_INFO; typedef PFAX_GLOBAL_ROUTING_INFOW PFAX_GLOBAL_ROUTING_INFO; #else
typedef FAX_GLOBAL_ROUTING_INFOA FAX_GLOBAL_ROUTING_INFO; typedef PFAX_GLOBAL_ROUTING_INFOA PFAX_GLOBAL_ROUTING_INFO; #endif // UNICODE
typedef struct _FAX_COVERPAGE_INFOA { DWORD SizeOfStruct; // Size of this structure
//
// general
//
LPCSTR CoverPageName; // coverpage document name
BOOL UseServerCoverPage; // coverpage exists on the fax server
//
// Recipient information
//
LPCSTR RecName; //
LPCSTR RecFaxNumber; //
LPCSTR RecCompany; //
LPCSTR RecStreetAddress; //
LPCSTR RecCity; //
LPCSTR RecState; //
LPCSTR RecZip; //
LPCSTR RecCountry; //
LPCSTR RecTitle; //
LPCSTR RecDepartment; //
LPCSTR RecOfficeLocation; //
LPCSTR RecHomePhone; //
LPCSTR RecOfficePhone; //
//
// Sender information
//
LPCSTR SdrName; //
LPCSTR SdrFaxNumber; //
LPCSTR SdrCompany; //
LPCSTR SdrAddress; //
LPCSTR SdrTitle; //
LPCSTR SdrDepartment; //
LPCSTR SdrOfficeLocation; //
LPCSTR SdrHomePhone; //
LPCSTR SdrOfficePhone; //
//
// Misc information
//
LPCSTR Note; //
LPCSTR Subject; //
SYSTEMTIME TimeSent; // Time the fax was sent
DWORD PageCount; // Number of pages
} FAX_COVERPAGE_INFOA, *PFAX_COVERPAGE_INFOA; typedef struct _FAX_COVERPAGE_INFOW { DWORD SizeOfStruct; // Size of this structure
//
// general
//
LPCWSTR CoverPageName; // coverpage document name
BOOL UseServerCoverPage; // coverpage exists on the fax server
//
// Recipient information
//
LPCWSTR RecName; //
LPCWSTR RecFaxNumber; //
LPCWSTR RecCompany; //
LPCWSTR RecStreetAddress; //
LPCWSTR RecCity; //
LPCWSTR RecState; //
LPCWSTR RecZip; //
LPCWSTR RecCountry; //
LPCWSTR RecTitle; //
LPCWSTR RecDepartment; //
LPCWSTR RecOfficeLocation; //
LPCWSTR RecHomePhone; //
LPCWSTR RecOfficePhone; //
//
// Sender information
//
LPCWSTR SdrName; //
LPCWSTR SdrFaxNumber; //
LPCWSTR SdrCompany; //
LPCWSTR SdrAddress; //
LPCWSTR SdrTitle; //
LPCWSTR SdrDepartment; //
LPCWSTR SdrOfficeLocation; //
LPCWSTR SdrHomePhone; //
LPCWSTR SdrOfficePhone; //
//
// Misc information
//
LPCWSTR Note; //
LPCWSTR Subject; //
SYSTEMTIME TimeSent; // Time the fax was sent
DWORD PageCount; // Number of pages
} FAX_COVERPAGE_INFOW, *PFAX_COVERPAGE_INFOW; #ifdef UNICODE
typedef FAX_COVERPAGE_INFOW FAX_COVERPAGE_INFO; typedef PFAX_COVERPAGE_INFOW PFAX_COVERPAGE_INFO; #else
typedef FAX_COVERPAGE_INFOA FAX_COVERPAGE_INFO; typedef PFAX_COVERPAGE_INFOA PFAX_COVERPAGE_INFO; #endif // UNICODE
typedef enum { JSA_NOW = 0, // Send now
JSA_SPECIFIC_TIME, // Send at specific time
JSA_DISCOUNT_PERIOD // Send at server configured discount period
} FAX_ENUM_JOB_SEND_ATTRIBUTES;
typedef enum { DRT_NONE = 0x0000, // Do not send receipt
DRT_EMAIL = 0x0001, // Send receipt by email
DRT_MSGBOX = 0x0002, // Send receipt by a message box
} FAX_ENUM_DELIVERY_REPORT_TYPES;
typedef struct _FAX_JOB_PARAMA { DWORD SizeOfStruct; // size of this structure
LPCSTR RecipientNumber; // recipient fax number
LPCSTR RecipientName; // recipient name
LPCSTR Tsid; // transmitter's id
LPCSTR SenderName; // sender name
LPCSTR SenderCompany; // sender company
LPCSTR SenderDept; // sender department
LPCSTR BillingCode; // billing code
DWORD ScheduleAction; // when to schedule the fax, see JSA defines
SYSTEMTIME ScheduleTime; // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
DWORD DeliveryReportType; // delivery report type, see DRT defines
LPCSTR DeliveryReportAddress; // email address for delivery report (ndr or dr)
LPCSTR DocumentName; // document name (optional)
HCALL CallHandle; // optional call handle
DWORD_PTR Reserved[3]; // reserved for ms use only
} FAX_JOB_PARAMA, *PFAX_JOB_PARAMA; typedef struct _FAX_JOB_PARAMW { DWORD SizeOfStruct; // size of this structure
LPCWSTR RecipientNumber; // recipient fax number
LPCWSTR RecipientName; // recipient name
LPCWSTR Tsid; // transmitter's id
LPCWSTR SenderName; // sender name
LPCWSTR SenderCompany; // sender company
LPCWSTR SenderDept; // sender department
LPCWSTR BillingCode; // billing code
DWORD ScheduleAction; // when to schedule the fax, see JSA defines
SYSTEMTIME ScheduleTime; // time to send the fax when JSA_SPECIFIC_TIME is used (must be local time)
DWORD DeliveryReportType; // delivery report type, see DRT defines
LPCWSTR DeliveryReportAddress; // email address for delivery report (ndr or dr)
LPCWSTR DocumentName; // document name (optional)
HCALL CallHandle; // optional call handle
DWORD_PTR Reserved[3]; // reserved for ms use only
} FAX_JOB_PARAMW, *PFAX_JOB_PARAMW; #ifdef UNICODE
typedef FAX_JOB_PARAMW FAX_JOB_PARAM; typedef PFAX_JOB_PARAMW PFAX_JOB_PARAM; #else
typedef FAX_JOB_PARAMA FAX_JOB_PARAM; typedef PFAX_JOB_PARAMA PFAX_JOB_PARAM; #endif // UNICODE
//
// Event Ids
//
// FEI_NEVENTS is the number of events
//
#define FEI_DIALING 0x00000001
#define FEI_SENDING 0x00000002
#define FEI_RECEIVING 0x00000003
#define FEI_COMPLETED 0x00000004
#define FEI_BUSY 0x00000005
#define FEI_NO_ANSWER 0x00000006
#define FEI_BAD_ADDRESS 0x00000007
#define FEI_NO_DIAL_TONE 0x00000008
#define FEI_DISCONNECTED 0x00000009
#define FEI_FATAL_ERROR 0x0000000a
#define FEI_NOT_FAX_CALL 0x0000000b
#define FEI_CALL_DELAYED 0x0000000c
#define FEI_CALL_BLACKLISTED 0x0000000d
#define FEI_RINGING 0x0000000e
#define FEI_ABORTING 0x0000000f
#define FEI_ROUTING 0x00000010
#define FEI_MODEM_POWERED_ON 0x00000011
#define FEI_MODEM_POWERED_OFF 0x00000012
#define FEI_IDLE 0x00000013
#define FEI_FAXSVC_ENDED 0x00000014
#define FEI_ANSWERED 0x00000015
#define FEI_JOB_QUEUED 0x00000016
#define FEI_DELETED 0x00000017
#define FEI_INITIALIZING 0x00000018
#define FEI_LINE_UNAVAILABLE 0x00000019
#define FEI_HANDLED 0x0000001a
#define FEI_FAXSVC_STARTED 0x0000001b
#define FEI_NEVENTS FEI_FAXSVC_STARTED
typedef struct _FAX_EVENTA { DWORD SizeOfStruct; // Size of this structure
FILETIME TimeStamp; // Timestamp for when the event was generated
DWORD DeviceId; // Permanent line id
DWORD EventId; // Current event id
DWORD JobId; // Fax Job Id, 0xffffffff indicates inactive job
} FAX_EVENTA, *PFAX_EVENTA; typedef struct _FAX_EVENTW { DWORD SizeOfStruct; // Size of this structure
FILETIME TimeStamp; // Timestamp for when the event was generated
DWORD DeviceId; // Permanent line id
DWORD EventId; // Current event id
DWORD JobId; // Fax Job Id, 0xffffffff indicates inactive job
} FAX_EVENTW, *PFAX_EVENTW; #ifdef UNICODE
typedef FAX_EVENTW FAX_EVENT; typedef PFAX_EVENTW PFAX_EVENT; #else
typedef FAX_EVENTA FAX_EVENT; typedef PFAX_EVENTA PFAX_EVENT; #endif // UNICODE
typedef struct _FAX_PRINT_INFOA { DWORD SizeOfStruct; // Size of this structure
LPCSTR DocName; // Document name that appears in the spooler
LPCSTR RecipientName; // Recipient name
LPCSTR RecipientNumber; // Recipient fax number (non-canonical number)
LPCSTR SenderName; // Sender name
LPCSTR SenderCompany; // Sender company (optional)
LPCSTR SenderDept; // Sender department
LPCSTR SenderBillingCode; // Billing code
LPCSTR DrProfileName; // Profile name for delivery report <--| mutually exclusive
LPCSTR DrEmailAddress; // E.Mail address for delivery report <--|
LPCSTR OutputFileName; // for print to file, resulting file name
} FAX_PRINT_INFOA, *PFAX_PRINT_INFOA; typedef struct _FAX_PRINT_INFOW { DWORD SizeOfStruct; // Size of this structure
LPCWSTR DocName; // Document name that appears in the spooler
LPCWSTR RecipientName; // Recipient name
LPCWSTR RecipientNumber; // Recipient fax number (non-canonical number)
LPCWSTR SenderName; // Sender name
LPCWSTR SenderCompany; // Sender company (optional)
LPCWSTR SenderDept; // Sender department
LPCWSTR SenderBillingCode; // Billing code
LPCWSTR DrProfileName; // Profile name for delivery report <--| mutually exclusive
LPCWSTR DrEmailAddress; // E.Mail address for delivery report <--|
LPCWSTR OutputFileName; // for print to file, resulting file name
} FAX_PRINT_INFOW, *PFAX_PRINT_INFOW; #ifdef UNICODE
typedef FAX_PRINT_INFOW FAX_PRINT_INFO; typedef PFAX_PRINT_INFOW PFAX_PRINT_INFO; #else
typedef FAX_PRINT_INFOA FAX_PRINT_INFO; typedef PFAX_PRINT_INFOA PFAX_PRINT_INFO; #endif // UNICODE
typedef struct _FAX_CONTEXT_INFOA { DWORD SizeOfStruct; // Size of this structure
HDC hDC; // Device Context
CHAR ServerName[MAX_COMPUTERNAME_LENGTH+1]; // Server name
} FAX_CONTEXT_INFOA, *PFAX_CONTEXT_INFOA; typedef struct _FAX_CONTEXT_INFOW { DWORD SizeOfStruct; // Size of this structure
HDC hDC; // Device Context
WCHAR ServerName[MAX_COMPUTERNAME_LENGTH+1]; // Server name
} FAX_CONTEXT_INFOW, *PFAX_CONTEXT_INFOW; #ifdef UNICODE
typedef FAX_CONTEXT_INFOW FAX_CONTEXT_INFO; typedef PFAX_CONTEXT_INFOW PFAX_CONTEXT_INFO; #else
typedef FAX_CONTEXT_INFOA FAX_CONTEXT_INFO; typedef PFAX_CONTEXT_INFOA PFAX_CONTEXT_INFO; #endif // UNICODE
//
// prototypes
//
WINFAXAPI BOOL WINAPI FaxConnectFaxServerA( IN LPCSTR MachineName OPTIONAL, OUT LPHANDLE FaxHandle ); WINFAXAPI BOOL WINAPI FaxConnectFaxServerW( IN LPCWSTR MachineName OPTIONAL, OUT LPHANDLE FaxHandle ); #ifdef UNICODE
#define FaxConnectFaxServer FaxConnectFaxServerW
#else
#define FaxConnectFaxServer FaxConnectFaxServerA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXCONNECTFAXSERVERA)( IN LPCSTR MachineName OPTIONAL, OUT LPHANDLE FaxHandle ); typedef BOOL (WINAPI *PFAXCONNECTFAXSERVERW)( IN LPCWSTR MachineName OPTIONAL, OUT LPHANDLE FaxHandle ); #ifdef UNICODE
#define PFAXCONNECTFAXSERVER PFAXCONNECTFAXSERVERW
#else
#define PFAXCONNECTFAXSERVER PFAXCONNECTFAXSERVERA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxClose( IN HANDLE FaxHandle );
typedef BOOL (WINAPI *PFAXCLOSE)( IN HANDLE FaxHandle );
typedef enum { PORT_OPEN_QUERY = 1, PORT_OPEN_MODIFY } FAX_ENUM_PORT_OPEN_TYPE;
WINFAXAPI BOOL WINAPI FaxOpenPort( IN HANDLE FaxHandle, IN DWORD DeviceId, IN DWORD Flags, OUT LPHANDLE FaxPortHandle );
typedef BOOL (WINAPI *PFAXOPENPORT)( IN HANDLE FaxHandle, IN DWORD DeviceId, IN DWORD Flags, OUT LPHANDLE FaxPortHandle );
WINFAXAPI BOOL WINAPI FaxCompleteJobParamsA( IN OUT PFAX_JOB_PARAMA *JobParams, IN OUT PFAX_COVERPAGE_INFOA *CoverpageInfo ); WINFAXAPI BOOL WINAPI FaxCompleteJobParamsW( IN OUT PFAX_JOB_PARAMW *JobParams, IN OUT PFAX_COVERPAGE_INFOW *CoverpageInfo ); #ifdef UNICODE
#define FaxCompleteJobParams FaxCompleteJobParamsW
#else
#define FaxCompleteJobParams FaxCompleteJobParamsA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXCOMPLETEJOBPARAMSA)( IN OUT PFAX_JOB_PARAMA *JobParams, IN OUT PFAX_COVERPAGE_INFOA *CoverpageInfo ); typedef BOOL (WINAPI *PFAXCOMPLETEJOBPARAMSW)( IN OUT PFAX_JOB_PARAMW *JobParams, IN OUT PFAX_COVERPAGE_INFOW *CoverpageInfo ); #ifdef UNICODE
#define PFAXCOMPLETEJOBPARAMS PFAXCOMPLETEJOBPARAMSW
#else
#define PFAXCOMPLETEJOBPARAMS PFAXCOMPLETEJOBPARAMSA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxSendDocumentA( IN HANDLE FaxHandle, IN LPCSTR FileName, IN PFAX_JOB_PARAMA JobParams, IN const FAX_COVERPAGE_INFOA *CoverpageInfo, OPTIONAL OUT LPDWORD FaxJobId OPTIONAL ); WINFAXAPI BOOL WINAPI FaxSendDocumentW( IN HANDLE FaxHandle, IN LPCWSTR FileName, IN PFAX_JOB_PARAMW JobParams, IN const FAX_COVERPAGE_INFOW *CoverpageInfo, OPTIONAL OUT LPDWORD FaxJobId OPTIONAL ); #ifdef UNICODE
#define FaxSendDocument FaxSendDocumentW
#else
#define FaxSendDocument FaxSendDocumentA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXSENDDOCUMENTA)( IN HANDLE FaxHandle, IN LPCSTR FileName, IN PFAX_JOB_PARAMA JobParams, IN const FAX_COVERPAGE_INFOA *CoverpageInfo, OPTIONAL OUT LPDWORD FaxJobId OPTIONAL ); typedef BOOL (WINAPI *PFAXSENDDOCUMENTW)( IN HANDLE FaxHandle, IN LPCWSTR FileName, IN PFAX_JOB_PARAMW JobParams, IN const FAX_COVERPAGE_INFOW *CoverpageInfo, OPTIONAL OUT LPDWORD FaxJobId OPTIONAL ); #ifdef UNICODE
#define PFAXSENDDOCUMENT PFAXSENDDOCUMENTW
#else
#define PFAXSENDDOCUMENT PFAXSENDDOCUMENTA
#endif // !UNICODE
typedef BOOL (CALLBACK *PFAX_RECIPIENT_CALLBACKA)( IN HANDLE FaxHandle, IN DWORD RecipientNumber, IN LPVOID Context, IN OUT PFAX_JOB_PARAMA JobParams, IN OUT PFAX_COVERPAGE_INFOA CoverpageInfo OPTIONAL ); typedef BOOL (CALLBACK *PFAX_RECIPIENT_CALLBACKW)( IN HANDLE FaxHandle, IN DWORD RecipientNumber, IN LPVOID Context, IN OUT PFAX_JOB_PARAMW JobParams, IN OUT PFAX_COVERPAGE_INFOW CoverpageInfo OPTIONAL ); #ifdef UNICODE
#define PFAX_RECIPIENT_CALLBACK PFAX_RECIPIENT_CALLBACKW
#else
#define PFAX_RECIPIENT_CALLBACK PFAX_RECIPIENT_CALLBACKA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxSendDocumentForBroadcastA( IN HANDLE FaxHandle, IN LPCSTR FileName, OUT LPDWORD FaxJobId, IN PFAX_RECIPIENT_CALLBACKA FaxRecipientCallback, IN LPVOID Context ); WINFAXAPI BOOL WINAPI FaxSendDocumentForBroadcastW( IN HANDLE FaxHandle, IN LPCWSTR FileName, OUT LPDWORD FaxJobId, IN PFAX_RECIPIENT_CALLBACKW FaxRecipientCallback, IN LPVOID Context ); #ifdef UNICODE
#define FaxSendDocumentForBroadcast FaxSendDocumentForBroadcastW
#else
#define FaxSendDocumentForBroadcast FaxSendDocumentForBroadcastA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxEnumJobsA( IN HANDLE FaxHandle, OUT PFAX_JOB_ENTRYA *JobEntry, OUT LPDWORD JobsReturned ); WINFAXAPI BOOL WINAPI FaxEnumJobsW( IN HANDLE FaxHandle, OUT PFAX_JOB_ENTRYW *JobEntry, OUT LPDWORD JobsReturned ); #ifdef UNICODE
#define FaxEnumJobs FaxEnumJobsW
#else
#define FaxEnumJobs FaxEnumJobsA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXENUMJOBSA)( IN HANDLE FaxHandle, OUT PFAX_JOB_ENTRYA *JobEntry, OUT LPDWORD JobsReturned ); typedef BOOL (WINAPI *PFAXENUMJOBSW)( IN HANDLE FaxHandle, OUT PFAX_JOB_ENTRYW *JobEntry, OUT LPDWORD JobsReturned ); #ifdef UNICODE
#define PFAXENUMJOBS PFAXENUMJOBSW
#else
#define PFAXENUMJOBS PFAXENUMJOBSA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxGetJobA( IN HANDLE FaxHandle, IN DWORD JobId, OUT PFAX_JOB_ENTRYA *JobEntry ); WINFAXAPI BOOL WINAPI FaxGetJobW( IN HANDLE FaxHandle, IN DWORD JobId, OUT PFAX_JOB_ENTRYW *JobEntry ); #ifdef UNICODE
#define FaxGetJob FaxGetJobW
#else
#define FaxGetJob FaxGetJobA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXGETJOBA)( IN HANDLE FaxHandle, IN DWORD JobId, OUT PFAX_JOB_ENTRYA *JobEntry ); typedef BOOL (WINAPI *PFAXGETJOBW)( IN HANDLE FaxHandle, IN DWORD JobId, OUT PFAX_JOB_ENTRYW *JobEntry ); #ifdef UNICODE
#define PFAXGETJOB PFAXGETJOBW
#else
#define PFAXGETJOB PFAXGETJOBA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxSetJobA( IN HANDLE FaxHandle, IN DWORD JobId, IN DWORD Command, IN const FAX_JOB_ENTRYA *JobEntry ); WINFAXAPI BOOL WINAPI FaxSetJobW( IN HANDLE FaxHandle, IN DWORD JobId, IN DWORD Command, IN const FAX_JOB_ENTRYW *JobEntry ); #ifdef UNICODE
#define FaxSetJob FaxSetJobW
#else
#define FaxSetJob FaxSetJobA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXSETJOBA)( IN HANDLE FaxHandle, IN DWORD JobId, IN DWORD Command, IN const FAX_JOB_ENTRYA *JobEntry ); typedef BOOL (WINAPI *PFAXSETJOBW)( IN HANDLE FaxHandle, IN DWORD JobId, IN DWORD Command, IN const FAX_JOB_ENTRYW *JobEntry ); #ifdef UNICODE
#define PFAXSETJOB PFAXSETJOBW
#else
#define PFAXSETJOB PFAXSETJOBA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxGetPageData( IN HANDLE FaxHandle, IN DWORD JobId, OUT LPBYTE *Buffer, OUT LPDWORD BufferSize, OUT LPDWORD ImageWidth, OUT LPDWORD ImageHeight );
typedef BOOL (WINAPI *PFAXGETPAGEDATA)( IN HANDLE FaxHandle, IN DWORD JobId, OUT LPBYTE *Buffer, OUT LPDWORD BufferSize, OUT LPDWORD ImageWidth, OUT LPDWORD ImageHeight );
WINFAXAPI BOOL WINAPI FaxGetDeviceStatusA( IN HANDLE FaxPortHandle, OUT PFAX_DEVICE_STATUSA *DeviceStatus ); WINFAXAPI BOOL WINAPI FaxGetDeviceStatusW( IN HANDLE FaxPortHandle, OUT PFAX_DEVICE_STATUSW *DeviceStatus ); #ifdef UNICODE
#define FaxGetDeviceStatus FaxGetDeviceStatusW
#else
#define FaxGetDeviceStatus FaxGetDeviceStatusA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXGETDEVICESTATUSA)( IN HANDLE FaxPortHandle, OUT PFAX_DEVICE_STATUSA *DeviceStatus ); typedef BOOL (WINAPI *PFAXGETDEVICESTATUSW)( IN HANDLE FaxPortHandle, OUT PFAX_DEVICE_STATUSW *DeviceStatus ); #ifdef UNICODE
#define PFAXGETDEVICESTATUS PFAXGETDEVICESTATUSW
#else
#define PFAXGETDEVICESTATUS PFAXGETDEVICESTATUSA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxAbort( IN HANDLE FaxHandle, IN DWORD JobId );
typedef BOOL (WINAPI *PFAXABORT)( IN HANDLE FaxHandle, IN DWORD JobId );
WINFAXAPI BOOL WINAPI FaxGetConfigurationA( IN HANDLE FaxHandle, OUT PFAX_CONFIGURATIONA *FaxConfig ); WINFAXAPI BOOL WINAPI FaxGetConfigurationW( IN HANDLE FaxHandle, OUT PFAX_CONFIGURATIONW *FaxConfig ); #ifdef UNICODE
#define FaxGetConfiguration FaxGetConfigurationW
#else
#define FaxGetConfiguration FaxGetConfigurationA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXGETCONFIGURATIONA)( IN HANDLE FaxHandle, OUT PFAX_CONFIGURATIONA *FaxConfig ); typedef BOOL (WINAPI *PFAXGETCONFIGURATIONW)( IN HANDLE FaxHandle, OUT PFAX_CONFIGURATIONW *FaxConfig ); #ifdef UNICODE
#define PFAXGETCONFIGURATION PFAXGETCONFIGURATIONW
#else
#define PFAXGETCONFIGURATION PFAXGETCONFIGURATIONA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxSetConfigurationA( IN HANDLE FaxHandle, IN const FAX_CONFIGURATIONA *FaxConfig ); WINFAXAPI BOOL WINAPI FaxSetConfigurationW( IN HANDLE FaxHandle, IN const FAX_CONFIGURATIONW *FaxConfig ); #ifdef UNICODE
#define FaxSetConfiguration FaxSetConfigurationW
#else
#define FaxSetConfiguration FaxSetConfigurationA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXSETCONFIGURATIONA)( IN HANDLE FaxHandle, IN const FAX_CONFIGURATIONA *FaxConfig ); typedef BOOL (WINAPI *PFAXSETCONFIGURATIONW)( IN HANDLE FaxHandle, IN const FAX_CONFIGURATIONW *FaxConfig ); #ifdef UNICODE
#define PFAXSETCONFIGURATION PFAXSETCONFIGURATIONW
#else
#define PFAXSETCONFIGURATION PFAXSETCONFIGURATIONA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxGetLoggingCategoriesA( IN HANDLE FaxHandle, OUT PFAX_LOG_CATEGORYA *Categories, OUT LPDWORD NumberCategories ); WINFAXAPI BOOL WINAPI FaxGetLoggingCategoriesW( IN HANDLE FaxHandle, OUT PFAX_LOG_CATEGORYW *Categories, OUT LPDWORD NumberCategories ); #ifdef UNICODE
#define FaxGetLoggingCategories FaxGetLoggingCategoriesW
#else
#define FaxGetLoggingCategories FaxGetLoggingCategoriesA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXGETLOGGINGCATEGORIESA)( IN HANDLE FaxHandle, OUT PFAX_LOG_CATEGORYA *Categories, OUT LPDWORD NumberCategories ); typedef BOOL (WINAPI *PFAXGETLOGGINGCATEGORIESW)( IN HANDLE FaxHandle, OUT PFAX_LOG_CATEGORYW *Categories, OUT LPDWORD NumberCategories ); #ifdef UNICODE
#define PFAXGETLOGGINGCATEGORIES PFAXGETLOGGINGCATEGORIESW
#else
#define PFAXGETLOGGINGCATEGORIES PFAXGETLOGGINGCATEGORIESA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxSetLoggingCategoriesA( IN HANDLE FaxHandle, IN const FAX_LOG_CATEGORYA *Categories, IN DWORD NumberCategories ); WINFAXAPI BOOL WINAPI FaxSetLoggingCategoriesW( IN HANDLE FaxHandle, IN const FAX_LOG_CATEGORYW *Categories, IN DWORD NumberCategories ); #ifdef UNICODE
#define FaxSetLoggingCategories FaxSetLoggingCategoriesW
#else
#define FaxSetLoggingCategories FaxSetLoggingCategoriesA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXSETLOGGINGCATEGORIESA)( IN HANDLE FaxHandle, IN const FAX_LOG_CATEGORYA *Categories, IN DWORD NumberCategories ); typedef BOOL (WINAPI *PFAXSETLOGGINGCATEGORIESW)( IN HANDLE FaxHandle, IN const FAX_LOG_CATEGORYW *Categories, IN DWORD NumberCategories ); #ifdef UNICODE
#define PFAXSETLOGGINGCATEGORIES PFAXSETLOGGINGCATEGORIESW
#else
#define PFAXSETLOGGINGCATEGORIES PFAXSETLOGGINGCATEGORIESA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxEnumPortsA( IN HANDLE FaxHandle, OUT PFAX_PORT_INFOA *PortInfo, OUT LPDWORD PortsReturned ); WINFAXAPI BOOL WINAPI FaxEnumPortsW( IN HANDLE FaxHandle, OUT PFAX_PORT_INFOW *PortInfo, OUT LPDWORD PortsReturned ); #ifdef UNICODE
#define FaxEnumPorts FaxEnumPortsW
#else
#define FaxEnumPorts FaxEnumPortsA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXENUMPORTSA)( IN HANDLE FaxHandle, OUT PFAX_PORT_INFOA *PortInfo, OUT LPDWORD PortsReturned ); typedef BOOL (WINAPI *PFAXENUMPORTSW)( IN HANDLE FaxHandle, OUT PFAX_PORT_INFOW *PortInfo, OUT LPDWORD PortsReturned ); #ifdef UNICODE
#define PFAXENUMPORTS PFAXENUMPORTSW
#else
#define PFAXENUMPORTS PFAXENUMPORTSA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxGetPortA( IN HANDLE FaxPortHandle, OUT PFAX_PORT_INFOA *PortInfo ); WINFAXAPI BOOL WINAPI FaxGetPortW( IN HANDLE FaxPortHandle, OUT PFAX_PORT_INFOW *PortInfo ); #ifdef UNICODE
#define FaxGetPort FaxGetPortW
#else
#define FaxGetPort FaxGetPortA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXGETPORTA)( IN HANDLE FaxPortHandle, OUT PFAX_PORT_INFOA *PortInfo ); typedef BOOL (WINAPI *PFAXGETPORTW)( IN HANDLE FaxPortHandle, OUT PFAX_PORT_INFOW *PortInfo ); #ifdef UNICODE
#define PFAXGETPORT PFAXGETPORTW
#else
#define PFAXGETPORT PFAXGETPORTA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxSetPortA( IN HANDLE FaxPortHandle, IN const FAX_PORT_INFOA *PortInfo ); WINFAXAPI BOOL WINAPI FaxSetPortW( IN HANDLE FaxPortHandle, IN const FAX_PORT_INFOW *PortInfo ); #ifdef UNICODE
#define FaxSetPort FaxSetPortW
#else
#define FaxSetPort FaxSetPortA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXSETPORTA)( IN HANDLE FaxPortHandle, IN const FAX_PORT_INFOA *PortInfo ); typedef BOOL (WINAPI *PFAXSETPORTW)( IN HANDLE FaxPortHandle, IN const FAX_PORT_INFOW *PortInfo ); #ifdef UNICODE
#define PFAXSETPORT PFAXSETPORTW
#else
#define PFAXSETPORT PFAXSETPORTA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxEnumRoutingMethodsA( IN HANDLE FaxPortHandle, OUT PFAX_ROUTING_METHODA *RoutingMethod, OUT LPDWORD MethodsReturned ); WINFAXAPI BOOL WINAPI FaxEnumRoutingMethodsW( IN HANDLE FaxPortHandle, OUT PFAX_ROUTING_METHODW *RoutingMethod, OUT LPDWORD MethodsReturned ); #ifdef UNICODE
#define FaxEnumRoutingMethods FaxEnumRoutingMethodsW
#else
#define FaxEnumRoutingMethods FaxEnumRoutingMethodsA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXENUMROUTINGMETHODSA)( IN HANDLE FaxPortHandle, OUT PFAX_ROUTING_METHODA *RoutingMethod, OUT LPDWORD MethodsReturned ); typedef BOOL (WINAPI *PFAXENUMROUTINGMETHODSW)( IN HANDLE FaxPortHandle, OUT PFAX_ROUTING_METHODW *RoutingMethod, OUT LPDWORD MethodsReturned ); #ifdef UNICODE
#define PFAXENUMROUTINGMETHODS PFAXENUMROUTINGMETHODSW
#else
#define PFAXENUMROUTINGMETHODS PFAXENUMROUTINGMETHODSA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxEnableRoutingMethodA( IN HANDLE FaxPortHandle, IN LPCSTR RoutingGuid, IN BOOL Enabled ); WINFAXAPI BOOL WINAPI FaxEnableRoutingMethodW( IN HANDLE FaxPortHandle, IN LPCWSTR RoutingGuid, IN BOOL Enabled ); #ifdef UNICODE
#define FaxEnableRoutingMethod FaxEnableRoutingMethodW
#else
#define FaxEnableRoutingMethod FaxEnableRoutingMethodA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXENABLEROUTINGMETHODA)( IN HANDLE FaxPortHandle, IN LPCSTR RoutingGuid, IN BOOL Enabled ); typedef BOOL (WINAPI *PFAXENABLEROUTINGMETHODW)( IN HANDLE FaxPortHandle, IN LPCWSTR RoutingGuid, IN BOOL Enabled ); #ifdef UNICODE
#define PFAXENABLEROUTINGMETHOD PFAXENABLEROUTINGMETHODW
#else
#define PFAXENABLEROUTINGMETHOD PFAXENABLEROUTINGMETHODA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxEnumGlobalRoutingInfoA( IN HANDLE FaxHandle, OUT PFAX_GLOBAL_ROUTING_INFOA *RoutingInfo, OUT LPDWORD MethodsReturned ); WINFAXAPI BOOL WINAPI FaxEnumGlobalRoutingInfoW( IN HANDLE FaxHandle, OUT PFAX_GLOBAL_ROUTING_INFOW *RoutingInfo, OUT LPDWORD MethodsReturned ); #ifdef UNICODE
#define FaxEnumGlobalRoutingInfo FaxEnumGlobalRoutingInfoW
#else
#define FaxEnumGlobalRoutingInfo FaxEnumGlobalRoutingInfoA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXENUMGLOBALROUTINGINFOA)( IN HANDLE FaxHandle, OUT PFAX_GLOBAL_ROUTING_INFOA *RoutingInfo, OUT LPDWORD MethodsReturned ); typedef BOOL (WINAPI *PFAXENUMGLOBALROUTINGINFOW)( IN HANDLE FaxHandle, OUT PFAX_GLOBAL_ROUTING_INFOW *RoutingInfo, OUT LPDWORD MethodsReturned ); #ifdef UNICODE
#define PFAXENUMGLOBALROUTINGINFO PFAXENUMGLOBALROUTINGINFOW
#else
#define PFAXENUMGLOBALROUTINGINFO PFAXENUMGLOBALROUTINGINFOA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxSetGlobalRoutingInfoA( IN HANDLE FaxHandle, IN const FAX_GLOBAL_ROUTING_INFOA *RoutingInfo ); WINFAXAPI BOOL WINAPI FaxSetGlobalRoutingInfoW( IN HANDLE FaxHandle, IN const FAX_GLOBAL_ROUTING_INFOW *RoutingInfo ); #ifdef UNICODE
#define FaxSetGlobalRoutingInfo FaxSetGlobalRoutingInfoW
#else
#define FaxSetGlobalRoutingInfo FaxSetGlobalRoutingInfoA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXSETGLOBALROUTINGINFOA)( IN HANDLE FaxPortHandle, IN const FAX_GLOBAL_ROUTING_INFOA *RoutingInfo ); typedef BOOL (WINAPI *PFAXSETGLOBALROUTINGINFOW)( IN HANDLE FaxPortHandle, IN const FAX_GLOBAL_ROUTING_INFOW *RoutingInfo ); #ifdef UNICODE
#define PFAXSETGLOBALROUTINGINFO PFAXSETGLOBALROUTINGINFOW
#else
#define PFAXSETGLOBALROUTINGINFO PFAXSETGLOBALROUTINGINFOA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxGetRoutingInfoA( IN HANDLE FaxPortHandle, IN LPCSTR RoutingGuid, OUT LPBYTE *RoutingInfoBuffer, OUT LPDWORD RoutingInfoBufferSize ); WINFAXAPI BOOL WINAPI FaxGetRoutingInfoW( IN HANDLE FaxPortHandle, IN LPCWSTR RoutingGuid, OUT LPBYTE *RoutingInfoBuffer, OUT LPDWORD RoutingInfoBufferSize ); #ifdef UNICODE
#define FaxGetRoutingInfo FaxGetRoutingInfoW
#else
#define FaxGetRoutingInfo FaxGetRoutingInfoA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXGETROUTINGINFOA)( IN HANDLE FaxPortHandle, IN LPCSTR RoutingGuid, OUT LPBYTE *RoutingInfoBuffer, OUT LPDWORD RoutingInfoBufferSize ); typedef BOOL (WINAPI *PFAXGETROUTINGINFOW)( IN HANDLE FaxPortHandle, IN LPCWSTR RoutingGuid, OUT LPBYTE *RoutingInfoBuffer, OUT LPDWORD RoutingInfoBufferSize ); #ifdef UNICODE
#define PFAXGETROUTINGINFO PFAXGETROUTINGINFOW
#else
#define PFAXGETROUTINGINFO PFAXGETROUTINGINFOA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxSetRoutingInfoA( IN HANDLE FaxPortHandle, IN LPCSTR RoutingGuid, IN const BYTE *RoutingInfoBuffer, IN DWORD RoutingInfoBufferSize ); WINFAXAPI BOOL WINAPI FaxSetRoutingInfoW( IN HANDLE FaxPortHandle, IN LPCWSTR RoutingGuid, IN const BYTE *RoutingInfoBuffer, IN DWORD RoutingInfoBufferSize ); #ifdef UNICODE
#define FaxSetRoutingInfo FaxSetRoutingInfoW
#else
#define FaxSetRoutingInfo FaxSetRoutingInfoA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXSETROUTINGINFOA)( IN HANDLE FaxPortHandle, IN LPCSTR RoutingGuid, IN const BYTE *RoutingInfoBuffer, IN DWORD RoutingInfoBufferSize ); typedef BOOL (WINAPI *PFAXSETROUTINGINFOW)( IN HANDLE FaxPortHandle, IN LPCWSTR RoutingGuid, IN const BYTE *RoutingInfoBuffer, IN DWORD RoutingInfoBufferSize ); #ifdef UNICODE
#define PFAXSETROUTINGINFO PFAXSETROUTINGINFOW
#else
#define PFAXSETROUTINGINFO PFAXSETROUTINGINFOA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxInitializeEventQueue( IN HANDLE FaxHandle, IN HANDLE CompletionPort, IN ULONG_PTR CompletionKey, IN HWND hWnd, IN UINT MessageStart );
typedef BOOL (WINAPI *PFAXINITIALIZEEVENTQUEUE)( IN HANDLE FaxHandle, IN HANDLE CompletionPort, IN ULONG_PTR CompletionKey, IN HWND hWnd, IN UINT MessageStart );
WINFAXAPI VOID WINAPI FaxFreeBuffer( LPVOID Buffer );
typedef VOID (WINAPI *PFAXFREEBUFFER)( LPVOID Buffer );
WINFAXAPI BOOL WINAPI FaxStartPrintJobA( IN LPCSTR PrinterName, IN const FAX_PRINT_INFOA *PrintInfo, OUT LPDWORD FaxJobId, OUT PFAX_CONTEXT_INFOA FaxContextInfo ); WINFAXAPI BOOL WINAPI FaxStartPrintJobW( IN LPCWSTR PrinterName, IN const FAX_PRINT_INFOW *PrintInfo, OUT LPDWORD FaxJobId, OUT PFAX_CONTEXT_INFOW FaxContextInfo ); #ifdef UNICODE
#define FaxStartPrintJob FaxStartPrintJobW
#else
#define FaxStartPrintJob FaxStartPrintJobA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXSTARTPRINTJOBA)( IN LPCSTR PrinterName, IN const FAX_PRINT_INFOA *PrintInfo, OUT LPDWORD FaxJobId, OUT PFAX_CONTEXT_INFOA FaxContextInfo ); typedef BOOL (WINAPI *PFAXSTARTPRINTJOBW)( IN LPCWSTR PrinterName, IN const FAX_PRINT_INFOW *PrintInfo, OUT LPDWORD FaxJobId, OUT PFAX_CONTEXT_INFOW FaxContextInfo ); #ifdef UNICODE
#define PFAXSTARTPRINTJOB PFAXSTARTPRINTJOBW
#else
#define PFAXSTARTPRINTJOB PFAXSTARTPRINTJOBA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxPrintCoverPageA( IN const FAX_CONTEXT_INFOA *FaxContextInfo, IN const FAX_COVERPAGE_INFOA *CoverPageInfo ); WINFAXAPI BOOL WINAPI FaxPrintCoverPageW( IN const FAX_CONTEXT_INFOW *FaxContextInfo, IN const FAX_COVERPAGE_INFOW *CoverPageInfo ); #ifdef UNICODE
#define FaxPrintCoverPage FaxPrintCoverPageW
#else
#define FaxPrintCoverPage FaxPrintCoverPageA
#endif // !UNICODE
typedef BOOL (WINAPI *PFAXPRINTCOVERPAGEA)( IN const FAX_CONTEXT_INFOA *FaxContextInfo, IN const FAX_COVERPAGE_INFOA *CoverPageInfo ); typedef BOOL (WINAPI *PFAXPRINTCOVERPAGEW)( IN const FAX_CONTEXT_INFOW *FaxContextInfo, IN const FAX_COVERPAGE_INFOW *CoverPageInfo ); #ifdef UNICODE
#define PFAXPRINTCOVERPAGE PFAXPRINTCOVERPAGEW
#else
#define PFAXPRINTCOVERPAGE PFAXPRINTCOVERPAGEA
#endif // !UNICODE
WINFAXAPI BOOL WINAPI FaxRegisterServiceProviderW( IN LPCWSTR DeviceProvider, IN LPCWSTR FriendlyName, IN LPCWSTR ImageName, IN LPCWSTR TspName );
#define FaxRegisterServiceProvider FaxRegisterServiceProviderW
typedef BOOL (WINAPI *PFAXREGISTERSERVICEPROVIDERW)( IN LPCWSTR DeviceProvider, IN LPCWSTR FriendlyName, IN LPCWSTR ImageName, IN LPCWSTR TspName ); #define PFAXREGISTERSERVICEPROVIDER PFAXREGISTERSERVICEPROVIDERW
typedef BOOL (CALLBACK *PFAX_ROUTING_INSTALLATION_CALLBACKW)( IN HANDLE FaxHandle, IN LPVOID Context, IN OUT LPWSTR MethodName, IN OUT LPWSTR FriendlyName, IN OUT LPWSTR FunctionName, IN OUT LPWSTR Guid );
#define PFAX_ROUTING_INSTALLATION_CALLBACK PFAX_ROUTING_INSTALLATION_CALLBACKW
WINFAXAPI BOOL WINAPI FaxRegisterRoutingExtensionW( IN HANDLE FaxHandle, IN LPCWSTR ExtensionName, IN LPCWSTR FriendlyName, IN LPCWSTR ImageName, IN PFAX_ROUTING_INSTALLATION_CALLBACKW CallBack, IN LPVOID Context );
#define FaxRegisterRoutingExtension FaxRegisterRoutingExtensionW
typedef BOOL (WINAPI *PFAXREGISTERROUTINGEXTENSIONW)( IN HANDLE FaxHandle, IN LPCWSTR ExtensionName, IN LPCWSTR FriendlyName, IN LPCWSTR ImageName, IN PFAX_ROUTING_INSTALLATION_CALLBACKW CallBack, IN LPVOID Context );
#define PFAXREGISTERROUTINGEXTENSION PFAXREGISTERROUTINGEXTENSIONW
WINFAXAPI BOOL WINAPI FaxAccessCheck( IN HANDLE FaxHandle, IN DWORD AccessMask );
typedef BOOL (WINAPI *PFAXACCESSCHECK)( IN HANDLE FaxHandle, IN DWORD AccessMask );
//
// Win2K Fax compatibility - Specific Fax Access Rights
//
#define FAX_JOB_SUBMIT 0x0003
#define FAX_JOB_QUERY 0x0008
#define FAX_CONFIG_QUERY 0x0020
#define FAX_CONFIG_SET 0x0060
#define FAX_PORT_QUERY 0x0020
#define FAX_PORT_SET 0x0060
#define FAX_JOB_MANAGE 0x0018
//
// Win2K Fax compatibility - Generic Fax Access Rights
//
#define FAX_READ (FAX_JOB_QUERY |\
FAX_CONFIG_QUERY |\ FAX_PORT_QUERY)
#define FAX_WRITE (FAX_JOB_SUBMIT)
#define FAX_ALL_ACCESS (FAX_JOB_SUBMIT |\
FAX_JOB_QUERY |\ FAX_CONFIG_QUERY |\ FAX_CONFIG_SET |\ FAX_PORT_QUERY |\ FAX_PORT_SET |\ FAX_JOB_MANAGE)
#pragma pack (pop,EnterWinFax)
#ifdef __cplusplus
} #endif
#endif
|