4184 lines
128 KiB
C
4184 lines
128 KiB
C
|
|
/*++
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
winfax.h
|
|
|
|
Abstract:
|
|
|
|
This module contains the WIN32 FAX APIs.
|
|
|
|
--*/
|
|
|
|
|
|
|
|
#ifndef _FAXAPIP_
|
|
#define _FAXAPIP_
|
|
|
|
|
|
#ifndef MIDL_PASS
|
|
#include <tapi.h>
|
|
#endif
|
|
|
|
#if !defined(_WINFAX_)
|
|
#define WINFAXAPI DECLSPEC_IMPORT
|
|
#else
|
|
#define WINFAXAPI
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//
|
|
// FAX ERROR CODES
|
|
//
|
|
|
|
#define FAX_ERR_START 7001L // First fax specific error code
|
|
|
|
#define FAX_ERR_SRV_OUTOFMEMORY 7001L
|
|
#define FAX_ERR_GROUP_NOT_FOUND 7002L
|
|
#define FAX_ERR_BAD_GROUP_CONFIGURATION 7003L
|
|
#define FAX_ERR_GROUP_IN_USE 7004L
|
|
#define FAX_ERR_RULE_NOT_FOUND 7005L
|
|
#define FAX_ERR_NOT_NTFS 7006L
|
|
#define FAX_ERR_DIRECTORY_IN_USE 7007L
|
|
#define FAX_ERR_FILE_ACCESS_DENIED 7008L
|
|
#define FAX_ERR_MESSAGE_NOT_FOUND 7009L
|
|
#define FAX_ERR_DEVICE_NUM_LIMIT_EXCEEDED 7010L
|
|
#define FAX_ERR_NOT_SUPPORTED_ON_THIS_SKU 7011L
|
|
#define FAX_ERR_VERSION_MISMATCH 7012L // Fax client/server versions mismtach
|
|
|
|
#define FAX_ERR_END 7012L // Last fax specific error code
|
|
|
|
|
|
//
|
|
// MessageId: FAX_E_SRV_OUTOFMEMORY
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The fax server failed to allocate memory.
|
|
//
|
|
#define FAX_E_SRV_OUTOFMEMORY MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_SRV_OUTOFMEMORY)
|
|
|
|
//
|
|
// MessageId: FAX_E_GROUP_NOT_FOUND
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The fax server failed to locate an outbound routing group by name.
|
|
//
|
|
#define FAX_E_GROUP_NOT_FOUND MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_GROUP_NOT_FOUND)
|
|
|
|
//
|
|
// MessageId: FAX_E_BAD_GROUP_CONFIGURATION
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The fax server encountered an outbound routing group with bad configuration.
|
|
//
|
|
#define FAX_E_BAD_GROUP_CONFIGURATION MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_BAD_GROUP_CONFIGURATION)
|
|
|
|
//
|
|
// MessageId: FAX_E_GROUP_IN_USE
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The fax server cannot remove an outbound routing group because it is in use by one or more outbound routing rules.
|
|
//
|
|
#define FAX_E_GROUP_IN_USE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_GROUP_IN_USE)
|
|
|
|
//
|
|
// MessageId: FAX_E_RULE_NOT_FOUND
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The fax server failed to locate an outbound routing rule by country code and area code.
|
|
//
|
|
#define FAX_E_RULE_NOT_FOUND MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_RULE_NOT_FOUND)
|
|
|
|
//
|
|
// MessageId: FAX_E_NOT_NTFS
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The fax server cannot set an archive folder to a non-NTFS partition.
|
|
//
|
|
#define FAX_E_NOT_NTFS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_NOT_NTFS)
|
|
|
|
//
|
|
// MessageId: FAX_E_DIRECTORY_IN_USE
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The fax server cannot use the same folder for both the inbox and the sent-items archives.
|
|
//
|
|
#define FAX_E_DIRECTORY_IN_USE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_DIRECTORY_IN_USE)
|
|
|
|
//
|
|
// MessageId: FAX_E_FILE_ACCESS_DENIED
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The fax server cannot access the specified file or folder.
|
|
//
|
|
#define FAX_E_FILE_ACCESS_DENIED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_FILE_ACCESS_DENIED)
|
|
|
|
//
|
|
// MessageId: FAX_E_MESSAGE_NOT_FOUND
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The fax server cannot find the job or message by its ID.
|
|
//
|
|
#define FAX_E_MESSAGE_NOT_FOUND MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_MESSAGE_NOT_FOUND)
|
|
|
|
//
|
|
// MessageId: FAX_E_DEVICE_NUM_LIMIT_EXCEEDED
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The fax server cannot complete the operation because the number of active fax devices allowed for this version of Windows was exceeded.
|
|
//
|
|
#define FAX_E_DEVICE_NUM_LIMIT_EXCEEDED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_DEVICE_NUM_LIMIT_EXCEEDED)
|
|
|
|
//
|
|
// MessageId: FAX_E_NOT_SUPPORTED_ON_THIS_SKU
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The fax server cannot complete the operation because it is not supported for this version of Windows.
|
|
//
|
|
#define FAX_E_NOT_SUPPORTED_ON_THIS_SKU MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_NOT_SUPPORTED_ON_THIS_SKU)
|
|
|
|
//
|
|
// MessageId: FAX_E_VERSION_MISMATCH
|
|
//
|
|
// MessageText:
|
|
//
|
|
// The fax server API version does not support the requested operation.
|
|
//
|
|
#define FAX_E_VERSION_MISMATCH MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, FAX_ERR_VERSION_MISMATCH)
|
|
|
|
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 Reserved; // Reserved; must be NULL
|
|
} 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 Reserved; // Reserved; must be NULL
|
|
} 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
|
|
//
|
|
|
|
//
|
|
// NOTICE: JT_* and JS_* are different from the Win2K public constants.
|
|
// If you use WinFax.h and/or the Win2K COM interfaces, you get the Win2K constants.
|
|
// If you use fxsapip.h, you get the Whistler constants.
|
|
//
|
|
// NEVER MIX THEM !!!
|
|
//
|
|
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 (legacy support only)
|
|
JT_BROADCAST = 0x0020 // Outgoing broadcast message
|
|
} 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) thru MAPI / SMTP
|
|
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) thru MAPI / SMTP
|
|
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 // Automatically receive faxes
|
|
#define FPF_SEND 0x00000002
|
|
#define FPF_VIRTUAL 0x00000004
|
|
|
|
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 (SMTP)
|
|
DRT_UNUSED = 0x0002, // Reserved
|
|
DRT_MSGBOX = 0x0004, // Send receipt by a message box
|
|
DRT_GRP_PARENT = 0x0008, // Send a single receipt for a broadcast job
|
|
DRT_ATTACH_FAX = 0x0010 // Attach the fax tiff file to the receipt
|
|
} FAX_ENUM_DELIVERY_REPORT_TYPES;
|
|
|
|
|
|
#define DRT_ALL (DRT_EMAIL | DRT_MSGBOX) // All possible delivery report types
|
|
#define DRT_MODIFIERS (DRT_GRP_PARENT | DRT_ATTACH_FAX) // All state modifiers
|
|
|
|
|
|
//
|
|
// the reserved fields are private data used
|
|
// by the fax monitor and winfax.
|
|
//
|
|
//
|
|
// Reserved[0] == 0xffffffff
|
|
// Reserved[1] == Print job id
|
|
//
|
|
// Reserved[0] == 0xfffffffe start of a broadcast job
|
|
//
|
|
|
|
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) thru MAPI / SMTP
|
|
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) thru MAPI / SMTP
|
|
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 Reserved; // Reserved; must be NULL
|
|
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 Reserved; // Reserved; must be NULL
|
|
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
|
|
|
|
typedef BOOL
|
|
(WINAPI *PFAXSENDDOCUMENTFORBROADCASTA)(
|
|
IN HANDLE FaxHandle,
|
|
IN LPCSTR FileName,
|
|
OUT LPDWORD FaxJobId,
|
|
IN PFAX_RECIPIENT_CALLBACKA FaxRecipientCallback,
|
|
IN LPVOID Context
|
|
);
|
|
typedef BOOL
|
|
(WINAPI *PFAXSENDDOCUMENTFORBROADCASTW)(
|
|
IN HANDLE FaxHandle,
|
|
IN LPCWSTR FileName,
|
|
OUT LPDWORD FaxJobId,
|
|
IN PFAX_RECIPIENT_CALLBACKW FaxRecipientCallback,
|
|
IN LPVOID Context
|
|
);
|
|
#ifdef UNICODE
|
|
#define PFAXSENDDOCUMENTFORBROADCAST PFAXSENDDOCUMENTFORBROADCASTW
|
|
#else
|
|
#define PFAXSENDDOCUMENTFORBROADCAST PFAXSENDDOCUMENTFORBROADCASTA
|
|
#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
|
|
FaxRelease(
|
|
IN HANDLE FaxHandle
|
|
);
|
|
|
|
typedef BOOL
|
|
(WINAPI *PFAXRELEASE)(
|
|
IN HANDLE FaxHandle
|
|
);
|
|
|
|
BOOL
|
|
FXSAPIInitialize(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
FXSAPIFree(
|
|
VOID
|
|
);
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxStartPrintJob2A
|
|
(
|
|
IN LPCSTR PrinterName,
|
|
IN const FAX_PRINT_INFOA *PrintInfo,
|
|
IN short TiffRes,
|
|
OUT LPDWORD FaxJobId,
|
|
OUT PFAX_CONTEXT_INFOA FaxContextInfo
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxStartPrintJob2W
|
|
(
|
|
IN LPCWSTR PrinterName,
|
|
IN const FAX_PRINT_INFOW *PrintInfo,
|
|
IN short TiffRes,
|
|
OUT LPDWORD FaxJobId,
|
|
OUT PFAX_CONTEXT_INFOW FaxContextInfo
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxStartPrintJob2 FaxStartPrintJob2W
|
|
#else
|
|
#define FaxStartPrintJob2 FaxStartPrintJob2A
|
|
#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
|
|
FaxUnregisterRoutingExtensionA(
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCSTR lpctstrExtensionName
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxUnregisterRoutingExtensionW(
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCWSTR lpctstrExtensionName
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxUnregisterRoutingExtension FaxUnregisterRoutingExtensionW
|
|
#else
|
|
#define FaxUnregisterRoutingExtension FaxUnregisterRoutingExtensionA
|
|
#endif // !UNICODE
|
|
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetInstallType(
|
|
IN HANDLE FaxHandle,
|
|
OUT LPDWORD InstallType,
|
|
OUT LPDWORD InstalledPlatforms,
|
|
OUT LPDWORD ProductType
|
|
);
|
|
|
|
typedef BOOL
|
|
(WINAPI *PFAXGETINSTALLTYPE)(
|
|
IN HANDLE FaxHandle,
|
|
OUT LPDWORD InstallType,
|
|
OUT LPDWORD InstalledPlatforms,
|
|
OUT LPDWORD ProductType
|
|
);
|
|
|
|
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxAccessCheck(
|
|
IN HANDLE FaxHandle,
|
|
IN DWORD AccessMask
|
|
);
|
|
|
|
typedef BOOL
|
|
(WINAPI *PFAXACCESSCHECK)(
|
|
IN HANDLE FaxHandle,
|
|
IN DWORD AccessMask
|
|
);
|
|
|
|
//
|
|
// Fax Specific Access Rights
|
|
//
|
|
|
|
#define FAX_JOB_SUBMIT (0x0001)
|
|
#define FAX_JOB_QUERY (0x0002)
|
|
#define FAX_CONFIG_QUERY (0x0004)
|
|
#define FAX_CONFIG_SET (0x0008)
|
|
#define FAX_PORT_QUERY (0x0010)
|
|
#define FAX_PORT_SET (0x0020)
|
|
#define FAX_JOB_MANAGE (0x0040)
|
|
|
|
#define FAX_READ (STANDARD_RIGHTS_READ |\
|
|
FAX_JOB_QUERY |\
|
|
FAX_CONFIG_QUERY |\
|
|
FAX_PORT_QUERY)
|
|
|
|
#define FAX_WRITE (STANDARD_RIGHTS_WRITE |\
|
|
FAX_JOB_SUBMIT )
|
|
|
|
#define FAX_ALL_ACCESS (STANDARD_RIGHTS_ALL |\
|
|
FAX_JOB_SUBMIT |\
|
|
FAX_JOB_QUERY |\
|
|
FAX_CONFIG_QUERY |\
|
|
FAX_CONFIG_SET |\
|
|
FAX_PORT_QUERY |\
|
|
FAX_PORT_SET |\
|
|
FAX_JOB_MANAGE)
|
|
|
|
|
|
//************************************
|
|
//* Extended API Functions
|
|
//************************************
|
|
|
|
#define MAX_FAX_STRING_LEN MAX_PATH - 2
|
|
#define MAX_DIR_PATH 248
|
|
|
|
//
|
|
// Outbound routing defines
|
|
//
|
|
#define ROUTING_RULE_COUNTRY_CODE_ANY 0 // Outbound routing rule - Any country dialing code
|
|
#define ROUTING_RULE_AREA_CODE_ANY 0 // Outbound routing rule - Any area dialing code
|
|
|
|
#define MAX_ROUTING_GROUP_NAME 128
|
|
#define ROUTING_GROUP_ALL_DEVICESW L"<All devices>"
|
|
#define ROUTING_GROUP_ALL_DEVICESA "<All devices>"
|
|
|
|
#ifdef UNICODE
|
|
#define ROUTING_GROUP_ALL_DEVICES ROUTING_GROUP_ALL_DEVICESW
|
|
#else
|
|
#define ROUTING_GROUP_ALL_DEVICES ROUTING_GROUP_ALL_DEVICESA;
|
|
#endif // UNICODE
|
|
|
|
|
|
//
|
|
// Activity logging defines
|
|
//
|
|
#define ACTIVITY_LOG_INBOX_FILE TEXT("InboxLOG.txt")
|
|
#define ACTIVITY_LOG_OUTBOX_FILE TEXT("OutboxLOG.txt")
|
|
|
|
//
|
|
// Archive defines
|
|
//
|
|
#define FAX_ARCHIVE_FOLDER_INVALID_SIZE MAKELONGLONG(0xffffffff, 0xffffffff)
|
|
#define MAX_ARCHIVE_FOLDER_PATH 180
|
|
|
|
//
|
|
// New job status codes
|
|
//
|
|
#define JS_COMPLETED 0x00000100
|
|
#define JS_CANCELED 0x00000200
|
|
#define JS_CANCELING 0x00000400
|
|
#define JS_ROUTING 0x00000800
|
|
|
|
|
|
//
|
|
// Extended job status defines
|
|
//
|
|
|
|
#define JS_EX_DISCONNECTED 0x00000001
|
|
#define JS_EX_INITIALIZING 0x00000002
|
|
#define JS_EX_DIALING 0x00000003
|
|
#define JS_EX_TRANSMITTING 0x00000004
|
|
#define JS_EX_ANSWERED 0x00000005
|
|
#define JS_EX_RECEIVING 0x00000006
|
|
#define JS_EX_LINE_UNAVAILABLE 0x00000007
|
|
#define JS_EX_BUSY 0x00000008
|
|
#define JS_EX_NO_ANSWER 0x00000009
|
|
#define JS_EX_BAD_ADDRESS 0x0000000A
|
|
#define JS_EX_NO_DIAL_TONE 0x0000000B
|
|
#define JS_EX_FATAL_ERROR 0x0000000C
|
|
#define JS_EX_CALL_DELAYED 0x0000000D
|
|
#define JS_EX_CALL_BLACKLISTED 0x0000000E
|
|
#define JS_EX_NOT_FAX_CALL 0x0000000F
|
|
#define JS_EX_PARTIALLY_RECEIVED 0x00000010
|
|
#define JS_EX_HANDLED 0x00000011
|
|
|
|
#define FAX_API_VER_0_MAX_JS_EX JS_EX_HANDLED // API version 0 was only aware of extended status codes up to JS_EX_HANDLED
|
|
|
|
#define JS_EX_CALL_COMPLETED 0x00000012
|
|
#define JS_EX_CALL_ABORTED 0x00000013
|
|
|
|
#define FAX_API_VER_1_MAX_JS_EX JS_EX_CALL_ABORTED // API version 0 was only aware of extended status codes up to JS_EX_CALL_ABORTED
|
|
|
|
#define JS_EX_PROPRIETARY 0x01000000
|
|
|
|
//
|
|
// Available job operations
|
|
//
|
|
typedef enum
|
|
{
|
|
FAX_JOB_OP_VIEW = 0x0001,
|
|
FAX_JOB_OP_PAUSE = 0x0002,
|
|
FAX_JOB_OP_RESUME = 0x0004,
|
|
FAX_JOB_OP_RESTART = 0x0008,
|
|
FAX_JOB_OP_DELETE = 0x0010,
|
|
FAX_JOB_OP_RECIPIENT_INFO = 0x0020,
|
|
FAX_JOB_OP_SENDER_INFO = 0x0040
|
|
} FAX_ENUM_JOB_OP;
|
|
|
|
//************************************
|
|
//* Getting / Settings the queue state
|
|
//************************************
|
|
|
|
typedef enum
|
|
{
|
|
FAX_INCOMING_BLOCKED = 0x0001,
|
|
FAX_OUTBOX_BLOCKED = 0x0002,
|
|
FAX_OUTBOX_PAUSED = 0x0004
|
|
} FAX_ENUM_QUEUE_STATE;
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetQueueStates (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PDWORD pdwQueueStates
|
|
);
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetQueue (
|
|
IN HANDLE hFaxHandle,
|
|
IN CONST DWORD dwQueueStates
|
|
);
|
|
|
|
//************************************************
|
|
//* Getting / Setting the receipts configuration
|
|
//************************************************
|
|
|
|
typedef enum
|
|
{
|
|
FAX_SMTP_AUTH_ANONYMOUS,
|
|
FAX_SMTP_AUTH_BASIC,
|
|
FAX_SMTP_AUTH_NTLM
|
|
} FAX_ENUM_SMTP_AUTH_OPTIONS;
|
|
|
|
typedef struct _FAX_RECEIPTS_CONFIGA
|
|
{
|
|
DWORD dwSizeOfStruct; // For version checks
|
|
DWORD dwAllowedReceipts; // Any combination of DRT_EMAIL and DRT_MSGBOX
|
|
FAX_ENUM_SMTP_AUTH_OPTIONS SMTPAuthOption; // SMTP server authentication type
|
|
LPSTR lptstrReserved; // Reserved; must be NULL
|
|
LPSTR lptstrSMTPServer; // SMTP server name
|
|
DWORD dwSMTPPort; // SMTP port number
|
|
LPSTR lptstrSMTPFrom; // SMTP sender address
|
|
LPSTR lptstrSMTPUserName; // SMTP user name (for authenticated connections)
|
|
LPSTR lptstrSMTPPassword; // SMTP password (for authenticated connections)
|
|
// This value is always NULL on get and may be NULL
|
|
// on set (won't be written in the server).
|
|
BOOL bIsToUseForMSRouteThroughEmailMethod;
|
|
} FAX_RECEIPTS_CONFIGA, *PFAX_RECEIPTS_CONFIGA;
|
|
typedef struct _FAX_RECEIPTS_CONFIGW
|
|
{
|
|
DWORD dwSizeOfStruct; // For version checks
|
|
DWORD dwAllowedReceipts; // Any combination of DRT_EMAIL and DRT_MSGBOX
|
|
FAX_ENUM_SMTP_AUTH_OPTIONS SMTPAuthOption; // SMTP server authentication type
|
|
LPWSTR lptstrReserved; // Reserved; must be NULL
|
|
LPWSTR lptstrSMTPServer; // SMTP server name
|
|
DWORD dwSMTPPort; // SMTP port number
|
|
LPWSTR lptstrSMTPFrom; // SMTP sender address
|
|
LPWSTR lptstrSMTPUserName; // SMTP user name (for authenticated connections)
|
|
LPWSTR lptstrSMTPPassword; // SMTP password (for authenticated connections)
|
|
// This value is always NULL on get and may be NULL
|
|
// on set (won't be written in the server).
|
|
BOOL bIsToUseForMSRouteThroughEmailMethod;
|
|
} FAX_RECEIPTS_CONFIGW, *PFAX_RECEIPTS_CONFIGW;
|
|
#ifdef UNICODE
|
|
typedef FAX_RECEIPTS_CONFIGW FAX_RECEIPTS_CONFIG;
|
|
typedef PFAX_RECEIPTS_CONFIGW PFAX_RECEIPTS_CONFIG;
|
|
#else
|
|
typedef FAX_RECEIPTS_CONFIGA FAX_RECEIPTS_CONFIG;
|
|
typedef PFAX_RECEIPTS_CONFIGA PFAX_RECEIPTS_CONFIG;
|
|
#endif // UNICODE
|
|
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetReceiptsConfigurationA (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_RECEIPTS_CONFIGA *ppReceipts
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetReceiptsConfigurationW (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_RECEIPTS_CONFIGW *ppReceipts
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxGetReceiptsConfiguration FaxGetReceiptsConfigurationW
|
|
#else
|
|
#define FaxGetReceiptsConfiguration FaxGetReceiptsConfigurationA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetReceiptsConfigurationA (
|
|
IN HANDLE hFaxHandle,
|
|
IN CONST PFAX_RECEIPTS_CONFIGA pReceipts
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetReceiptsConfigurationW (
|
|
IN HANDLE hFaxHandle,
|
|
IN CONST PFAX_RECEIPTS_CONFIGW pReceipts
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxSetReceiptsConfiguration FaxSetReceiptsConfigurationW
|
|
#else
|
|
#define FaxSetReceiptsConfiguration FaxSetReceiptsConfigurationA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetReceiptsOptions (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PDWORD pdwReceiptsOptions // Combination of DRT_EMAIL and DRT_MSGBOX
|
|
);
|
|
|
|
//********************************************
|
|
//* Server version
|
|
//********************************************
|
|
|
|
typedef struct _FAX_VERSION
|
|
{
|
|
DWORD dwSizeOfStruct; // Size of this structure
|
|
BOOL bValid; // Is version valid?
|
|
WORD wMajorVersion;
|
|
WORD wMinorVersion;
|
|
WORD wMajorBuildNumber;
|
|
WORD wMinorBuildNumber;
|
|
DWORD dwFlags; // Combination of FAX_VER_FLAG_*
|
|
} FAX_VERSION, *PFAX_VERSION;
|
|
|
|
|
|
typedef enum
|
|
{
|
|
FAX_VER_FLAG_CHECKED = 0x00000001, // File was built in debug mode
|
|
FAX_VER_FLAG_EVALUATION = 0x00000002 // Evaluation build
|
|
} FAX_VERSION_FLAGS;
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetVersion (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_VERSION pVersion
|
|
);
|
|
|
|
#define FAX_API_VERSION_0 0x00000000 // BOS/SBS 2000 Fax Server API (0.0)
|
|
#define FAX_API_VERSION_1 0x00010000 // Windows XP Fax Server API (1.0)
|
|
|
|
//
|
|
// NOTICE: Change this value whenever a new API version is introduced.
|
|
//
|
|
#define CURRENT_FAX_API_VERSION FAX_API_VERSION_1
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetReportedServerAPIVersion (
|
|
IN HANDLE hFaxHandle,
|
|
OUT LPDWORD lpdwReportedServerAPIVersion
|
|
);
|
|
|
|
//********************************************
|
|
//* Activity logging
|
|
//********************************************
|
|
|
|
typedef struct _FAX_ACTIVITY_LOGGING_CONFIGA
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
BOOL bLogIncoming;
|
|
BOOL bLogOutgoing;
|
|
LPSTR lptstrDBPath;
|
|
} FAX_ACTIVITY_LOGGING_CONFIGA, *PFAX_ACTIVITY_LOGGING_CONFIGA;
|
|
typedef struct _FAX_ACTIVITY_LOGGING_CONFIGW
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
BOOL bLogIncoming;
|
|
BOOL bLogOutgoing;
|
|
LPWSTR lptstrDBPath;
|
|
} FAX_ACTIVITY_LOGGING_CONFIGW, *PFAX_ACTIVITY_LOGGING_CONFIGW;
|
|
#ifdef UNICODE
|
|
typedef FAX_ACTIVITY_LOGGING_CONFIGW FAX_ACTIVITY_LOGGING_CONFIG;
|
|
typedef PFAX_ACTIVITY_LOGGING_CONFIGW PFAX_ACTIVITY_LOGGING_CONFIG;
|
|
#else
|
|
typedef FAX_ACTIVITY_LOGGING_CONFIGA FAX_ACTIVITY_LOGGING_CONFIG;
|
|
typedef PFAX_ACTIVITY_LOGGING_CONFIGA PFAX_ACTIVITY_LOGGING_CONFIG;
|
|
#endif // UNICODE
|
|
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetActivityLoggingConfigurationA (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_ACTIVITY_LOGGING_CONFIGA *ppActivLogCfg
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetActivityLoggingConfigurationW (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_ACTIVITY_LOGGING_CONFIGW *ppActivLogCfg
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxGetActivityLoggingConfiguration FaxGetActivityLoggingConfigurationW
|
|
#else
|
|
#define FaxGetActivityLoggingConfiguration FaxGetActivityLoggingConfigurationA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetActivityLoggingConfigurationA (
|
|
IN HANDLE hFaxHandle,
|
|
IN CONST PFAX_ACTIVITY_LOGGING_CONFIGA pActivLogCfg
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetActivityLoggingConfigurationW (
|
|
IN HANDLE hFaxHandle,
|
|
IN CONST PFAX_ACTIVITY_LOGGING_CONFIGW pActivLogCfg
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxSetActivityLoggingConfiguration FaxSetActivityLoggingConfigurationW
|
|
#else
|
|
#define FaxSetActivityLoggingConfiguration FaxSetActivityLoggingConfigurationA
|
|
#endif // !UNICODE
|
|
|
|
//********************************************
|
|
//* Outbox configuration
|
|
//********************************************
|
|
|
|
typedef struct _FAX_OUTBOX_CONFIG
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
BOOL bAllowPersonalCP;
|
|
BOOL bUseDeviceTSID;
|
|
DWORD dwRetries;
|
|
DWORD dwRetryDelay;
|
|
FAX_TIME dtDiscountStart;
|
|
FAX_TIME dtDiscountEnd;
|
|
DWORD dwAgeLimit;
|
|
BOOL bBranding;
|
|
} FAX_OUTBOX_CONFIG, *PFAX_OUTBOX_CONFIG;
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetOutboxConfiguration (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_OUTBOX_CONFIG *ppOutboxCfg
|
|
);
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetOutboxConfiguration (
|
|
IN HANDLE hFaxHandle,
|
|
IN CONST PFAX_OUTBOX_CONFIG pOutboxCfg
|
|
);
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetPersonalCoverPagesOption (
|
|
IN HANDLE hFaxHandle,
|
|
OUT LPBOOL lpbPersonalCPAllowed
|
|
);
|
|
|
|
//********************************************
|
|
//* Archive configuration
|
|
//********************************************
|
|
|
|
typedef enum
|
|
{
|
|
FAX_MESSAGE_FOLDER_INBOX,
|
|
FAX_MESSAGE_FOLDER_SENTITEMS,
|
|
FAX_MESSAGE_FOLDER_QUEUE
|
|
} FAX_ENUM_MESSAGE_FOLDER;
|
|
|
|
typedef struct _FAX_ARCHIVE_CONFIGA
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
BOOL bUseArchive;
|
|
LPSTR lpcstrFolder;
|
|
BOOL bSizeQuotaWarning;
|
|
DWORD dwSizeQuotaHighWatermark;
|
|
DWORD dwSizeQuotaLowWatermark;
|
|
DWORD dwAgeLimit;
|
|
DWORDLONG dwlArchiveSize;
|
|
} FAX_ARCHIVE_CONFIGA, *PFAX_ARCHIVE_CONFIGA;
|
|
typedef struct _FAX_ARCHIVE_CONFIGW
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
BOOL bUseArchive;
|
|
LPWSTR lpcstrFolder;
|
|
BOOL bSizeQuotaWarning;
|
|
DWORD dwSizeQuotaHighWatermark;
|
|
DWORD dwSizeQuotaLowWatermark;
|
|
DWORD dwAgeLimit;
|
|
DWORDLONG dwlArchiveSize;
|
|
} FAX_ARCHIVE_CONFIGW, *PFAX_ARCHIVE_CONFIGW;
|
|
#ifdef UNICODE
|
|
typedef FAX_ARCHIVE_CONFIGW FAX_ARCHIVE_CONFIG;
|
|
typedef PFAX_ARCHIVE_CONFIGW PFAX_ARCHIVE_CONFIG;
|
|
#else
|
|
typedef FAX_ARCHIVE_CONFIGA FAX_ARCHIVE_CONFIG;
|
|
typedef PFAX_ARCHIVE_CONFIGA PFAX_ARCHIVE_CONFIG;
|
|
#endif // UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetArchiveConfigurationA (
|
|
IN HANDLE hFaxHandle,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
OUT PFAX_ARCHIVE_CONFIGA *ppArchiveCfg
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetArchiveConfigurationW (
|
|
IN HANDLE hFaxHandle,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
OUT PFAX_ARCHIVE_CONFIGW *ppArchiveCfg
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxGetArchiveConfiguration FaxGetArchiveConfigurationW
|
|
#else
|
|
#define FaxGetArchiveConfiguration FaxGetArchiveConfigurationA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetArchiveConfigurationA (
|
|
IN HANDLE hFaxHandle,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
IN CONST PFAX_ARCHIVE_CONFIGA pArchiveCfg
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetArchiveConfigurationW (
|
|
IN HANDLE hFaxHandle,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
IN CONST PFAX_ARCHIVE_CONFIGW pArchiveCfg
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxSetArchiveConfiguration FaxSetArchiveConfigurationW
|
|
#else
|
|
#define FaxSetArchiveConfiguration FaxSetArchiveConfigurationA
|
|
#endif // !UNICODE
|
|
|
|
//********************************************
|
|
//* Server activity
|
|
//********************************************
|
|
|
|
typedef struct _FAX_SERVER_ACTIVITY
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwIncomingMessages;
|
|
DWORD dwRoutingMessages;
|
|
DWORD dwOutgoingMessages;
|
|
DWORD dwDelegatedOutgoingMessages;
|
|
DWORD dwQueuedMessages;
|
|
DWORD dwErrorEvents;
|
|
DWORD dwWarningEvents;
|
|
DWORD dwInformationEvents;
|
|
} FAX_SERVER_ACTIVITY, *PFAX_SERVER_ACTIVITY;
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetServerActivity (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_SERVER_ACTIVITY pServerActivity
|
|
);
|
|
|
|
//********************************************
|
|
//* Queue jobs
|
|
//********************************************
|
|
|
|
typedef enum
|
|
{
|
|
FAX_PRIORITY_TYPE_LOW,
|
|
FAX_PRIORITY_TYPE_NORMAL,
|
|
FAX_PRIORITY_TYPE_HIGH
|
|
} FAX_ENUM_PRIORITY_TYPE;
|
|
|
|
#define FAX_PRIORITY_TYPE_DEFAULT FAX_PRIORITY_TYPE_LOW
|
|
|
|
typedef enum
|
|
{
|
|
FAX_JOB_FIELD_JOB_ID = 0x00000001,
|
|
FAX_JOB_FIELD_TYPE = 0x00000002,
|
|
FAX_JOB_FIELD_QUEUE_STATUS = 0x00000004,
|
|
FAX_JOB_FIELD_STATUS_EX = 0x00000008,
|
|
FAX_JOB_FIELD_SIZE = 0x00000010,
|
|
FAX_JOB_FIELD_PAGE_COUNT = 0x00000020,
|
|
FAX_JOB_FIELD_CURRENT_PAGE = 0x00000040,
|
|
FAX_JOB_FIELD_RECIPIENT_PROFILE = 0x00000080,
|
|
FAX_JOB_FIELD_SCHEDULE_TIME = 0x00000100,
|
|
FAX_JOB_FIELD_ORIGINAL_SCHEDULE_TIME = 0x00000200,
|
|
FAX_JOB_FIELD_SUBMISSION_TIME = 0x00000400,
|
|
FAX_JOB_FIELD_TRANSMISSION_START_TIME = 0x00000800,
|
|
FAX_JOB_FIELD_TRANSMISSION_END_TIME = 0x00001000,
|
|
FAX_JOB_FIELD_PRIORITY = 0x00002000,
|
|
FAX_JOB_FIELD_RETRIES = 0x00004000,
|
|
FAX_JOB_FIELD_DELIVERY_REPORT_TYPE = 0x00008000,
|
|
FAX_JOB_FIELD_SENDER_PROFILE = 0x00010000,
|
|
FAX_JOB_FIELD_STATUS_SUB_STRUCT = 0x00020000,
|
|
FAX_JOB_FIELD_DEVICE_ID = 0x00040000,
|
|
FAX_JOB_FIELD_MESSAGE_ID = 0x00080000,
|
|
FAX_JOB_FIELD_BROADCAST_ID = 0x00010000
|
|
} FAX_ENUM_JOB_FIELDS;
|
|
|
|
typedef struct _FAX_JOB_STATUSA
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwValidityMask;
|
|
DWORD dwJobID;
|
|
DWORD dwJobType;
|
|
DWORD dwQueueStatus;
|
|
DWORD dwExtendedStatus;
|
|
LPCSTR lpctstrExtendedStatus;
|
|
DWORD dwSize;
|
|
DWORD dwPageCount;
|
|
DWORD dwCurrentPage;
|
|
LPCSTR lpctstrTsid;
|
|
LPCSTR lpctstrCsid;
|
|
SYSTEMTIME tmScheduleTime;
|
|
SYSTEMTIME tmTransmissionStartTime;
|
|
SYSTEMTIME tmTransmissionEndTime;
|
|
DWORD dwDeviceID;
|
|
LPCSTR lpctstrDeviceName;
|
|
DWORD dwRetries;
|
|
LPCSTR lpctstrCallerID;
|
|
LPCSTR lpctstrRoutingInfo;
|
|
DWORD dwAvailableJobOperations;
|
|
} FAX_JOB_STATUSA, *PFAX_JOB_STATUSA;
|
|
typedef struct _FAX_JOB_STATUSW
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwValidityMask;
|
|
DWORD dwJobID;
|
|
DWORD dwJobType;
|
|
DWORD dwQueueStatus;
|
|
DWORD dwExtendedStatus;
|
|
LPCWSTR lpctstrExtendedStatus;
|
|
DWORD dwSize;
|
|
DWORD dwPageCount;
|
|
DWORD dwCurrentPage;
|
|
LPCWSTR lpctstrTsid;
|
|
LPCWSTR lpctstrCsid;
|
|
SYSTEMTIME tmScheduleTime;
|
|
SYSTEMTIME tmTransmissionStartTime;
|
|
SYSTEMTIME tmTransmissionEndTime;
|
|
DWORD dwDeviceID;
|
|
LPCWSTR lpctstrDeviceName;
|
|
DWORD dwRetries;
|
|
LPCWSTR lpctstrCallerID;
|
|
LPCWSTR lpctstrRoutingInfo;
|
|
DWORD dwAvailableJobOperations;
|
|
} FAX_JOB_STATUSW, *PFAX_JOB_STATUSW;
|
|
#ifdef UNICODE
|
|
typedef FAX_JOB_STATUSW FAX_JOB_STATUS;
|
|
typedef PFAX_JOB_STATUSW PFAX_JOB_STATUS;
|
|
#else
|
|
typedef FAX_JOB_STATUSA FAX_JOB_STATUS;
|
|
typedef PFAX_JOB_STATUSA PFAX_JOB_STATUS;
|
|
#endif // UNICODE
|
|
|
|
typedef struct _FAX_JOB_ENTRY_EXA
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwValidityMask;
|
|
DWORDLONG dwlMessageId;
|
|
DWORDLONG dwlBroadcastId;
|
|
LPCSTR lpctstrRecipientNumber;
|
|
LPCSTR lpctstrRecipientName;
|
|
LPCSTR lpctstrSenderUserName;
|
|
LPCSTR lpctstrBillingCode;
|
|
SYSTEMTIME tmOriginalScheduleTime;
|
|
SYSTEMTIME tmSubmissionTime;
|
|
FAX_ENUM_PRIORITY_TYPE Priority;
|
|
DWORD dwDeliveryReportType;
|
|
LPCSTR lpctstrDocumentName;
|
|
LPCSTR lpctstrSubject;
|
|
PFAX_JOB_STATUSA pStatus;
|
|
} FAX_JOB_ENTRY_EXA, *PFAX_JOB_ENTRY_EXA;
|
|
typedef struct _FAX_JOB_ENTRY_EXW
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwValidityMask;
|
|
DWORDLONG dwlMessageId;
|
|
DWORDLONG dwlBroadcastId;
|
|
LPCWSTR lpctstrRecipientNumber;
|
|
LPCWSTR lpctstrRecipientName;
|
|
LPCWSTR lpctstrSenderUserName;
|
|
LPCWSTR lpctstrBillingCode;
|
|
SYSTEMTIME tmOriginalScheduleTime;
|
|
SYSTEMTIME tmSubmissionTime;
|
|
FAX_ENUM_PRIORITY_TYPE Priority;
|
|
DWORD dwDeliveryReportType;
|
|
LPCWSTR lpctstrDocumentName;
|
|
LPCWSTR lpctstrSubject;
|
|
PFAX_JOB_STATUSW pStatus;
|
|
} FAX_JOB_ENTRY_EXW, *PFAX_JOB_ENTRY_EXW;
|
|
#ifdef UNICODE
|
|
typedef FAX_JOB_ENTRY_EXW FAX_JOB_ENTRY_EX;
|
|
typedef PFAX_JOB_ENTRY_EXW PFAX_JOB_ENTRY_EX;
|
|
#else
|
|
typedef FAX_JOB_ENTRY_EXA FAX_JOB_ENTRY_EX;
|
|
typedef PFAX_JOB_ENTRY_EXA PFAX_JOB_ENTRY_EX;
|
|
#endif // UNICODE
|
|
|
|
|
|
typedef struct _FAX_JOB_PARAM_EXA
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwScheduleAction;
|
|
SYSTEMTIME tmSchedule;
|
|
DWORD dwReceiptDeliveryType;
|
|
LPSTR lptstrReceiptDeliveryAddress;
|
|
FAX_ENUM_PRIORITY_TYPE Priority;
|
|
HCALL hCall;
|
|
DWORD_PTR dwReserved[4];
|
|
LPSTR lptstrDocumentName;
|
|
DWORD dwPageCount;
|
|
} FAX_JOB_PARAM_EXA, *PFAX_JOB_PARAM_EXA;
|
|
typedef struct _FAX_JOB_PARAM_EXW
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwScheduleAction;
|
|
SYSTEMTIME tmSchedule;
|
|
DWORD dwReceiptDeliveryType;
|
|
LPWSTR lptstrReceiptDeliveryAddress;
|
|
FAX_ENUM_PRIORITY_TYPE Priority;
|
|
HCALL hCall;
|
|
DWORD_PTR dwReserved[4];
|
|
LPWSTR lptstrDocumentName;
|
|
DWORD dwPageCount;
|
|
} FAX_JOB_PARAM_EXW, *PFAX_JOB_PARAM_EXW;
|
|
#ifdef UNICODE
|
|
typedef FAX_JOB_PARAM_EXW FAX_JOB_PARAM_EX;
|
|
typedef PFAX_JOB_PARAM_EXW PFAX_JOB_PARAM_EX;
|
|
#else
|
|
typedef FAX_JOB_PARAM_EXA FAX_JOB_PARAM_EX;
|
|
typedef PFAX_JOB_PARAM_EXA PFAX_JOB_PARAM_EX;
|
|
#endif // UNICODE
|
|
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI FaxEnumJobsExA (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwJobTypes,
|
|
OUT PFAX_JOB_ENTRY_EXA *ppJobEntries,
|
|
OUT LPDWORD lpdwJobs
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI FaxEnumJobsExW (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwJobTypes,
|
|
OUT PFAX_JOB_ENTRY_EXW *ppJobEntries,
|
|
OUT LPDWORD lpdwJobs
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxEnumJobsEx FaxEnumJobsExW
|
|
#else
|
|
#define FaxEnumJobsEx FaxEnumJobsExA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetJobExA (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORDLONG dwlMessageID,
|
|
OUT PFAX_JOB_ENTRY_EXA *ppJobEntry
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetJobExW (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORDLONG dwlMessageID,
|
|
OUT PFAX_JOB_ENTRY_EXW *ppJobEntry
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxGetJobEx FaxGetJobExW
|
|
#else
|
|
#define FaxGetJobEx FaxGetJobExA
|
|
#endif // !UNICODE
|
|
|
|
|
|
typedef const FAX_JOB_PARAM_EXW * LPCFAX_JOB_PARAM_EXW;
|
|
typedef const FAX_JOB_PARAM_EXA * LPCFAX_JOB_PARAM_EXA;
|
|
|
|
#ifdef UNICODE
|
|
typedef LPCFAX_JOB_PARAM_EXW LPCFAX_JOB_PARAM_EX;
|
|
#else
|
|
typedef LPCFAX_JOB_PARAM_EXA LPCFAX_JOB_PARAM_EX;
|
|
#endif
|
|
|
|
|
|
typedef enum
|
|
{
|
|
FAX_COVERPAGE_FMT_COV = 1,
|
|
FAX_COVERPAGE_FMT_COV_SUBJECT_ONLY
|
|
} FAX_ENUM_COVERPAGE_FORMATS;
|
|
|
|
|
|
typedef struct _FAX_COVERPAGE_INFO_EXA
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwCoverPageFormat;
|
|
LPSTR lptstrCoverPageFileName;
|
|
BOOL bServerBased;
|
|
LPSTR lptstrNote;
|
|
LPSTR lptstrSubject;
|
|
} FAX_COVERPAGE_INFO_EXA, *PFAX_COVERPAGE_INFO_EXA;
|
|
typedef struct _FAX_COVERPAGE_INFO_EXW
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwCoverPageFormat;
|
|
LPWSTR lptstrCoverPageFileName;
|
|
BOOL bServerBased;
|
|
LPWSTR lptstrNote;
|
|
LPWSTR lptstrSubject;
|
|
} FAX_COVERPAGE_INFO_EXW, *PFAX_COVERPAGE_INFO_EXW;
|
|
#ifdef UNICODE
|
|
typedef FAX_COVERPAGE_INFO_EXW FAX_COVERPAGE_INFO_EX;
|
|
typedef PFAX_COVERPAGE_INFO_EXW PFAX_COVERPAGE_INFO_EX;
|
|
#else
|
|
typedef FAX_COVERPAGE_INFO_EXA FAX_COVERPAGE_INFO_EX;
|
|
typedef PFAX_COVERPAGE_INFO_EXA PFAX_COVERPAGE_INFO_EX;
|
|
#endif // UNICODE
|
|
|
|
typedef const FAX_COVERPAGE_INFO_EXW * LPCFAX_COVERPAGE_INFO_EXW;
|
|
typedef const FAX_COVERPAGE_INFO_EXA * LPCFAX_COVERPAGE_INFO_EXA;
|
|
|
|
#ifdef UNICODE
|
|
typedef LPCFAX_COVERPAGE_INFO_EXW LPCFAX_COVERPAGE_INFO_EX;
|
|
#else
|
|
typedef LPCFAX_COVERPAGE_INFO_EXA LPCFAX_COVERPAGE_INFO_EX;
|
|
#endif
|
|
|
|
|
|
typedef struct _FAX_PERSONAL_PROFILEA
|
|
{
|
|
DWORD dwSizeOfStruct; // Size of this structure
|
|
LPSTR lptstrName; // Name of person
|
|
LPSTR lptstrFaxNumber; // Fax number
|
|
LPSTR lptstrCompany; // Company name
|
|
LPSTR lptstrStreetAddress; // Street address
|
|
LPSTR lptstrCity; // City
|
|
LPSTR lptstrState; // State
|
|
LPSTR lptstrZip; // Zip code
|
|
LPSTR lptstrCountry; // Country
|
|
LPSTR lptstrTitle; // Title
|
|
LPSTR lptstrDepartment; // Department
|
|
LPSTR lptstrOfficeLocation; // Office location
|
|
LPSTR lptstrHomePhone; // Phone number at home
|
|
LPSTR lptstrOfficePhone; // Phone number at office
|
|
LPSTR lptstrEmail; // Personal e-mail address
|
|
LPSTR lptstrBillingCode; // Billing code
|
|
LPSTR lptstrTSID; // Tsid
|
|
} FAX_PERSONAL_PROFILEA, *PFAX_PERSONAL_PROFILEA;
|
|
typedef struct _FAX_PERSONAL_PROFILEW
|
|
{
|
|
DWORD dwSizeOfStruct; // Size of this structure
|
|
LPWSTR lptstrName; // Name of person
|
|
LPWSTR lptstrFaxNumber; // Fax number
|
|
LPWSTR lptstrCompany; // Company name
|
|
LPWSTR lptstrStreetAddress; // Street address
|
|
LPWSTR lptstrCity; // City
|
|
LPWSTR lptstrState; // State
|
|
LPWSTR lptstrZip; // Zip code
|
|
LPWSTR lptstrCountry; // Country
|
|
LPWSTR lptstrTitle; // Title
|
|
LPWSTR lptstrDepartment; // Department
|
|
LPWSTR lptstrOfficeLocation; // Office location
|
|
LPWSTR lptstrHomePhone; // Phone number at home
|
|
LPWSTR lptstrOfficePhone; // Phone number at office
|
|
LPWSTR lptstrEmail; // Personal e-mail address
|
|
LPWSTR lptstrBillingCode; // Billing code
|
|
LPWSTR lptstrTSID; // Tsid
|
|
} FAX_PERSONAL_PROFILEW, *PFAX_PERSONAL_PROFILEW;
|
|
#ifdef UNICODE
|
|
typedef FAX_PERSONAL_PROFILEW FAX_PERSONAL_PROFILE;
|
|
typedef PFAX_PERSONAL_PROFILEW PFAX_PERSONAL_PROFILE;
|
|
#else
|
|
typedef FAX_PERSONAL_PROFILEA FAX_PERSONAL_PROFILE;
|
|
typedef PFAX_PERSONAL_PROFILEA PFAX_PERSONAL_PROFILE;
|
|
#endif // UNICODE
|
|
|
|
typedef const FAX_PERSONAL_PROFILEW * LPCFAX_PERSONAL_PROFILEW;
|
|
typedef const FAX_PERSONAL_PROFILEA * LPCFAX_PERSONAL_PROFILEA;
|
|
|
|
#ifdef UNICODE
|
|
typedef LPCFAX_PERSONAL_PROFILEW LPCFAX_PERSONAL_PROFILE;
|
|
#else
|
|
typedef LPCFAX_PERSONAL_PROFILEA LPCFAX_PERSONAL_PROFILE;
|
|
#endif
|
|
|
|
|
|
BOOL WINAPI FaxSendDocumentExA
|
|
(
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCSTR lpctstrFileName,
|
|
IN LPCFAX_COVERPAGE_INFO_EXA lpcCoverPageInfo,
|
|
IN LPCFAX_PERSONAL_PROFILEA lpcSenderProfile,
|
|
IN DWORD dwNumRecipients,
|
|
IN LPCFAX_PERSONAL_PROFILEA lpcRecipientList,
|
|
IN LPCFAX_JOB_PARAM_EXA lpJobParams,
|
|
OUT PDWORDLONG lpdwlMessageId,
|
|
OUT PDWORDLONG lpdwlRecipientMessageIds
|
|
);
|
|
BOOL WINAPI FaxSendDocumentExW
|
|
(
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCWSTR lpctstrFileName,
|
|
IN LPCFAX_COVERPAGE_INFO_EXW lpcCoverPageInfo,
|
|
IN LPCFAX_PERSONAL_PROFILEW lpcSenderProfile,
|
|
IN DWORD dwNumRecipients,
|
|
IN LPCFAX_PERSONAL_PROFILEW lpcRecipientList,
|
|
IN LPCFAX_JOB_PARAM_EXW lpJobParams,
|
|
OUT PDWORDLONG lpdwlMessageId,
|
|
OUT PDWORDLONG lpdwlRecipientMessageIds
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxSendDocumentEx FaxSendDocumentExW
|
|
#else
|
|
#define FaxSendDocumentEx FaxSendDocumentExA
|
|
#endif // !UNICODE
|
|
|
|
typedef BOOL
|
|
(WINAPI *PFAXSENDDOCUMENTEXA)(
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCSTR lpctstrFileName,
|
|
IN LPCFAX_COVERPAGE_INFO_EXA lpcCoverPageInfo,
|
|
IN LPCFAX_PERSONAL_PROFILEA lpcSenderProfile,
|
|
IN DWORD dwNumRecipients,
|
|
IN LPCFAX_PERSONAL_PROFILEA lpcRecipientList,
|
|
IN LPCFAX_JOB_PARAM_EXA lpcJobParams,
|
|
OUT PDWORDLONG lpdwlMessageId,
|
|
OUT PDWORDLONG lpdwlRecipientMessageIds
|
|
);
|
|
typedef BOOL
|
|
(WINAPI *PFAXSENDDOCUMENTEXW)(
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCWSTR lpctstrFileName,
|
|
IN LPCFAX_COVERPAGE_INFO_EXW lpcCoverPageInfo,
|
|
IN LPCFAX_PERSONAL_PROFILEW lpcSenderProfile,
|
|
IN DWORD dwNumRecipients,
|
|
IN LPCFAX_PERSONAL_PROFILEW lpcRecipientList,
|
|
IN LPCFAX_JOB_PARAM_EXW lpcJobParams,
|
|
OUT PDWORDLONG lpdwlMessageId,
|
|
OUT PDWORDLONG lpdwlRecipientMessageIds
|
|
);
|
|
#ifdef UNICODE
|
|
#define PFAXSENDDOCUMENTEX PFAXSENDDOCUMENTEXW
|
|
#else
|
|
#define PFAXSENDDOCUMENTEX PFAXSENDDOCUMENTEXA
|
|
#endif // !UNICODE
|
|
|
|
|
|
//********************************************
|
|
//* Archive jobs
|
|
//********************************************
|
|
|
|
typedef struct _FAX_MESSAGEA
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwValidityMask;
|
|
DWORDLONG dwlMessageId;
|
|
DWORDLONG dwlBroadcastId;
|
|
DWORD dwJobType;
|
|
DWORD dwQueueStatus;
|
|
DWORD dwExtendedStatus;
|
|
LPCSTR lpctstrExtendedStatus;
|
|
DWORD dwSize;
|
|
DWORD dwPageCount;
|
|
LPCSTR lpctstrRecipientNumber;
|
|
LPCSTR lpctstrRecipientName;
|
|
LPCSTR lpctstrSenderNumber;
|
|
LPCSTR lpctstrSenderName;
|
|
LPCSTR lpctstrTsid;
|
|
LPCSTR lpctstrCsid;
|
|
LPCSTR lpctstrSenderUserName;
|
|
LPCSTR lpctstrBillingCode;
|
|
SYSTEMTIME tmOriginalScheduleTime;
|
|
SYSTEMTIME tmSubmissionTime;
|
|
SYSTEMTIME tmTransmissionStartTime;
|
|
SYSTEMTIME tmTransmissionEndTime;
|
|
LPCSTR lpctstrDeviceName;
|
|
FAX_ENUM_PRIORITY_TYPE Priority;
|
|
DWORD dwRetries;
|
|
LPCSTR lpctstrDocumentName;
|
|
LPCSTR lpctstrSubject;
|
|
LPCSTR lpctstrCallerID;
|
|
LPCSTR lpctstrRoutingInfo;
|
|
} FAX_MESSAGEA, *PFAX_MESSAGEA;
|
|
typedef struct _FAX_MESSAGEW
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwValidityMask;
|
|
DWORDLONG dwlMessageId;
|
|
DWORDLONG dwlBroadcastId;
|
|
DWORD dwJobType;
|
|
DWORD dwQueueStatus;
|
|
DWORD dwExtendedStatus;
|
|
LPCWSTR lpctstrExtendedStatus;
|
|
DWORD dwSize;
|
|
DWORD dwPageCount;
|
|
LPCWSTR lpctstrRecipientNumber;
|
|
LPCWSTR lpctstrRecipientName;
|
|
LPCWSTR lpctstrSenderNumber;
|
|
LPCWSTR lpctstrSenderName;
|
|
LPCWSTR lpctstrTsid;
|
|
LPCWSTR lpctstrCsid;
|
|
LPCWSTR lpctstrSenderUserName;
|
|
LPCWSTR lpctstrBillingCode;
|
|
SYSTEMTIME tmOriginalScheduleTime;
|
|
SYSTEMTIME tmSubmissionTime;
|
|
SYSTEMTIME tmTransmissionStartTime;
|
|
SYSTEMTIME tmTransmissionEndTime;
|
|
LPCWSTR lpctstrDeviceName;
|
|
FAX_ENUM_PRIORITY_TYPE Priority;
|
|
DWORD dwRetries;
|
|
LPCWSTR lpctstrDocumentName;
|
|
LPCWSTR lpctstrSubject;
|
|
LPCWSTR lpctstrCallerID;
|
|
LPCWSTR lpctstrRoutingInfo;
|
|
} FAX_MESSAGEW, *PFAX_MESSAGEW;
|
|
#ifdef UNICODE
|
|
typedef FAX_MESSAGEW FAX_MESSAGE;
|
|
typedef PFAX_MESSAGEW PFAX_MESSAGE;
|
|
#else
|
|
typedef FAX_MESSAGEA FAX_MESSAGE;
|
|
typedef PFAX_MESSAGEA PFAX_MESSAGE;
|
|
#endif // UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxStartMessagesEnum (
|
|
IN HANDLE hFaxHandle,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
OUT PHANDLE phEnum
|
|
);
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEndMessagesEnum (
|
|
IN HANDLE hEnum
|
|
);
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEnumMessagesA (
|
|
IN HANDLE hEnum,
|
|
IN DWORD dwNumMessages,
|
|
OUT PFAX_MESSAGEA *ppMsgs,
|
|
OUT LPDWORD lpdwReturnedMsgs
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEnumMessagesW (
|
|
IN HANDLE hEnum,
|
|
IN DWORD dwNumMessages,
|
|
OUT PFAX_MESSAGEW *ppMsgs,
|
|
OUT LPDWORD lpdwReturnedMsgs
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxEnumMessages FaxEnumMessagesW
|
|
#else
|
|
#define FaxEnumMessages FaxEnumMessagesA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetMessageA (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORDLONG dwlMessageId,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
OUT PFAX_MESSAGEA *ppMsg
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetMessageW (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORDLONG dwlMessageId,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
OUT PFAX_MESSAGEW *ppMsg
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxGetMessage FaxGetMessageW
|
|
#else
|
|
#define FaxGetMessage FaxGetMessageA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxRemoveMessage (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORDLONG dwlMessageId,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder
|
|
);
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetMessageTiffA (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORDLONG dwlMessageId,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
IN LPCSTR lpctstrFilePath
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetMessageTiffW (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORDLONG dwlMessageId,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
IN LPCWSTR lpctstrFilePath
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxGetMessageTiff FaxGetMessageTiffW
|
|
#else
|
|
#define FaxGetMessageTiff FaxGetMessageTiffA
|
|
#endif // !UNICODE
|
|
|
|
//************************************
|
|
//* Non-RPC extended interfaces
|
|
//************************************
|
|
|
|
HRESULT WINAPI
|
|
FaxFreeSenderInformation(
|
|
PFAX_PERSONAL_PROFILE pfppSender
|
|
);
|
|
|
|
HRESULT WINAPI
|
|
FaxSetSenderInformation(
|
|
PFAX_PERSONAL_PROFILE pfppSender
|
|
);
|
|
|
|
HRESULT WINAPI
|
|
FaxGetSenderInformation(
|
|
PFAX_PERSONAL_PROFILE pfppSender
|
|
);
|
|
|
|
|
|
//********************************************
|
|
//* Security
|
|
//********************************************
|
|
//
|
|
// Specific access rights
|
|
//
|
|
typedef enum
|
|
{
|
|
FAX_ACCESS_SUBMIT = 0x0001,
|
|
FAX_ACCESS_SUBMIT_NORMAL = 0x0002,
|
|
FAX_ACCESS_SUBMIT_HIGH = 0x0004,
|
|
FAX_ACCESS_QUERY_JOBS = 0x0008,
|
|
FAX_ACCESS_MANAGE_JOBS = 0x0010,
|
|
FAX_ACCESS_QUERY_CONFIG = 0x0020,
|
|
FAX_ACCESS_MANAGE_CONFIG = 0x0040,
|
|
FAX_ACCESS_QUERY_IN_ARCHIVE = 0x0080,
|
|
FAX_ACCESS_MANAGE_IN_ARCHIVE = 0x0100,
|
|
FAX_ACCESS_QUERY_OUT_ARCHIVE = 0x0200,
|
|
FAX_ACCESS_MANAGE_OUT_ARCHIVE = 0x0400
|
|
} FAX_SPECIFIC_ACCESS_RIGHTS;
|
|
|
|
#define FAX_GENERIC_READ (FAX_ACCESS_QUERY_JOBS | FAX_ACCESS_QUERY_CONFIG | FAX_ACCESS_QUERY_IN_ARCHIVE | FAX_ACCESS_QUERY_OUT_ARCHIVE)
|
|
#define FAX_GENERIC_WRITE (FAX_ACCESS_MANAGE_JOBS | FAX_ACCESS_MANAGE_CONFIG | FAX_ACCESS_MANAGE_IN_ARCHIVE | FAX_ACCESS_MANAGE_OUT_ARCHIVE)
|
|
#define FAX_GENERIC_EXECUTE (FAX_ACCESS_SUBMIT)
|
|
#define FAX_GENERIC_ALL (FAX_ACCESS_SUBMIT | \
|
|
FAX_ACCESS_SUBMIT_NORMAL | \
|
|
FAX_ACCESS_SUBMIT_HIGH | \
|
|
FAX_ACCESS_QUERY_JOBS | \
|
|
FAX_ACCESS_MANAGE_JOBS | \
|
|
FAX_ACCESS_QUERY_CONFIG | \
|
|
FAX_ACCESS_MANAGE_CONFIG | \
|
|
FAX_ACCESS_QUERY_IN_ARCHIVE | \
|
|
FAX_ACCESS_MANAGE_IN_ARCHIVE | \
|
|
FAX_ACCESS_QUERY_OUT_ARCHIVE | \
|
|
FAX_ACCESS_MANAGE_OUT_ARCHIVE)
|
|
|
|
|
|
|
|
//
|
|
// Functions
|
|
//
|
|
|
|
|
|
//********************************************
|
|
//* Security
|
|
//********************************************
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetSecurity (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PSECURITY_DESCRIPTOR *ppSecDesc
|
|
);
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetSecurityEx (
|
|
IN HANDLE hFaxHandle,
|
|
IN SECURITY_INFORMATION SecurityInformation,
|
|
OUT PSECURITY_DESCRIPTOR *ppSecDesc
|
|
);
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetSecurity (
|
|
IN HANDLE hFaxHandle,
|
|
IN SECURITY_INFORMATION SecurityInformation,
|
|
IN CONST PSECURITY_DESCRIPTOR pSecDesc
|
|
);
|
|
|
|
|
|
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxAccessCheckEx (
|
|
IN HANDLE FaxHandle,
|
|
IN DWORD AccessMask,
|
|
OUT LPDWORD lpdwRights
|
|
);
|
|
|
|
|
|
//********************************************
|
|
//* Extension data
|
|
//********************************************
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetExtensionDataA (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwDeviceID,
|
|
IN LPCSTR lpctstrNameGUID,
|
|
OUT PVOID *ppData,
|
|
OUT LPDWORD lpdwDataSize
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetExtensionDataW (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwDeviceID,
|
|
IN LPCWSTR lpctstrNameGUID,
|
|
OUT PVOID *ppData,
|
|
OUT LPDWORD lpdwDataSize
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxGetExtensionData FaxGetExtensionDataW
|
|
#else
|
|
#define FaxGetExtensionData FaxGetExtensionDataA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetExtensionDataA (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwDeviceID,
|
|
IN LPCSTR lpctstrNameGUID,
|
|
IN CONST PVOID pData,
|
|
IN CONST DWORD dwDataSize
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetExtensionDataW (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwDeviceID,
|
|
IN LPCWSTR lpctstrNameGUID,
|
|
IN CONST PVOID pData,
|
|
IN CONST DWORD dwDataSize
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxSetExtensionData FaxSetExtensionDataW
|
|
#else
|
|
#define FaxSetExtensionData FaxSetExtensionDataA
|
|
#endif // !UNICODE
|
|
|
|
//********************************************
|
|
//* FSP
|
|
//********************************************
|
|
|
|
typedef enum
|
|
{
|
|
FAX_PROVIDER_STATUS_SUCCESS, // Provider was successfully loaded
|
|
FAX_PROVIDER_STATUS_SERVER_ERROR,// An error occured on the server while loading provider.
|
|
FAX_PROVIDER_STATUS_BAD_GUID, // Provider's GUID is invalid
|
|
FAX_PROVIDER_STATUS_BAD_VERSION, // Provider's API version is invalid
|
|
FAX_PROVIDER_STATUS_CANT_LOAD, // Can't load provider's DLL
|
|
FAX_PROVIDER_STATUS_CANT_LINK, // Can't find required exported function(s) in provider's DLL
|
|
FAX_PROVIDER_STATUS_CANT_INIT // Failed while initializing provider
|
|
} FAX_ENUM_PROVIDER_STATUS;
|
|
|
|
typedef struct _FAX_DEVICE_PROVIDER_INFOA
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
LPCSTR lpctstrFriendlyName;
|
|
LPCSTR lpctstrImageName;
|
|
LPCSTR lpctstrProviderName;
|
|
LPCSTR lpctstrGUID;
|
|
DWORD dwCapabilities;
|
|
FAX_VERSION Version;
|
|
FAX_ENUM_PROVIDER_STATUS Status;
|
|
DWORD dwLastError;
|
|
} FAX_DEVICE_PROVIDER_INFOA, *PFAX_DEVICE_PROVIDER_INFOA;
|
|
typedef struct _FAX_DEVICE_PROVIDER_INFOW
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
LPCWSTR lpctstrFriendlyName;
|
|
LPCWSTR lpctstrImageName;
|
|
LPCWSTR lpctstrProviderName;
|
|
LPCWSTR lpctstrGUID;
|
|
DWORD dwCapabilities;
|
|
FAX_VERSION Version;
|
|
FAX_ENUM_PROVIDER_STATUS Status;
|
|
DWORD dwLastError;
|
|
} FAX_DEVICE_PROVIDER_INFOW, *PFAX_DEVICE_PROVIDER_INFOW;
|
|
#ifdef UNICODE
|
|
typedef FAX_DEVICE_PROVIDER_INFOW FAX_DEVICE_PROVIDER_INFO;
|
|
typedef PFAX_DEVICE_PROVIDER_INFOW PFAX_DEVICE_PROVIDER_INFO;
|
|
#else
|
|
typedef FAX_DEVICE_PROVIDER_INFOA FAX_DEVICE_PROVIDER_INFO;
|
|
typedef PFAX_DEVICE_PROVIDER_INFOA PFAX_DEVICE_PROVIDER_INFO;
|
|
#endif // UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEnumerateProvidersA (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_DEVICE_PROVIDER_INFOA *ppProviders,
|
|
OUT LPDWORD lpdwNumProviders
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEnumerateProvidersW (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_DEVICE_PROVIDER_INFOW *ppProviders,
|
|
OUT LPDWORD lpdwNumProviders
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxEnumerateProviders FaxEnumerateProvidersW
|
|
#else
|
|
#define FaxEnumerateProviders FaxEnumerateProvidersA
|
|
#endif // !UNICODE
|
|
|
|
//********************************************
|
|
//* Routing extensions
|
|
//********************************************
|
|
|
|
typedef struct _FAX_ROUTING_EXTENSION_INFOA
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
LPCSTR lpctstrFriendlyName;
|
|
LPCSTR lpctstrImageName;
|
|
LPCSTR lpctstrExtensionName;
|
|
FAX_VERSION Version;
|
|
FAX_ENUM_PROVIDER_STATUS Status;
|
|
DWORD dwLastError;
|
|
} FAX_ROUTING_EXTENSION_INFOA, *PFAX_ROUTING_EXTENSION_INFOA;
|
|
typedef struct _FAX_ROUTING_EXTENSION_INFOW
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
LPCWSTR lpctstrFriendlyName;
|
|
LPCWSTR lpctstrImageName;
|
|
LPCWSTR lpctstrExtensionName;
|
|
FAX_VERSION Version;
|
|
FAX_ENUM_PROVIDER_STATUS Status;
|
|
DWORD dwLastError;
|
|
} FAX_ROUTING_EXTENSION_INFOW, *PFAX_ROUTING_EXTENSION_INFOW;
|
|
#ifdef UNICODE
|
|
typedef FAX_ROUTING_EXTENSION_INFOW FAX_ROUTING_EXTENSION_INFO;
|
|
typedef PFAX_ROUTING_EXTENSION_INFOW PFAX_ROUTING_EXTENSION_INFO;
|
|
#else
|
|
typedef FAX_ROUTING_EXTENSION_INFOA FAX_ROUTING_EXTENSION_INFO;
|
|
typedef PFAX_ROUTING_EXTENSION_INFOA PFAX_ROUTING_EXTENSION_INFO;
|
|
#endif // UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEnumRoutingExtensionsA (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_ROUTING_EXTENSION_INFOA *ppRoutingExtensions,
|
|
OUT LPDWORD lpdwNumExtensions
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEnumRoutingExtensionsW (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_ROUTING_EXTENSION_INFOW *ppRoutingExtensions,
|
|
OUT LPDWORD lpdwNumExtensions
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxEnumRoutingExtensions FaxEnumRoutingExtensionsW
|
|
#else
|
|
#define FaxEnumRoutingExtensions FaxEnumRoutingExtensionsA
|
|
#endif // !UNICODE
|
|
|
|
|
|
//********************************************
|
|
//* Ports
|
|
//********************************************
|
|
|
|
typedef enum
|
|
{
|
|
FAX_DEVICE_STATUS_POWERED_OFF = 0x0001,
|
|
FAX_DEVICE_STATUS_SENDING = 0x0002,
|
|
FAX_DEVICE_STATUS_RECEIVING = 0x0004,
|
|
FAX_DEVICE_STATUS_RINGING = 0x0008
|
|
} FAX_ENUM_DEVICE_STATUS;
|
|
|
|
typedef enum
|
|
{
|
|
FAX_DEVICE_RECEIVE_MODE_OFF = 0, // Do not answer to incoming calls
|
|
FAX_DEVICE_RECEIVE_MODE_AUTO = 1, // Automatically answer to incoming calls after dwRings rings
|
|
FAX_DEVICE_RECEIVE_MODE_MANUAL = 2 // Manually answer to incoming calls - only FaxAnswerCall answers the call
|
|
} FAX_ENUM_DEVICE_RECEIVE_MODE;
|
|
|
|
typedef struct _FAX_PORT_INFO_EXA
|
|
{
|
|
DWORD dwSizeOfStruct; // For versioning
|
|
DWORD dwDeviceID; // Fax id
|
|
LPCSTR lpctstrDeviceName; // Name of the device
|
|
LPSTR lptstrDescription; // Descriptive string
|
|
LPCSTR lpctstrProviderName; // FSP's name
|
|
LPCSTR lpctstrProviderGUID; // FSP's GUID
|
|
BOOL bSend; // Is the device send-enabled?
|
|
FAX_ENUM_DEVICE_RECEIVE_MODE ReceiveMode; // The device receive mode. See FAX_ENUM_DEVICE_RECEIVE_MODE for details.
|
|
DWORD dwStatus; // Device status - a combination of values from FAX_ENUM_DEVICE_STATUS
|
|
DWORD dwRings; // Number of rings before answering an incoming call
|
|
LPSTR lptstrCsid; // Called Station Id
|
|
LPSTR lptstrTsid; // Transmitting Station Id
|
|
} FAX_PORT_INFO_EXA, *PFAX_PORT_INFO_EXA;
|
|
typedef struct _FAX_PORT_INFO_EXW
|
|
{
|
|
DWORD dwSizeOfStruct; // For versioning
|
|
DWORD dwDeviceID; // Fax id
|
|
LPCWSTR lpctstrDeviceName; // Name of the device
|
|
LPWSTR lptstrDescription; // Descriptive string
|
|
LPCWSTR lpctstrProviderName; // FSP's name
|
|
LPCWSTR lpctstrProviderGUID; // FSP's GUID
|
|
BOOL bSend; // Is the device send-enabled?
|
|
FAX_ENUM_DEVICE_RECEIVE_MODE ReceiveMode; // The device receive mode. See FAX_ENUM_DEVICE_RECEIVE_MODE for details.
|
|
DWORD dwStatus; // Device status - a combination of values from FAX_ENUM_DEVICE_STATUS
|
|
DWORD dwRings; // Number of rings before answering an incoming call
|
|
LPWSTR lptstrCsid; // Called Station Id
|
|
LPWSTR lptstrTsid; // Transmitting Station Id
|
|
} FAX_PORT_INFO_EXW, *PFAX_PORT_INFO_EXW;
|
|
#ifdef UNICODE
|
|
typedef FAX_PORT_INFO_EXW FAX_PORT_INFO_EX;
|
|
typedef PFAX_PORT_INFO_EXW PFAX_PORT_INFO_EX;
|
|
#else
|
|
typedef FAX_PORT_INFO_EXA FAX_PORT_INFO_EX;
|
|
typedef PFAX_PORT_INFO_EXA PFAX_PORT_INFO_EX;
|
|
#endif // UNICODE
|
|
|
|
WINFAXAPI
|
|
DWORD
|
|
WINAPI
|
|
IsDeviceVirtual (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwDeviceId,
|
|
OUT LPBOOL lpbVirtual
|
|
);
|
|
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetPortExA (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwDeviceId,
|
|
OUT PFAX_PORT_INFO_EXA *ppPortInfo
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetPortExW (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwDeviceId,
|
|
OUT PFAX_PORT_INFO_EXW *ppPortInfo
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxGetPortEx FaxGetPortExW
|
|
#else
|
|
#define FaxGetPortEx FaxGetPortExA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetPortExA (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwDeviceId,
|
|
IN PFAX_PORT_INFO_EXA pPortInfo
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetPortExW (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwDeviceId,
|
|
IN PFAX_PORT_INFO_EXW pPortInfo
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxSetPortEx FaxSetPortExW
|
|
#else
|
|
#define FaxSetPortEx FaxSetPortExA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEnumPortsExA (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_PORT_INFO_EXA *ppPorts,
|
|
OUT LPDWORD lpdwNumPorts
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEnumPortsExW (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_PORT_INFO_EXW *ppPorts,
|
|
OUT LPDWORD lpdwNumPorts
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxEnumPortsEx FaxEnumPortsExW
|
|
#else
|
|
#define FaxEnumPortsEx FaxEnumPortsExA
|
|
#endif // !UNICODE
|
|
|
|
|
|
//********************************************
|
|
//* Recipient and sender information
|
|
//********************************************
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetRecipientInfoA (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORDLONG dwlMessageId,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
OUT PFAX_PERSONAL_PROFILEA *lpPersonalProfile
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetRecipientInfoW (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORDLONG dwlMessageId,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
OUT PFAX_PERSONAL_PROFILEW *lpPersonalProfile
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxGetRecipientInfo FaxGetRecipientInfoW
|
|
#else
|
|
#define FaxGetRecipientInfo FaxGetRecipientInfoA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetSenderInfoA (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORDLONG dwlMessageId,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
OUT PFAX_PERSONAL_PROFILEA *lpPersonalProfile
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetSenderInfoW (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORDLONG dwlMessageId,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder,
|
|
OUT PFAX_PERSONAL_PROFILEW *lpPersonalProfile
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxGetSenderInfo FaxGetSenderInfoW
|
|
#else
|
|
#define FaxGetSenderInfo FaxGetSenderInfoA
|
|
#endif // !UNICODE
|
|
|
|
//********************************************
|
|
//* Outbound routing groups
|
|
//********************************************
|
|
|
|
typedef enum
|
|
{
|
|
FAX_GROUP_STATUS_ALL_DEV_VALID,
|
|
FAX_GROUP_STATUS_EMPTY,
|
|
FAX_GROUP_STATUS_ALL_DEV_NOT_VALID,
|
|
FAX_GROUP_STATUS_SOME_DEV_NOT_VALID,
|
|
} FAX_ENUM_GROUP_STATUS;
|
|
|
|
|
|
typedef struct _FAX_OUTBOUND_ROUTING_GROUPA
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
LPCSTR lpctstrGroupName;
|
|
DWORD dwNumDevices;
|
|
LPDWORD lpdwDevices;
|
|
FAX_ENUM_GROUP_STATUS Status;
|
|
} FAX_OUTBOUND_ROUTING_GROUPA, *PFAX_OUTBOUND_ROUTING_GROUPA;
|
|
typedef struct _FAX_OUTBOUND_ROUTING_GROUPW
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
LPCWSTR lpctstrGroupName;
|
|
DWORD dwNumDevices;
|
|
LPDWORD lpdwDevices;
|
|
FAX_ENUM_GROUP_STATUS Status;
|
|
} FAX_OUTBOUND_ROUTING_GROUPW, *PFAX_OUTBOUND_ROUTING_GROUPW;
|
|
#ifdef UNICODE
|
|
typedef FAX_OUTBOUND_ROUTING_GROUPW FAX_OUTBOUND_ROUTING_GROUP;
|
|
typedef PFAX_OUTBOUND_ROUTING_GROUPW PFAX_OUTBOUND_ROUTING_GROUP;
|
|
#else
|
|
typedef FAX_OUTBOUND_ROUTING_GROUPA FAX_OUTBOUND_ROUTING_GROUP;
|
|
typedef PFAX_OUTBOUND_ROUTING_GROUPA PFAX_OUTBOUND_ROUTING_GROUP;
|
|
#endif // UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEnumOutboundGroupsA (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_OUTBOUND_ROUTING_GROUPA *ppGroups,
|
|
OUT LPDWORD lpdwNumGroups
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEnumOutboundGroupsW (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_OUTBOUND_ROUTING_GROUPW *ppGroups,
|
|
OUT LPDWORD lpdwNumGroups
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxEnumOutboundGroups FaxEnumOutboundGroupsW
|
|
#else
|
|
#define FaxEnumOutboundGroups FaxEnumOutboundGroupsA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetOutboundGroupA (
|
|
IN HANDLE hFaxHandle,
|
|
IN PFAX_OUTBOUND_ROUTING_GROUPA pGroup
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetOutboundGroupW (
|
|
IN HANDLE hFaxHandle,
|
|
IN PFAX_OUTBOUND_ROUTING_GROUPW pGroup
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxSetOutboundGroup FaxSetOutboundGroupW
|
|
#else
|
|
#define FaxSetOutboundGroup FaxSetOutboundGroupA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxAddOutboundGroupA (
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCSTR lpctstrGroupName
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxAddOutboundGroupW (
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCWSTR lpctstrGroupName
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxAddOutboundGroup FaxAddOutboundGroupW
|
|
#else
|
|
#define FaxAddOutboundGroup FaxAddOutboundGroupA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxRemoveOutboundGroupA (
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCSTR lpctstrGroupName
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxRemoveOutboundGroupW (
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCWSTR lpctstrGroupName
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxRemoveOutboundGroup FaxRemoveOutboundGroupW
|
|
#else
|
|
#define FaxRemoveOutboundGroup FaxRemoveOutboundGroupA
|
|
#endif // !UNICODE
|
|
|
|
BOOL
|
|
WINAPI
|
|
FaxSetDeviceOrderInGroupA (
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCSTR lpctstrGroupName,
|
|
IN DWORD dwDeviceId,
|
|
IN DWORD dwNewOrder
|
|
);
|
|
BOOL
|
|
WINAPI
|
|
FaxSetDeviceOrderInGroupW (
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCWSTR lpctstrGroupName,
|
|
IN DWORD dwDeviceId,
|
|
IN DWORD dwNewOrder
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxSetDeviceOrderInGroup FaxSetDeviceOrderInGroupW
|
|
#else
|
|
#define FaxSetDeviceOrderInGroup FaxSetDeviceOrderInGroupA
|
|
#endif // !UNICODE
|
|
|
|
|
|
//********************************************
|
|
//* Outbound routing rules
|
|
//********************************************
|
|
|
|
typedef enum
|
|
{
|
|
FAX_RULE_STATUS_VALID,
|
|
FAX_RULE_STATUS_EMPTY_GROUP, // The rule's destination group has no devices
|
|
FAX_RULE_STATUS_ALL_GROUP_DEV_NOT_VALID, // The rule's destination group has valid devices
|
|
FAX_RULE_STATUS_SOME_GROUP_DEV_NOT_VALID, // The rule's destination group has some invalid devices
|
|
FAX_RULE_STATUS_BAD_DEVICE // The rule's destination device is not valid
|
|
} FAX_ENUM_RULE_STATUS;
|
|
|
|
|
|
typedef struct _FAX_OUTBOUND_ROUTING_RULEA
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwAreaCode;
|
|
DWORD dwCountryCode;
|
|
LPCSTR lpctstrCountryName;
|
|
union
|
|
{
|
|
DWORD dwDeviceId;
|
|
LPCSTR lpcstrGroupName;
|
|
} Destination;
|
|
BOOL bUseGroup;
|
|
FAX_ENUM_RULE_STATUS Status;
|
|
} FAX_OUTBOUND_ROUTING_RULEA, *PFAX_OUTBOUND_ROUTING_RULEA;
|
|
typedef struct _FAX_OUTBOUND_ROUTING_RULEW
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
DWORD dwAreaCode;
|
|
DWORD dwCountryCode;
|
|
LPCWSTR lpctstrCountryName;
|
|
union
|
|
{
|
|
DWORD dwDeviceId;
|
|
LPCWSTR lpcstrGroupName;
|
|
} Destination;
|
|
BOOL bUseGroup;
|
|
FAX_ENUM_RULE_STATUS Status;
|
|
} FAX_OUTBOUND_ROUTING_RULEW, *PFAX_OUTBOUND_ROUTING_RULEW;
|
|
#ifdef UNICODE
|
|
typedef FAX_OUTBOUND_ROUTING_RULEW FAX_OUTBOUND_ROUTING_RULE;
|
|
typedef PFAX_OUTBOUND_ROUTING_RULEW PFAX_OUTBOUND_ROUTING_RULE;
|
|
#else
|
|
typedef FAX_OUTBOUND_ROUTING_RULEA FAX_OUTBOUND_ROUTING_RULE;
|
|
typedef PFAX_OUTBOUND_ROUTING_RULEA PFAX_OUTBOUND_ROUTING_RULE;
|
|
#endif // UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEnumOutboundRulesA (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_OUTBOUND_ROUTING_RULEA *ppRules,
|
|
OUT LPDWORD lpdwNumRules
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxEnumOutboundRulesW (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_OUTBOUND_ROUTING_RULEW *ppRules,
|
|
OUT LPDWORD lpdwNumRules
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxEnumOutboundRules FaxEnumOutboundRulesW
|
|
#else
|
|
#define FaxEnumOutboundRules FaxEnumOutboundRulesA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetOutboundRuleA (
|
|
IN HANDLE hFaxHandle,
|
|
IN PFAX_OUTBOUND_ROUTING_RULEA pRule
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetOutboundRuleW (
|
|
IN HANDLE hFaxHandle,
|
|
IN PFAX_OUTBOUND_ROUTING_RULEW pRule
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxSetOutboundRule FaxSetOutboundRuleW
|
|
#else
|
|
#define FaxSetOutboundRule FaxSetOutboundRuleA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxAddOutboundRuleA (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwAreaCode,
|
|
IN DWORD dwCountryCode,
|
|
IN DWORD dwDeviceID,
|
|
IN LPCSTR lpctstrGroupName,
|
|
IN BOOL bUseGroup
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxAddOutboundRuleW (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwAreaCode,
|
|
IN DWORD dwCountryCode,
|
|
IN DWORD dwDeviceID,
|
|
IN LPCWSTR lpctstrGroupName,
|
|
IN BOOL bUseGroup
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxAddOutboundRule FaxAddOutboundRuleW
|
|
#else
|
|
#define FaxAddOutboundRule FaxAddOutboundRuleA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxRemoveOutboundRule (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwAreaCode,
|
|
IN DWORD dwCountryCode
|
|
);
|
|
|
|
//********************************************
|
|
//* TAPI countries support
|
|
//********************************************
|
|
|
|
typedef struct _FAX_TAPI_LINECOUNTRY_ENTRYA
|
|
{
|
|
DWORD dwCountryID;
|
|
DWORD dwCountryCode;
|
|
LPCSTR lpctstrCountryName;
|
|
LPCSTR lpctstrLongDistanceRule;
|
|
} FAX_TAPI_LINECOUNTRY_ENTRYA, *PFAX_TAPI_LINECOUNTRY_ENTRYA;
|
|
typedef struct _FAX_TAPI_LINECOUNTRY_ENTRYW
|
|
{
|
|
DWORD dwCountryID;
|
|
DWORD dwCountryCode;
|
|
LPCWSTR lpctstrCountryName;
|
|
LPCWSTR lpctstrLongDistanceRule;
|
|
} FAX_TAPI_LINECOUNTRY_ENTRYW, *PFAX_TAPI_LINECOUNTRY_ENTRYW;
|
|
#ifdef UNICODE
|
|
typedef FAX_TAPI_LINECOUNTRY_ENTRYW FAX_TAPI_LINECOUNTRY_ENTRY;
|
|
typedef PFAX_TAPI_LINECOUNTRY_ENTRYW PFAX_TAPI_LINECOUNTRY_ENTRY;
|
|
#else
|
|
typedef FAX_TAPI_LINECOUNTRY_ENTRYA FAX_TAPI_LINECOUNTRY_ENTRY;
|
|
typedef PFAX_TAPI_LINECOUNTRY_ENTRYA PFAX_TAPI_LINECOUNTRY_ENTRY;
|
|
#endif // UNICODE
|
|
|
|
typedef struct _FAX_TAPI_LINECOUNTRY_LISTA
|
|
{
|
|
DWORD dwNumCountries;
|
|
PFAX_TAPI_LINECOUNTRY_ENTRYA LineCountryEntries;
|
|
} FAX_TAPI_LINECOUNTRY_LISTA, *PFAX_TAPI_LINECOUNTRY_LISTA;
|
|
typedef struct _FAX_TAPI_LINECOUNTRY_LISTW
|
|
{
|
|
DWORD dwNumCountries;
|
|
PFAX_TAPI_LINECOUNTRY_ENTRYW LineCountryEntries;
|
|
} FAX_TAPI_LINECOUNTRY_LISTW, *PFAX_TAPI_LINECOUNTRY_LISTW;
|
|
#ifdef UNICODE
|
|
typedef FAX_TAPI_LINECOUNTRY_LISTW FAX_TAPI_LINECOUNTRY_LIST;
|
|
typedef PFAX_TAPI_LINECOUNTRY_LISTW PFAX_TAPI_LINECOUNTRY_LIST;
|
|
#else
|
|
typedef FAX_TAPI_LINECOUNTRY_LISTA FAX_TAPI_LINECOUNTRY_LIST;
|
|
typedef PFAX_TAPI_LINECOUNTRY_LISTA PFAX_TAPI_LINECOUNTRY_LIST;
|
|
#endif // UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetCountryListA (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_TAPI_LINECOUNTRY_LISTA *ppCountryListBuffer
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetCountryListW (
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_TAPI_LINECOUNTRY_LISTW *ppCountryListBuffer
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxGetCountryList FaxGetCountryListW
|
|
#else
|
|
#define FaxGetCountryList FaxGetCountryListA
|
|
#endif // !UNICODE
|
|
|
|
//********************************************
|
|
//* EFSP registration
|
|
//********************************************
|
|
|
|
//
|
|
// FSPI versions
|
|
//
|
|
typedef enum
|
|
{
|
|
FSPI_API_VERSION_1 = 0x00010000, // Used by FSPs
|
|
FSPI_API_VERSION_2 = 0x00020000 // Used by EFSPs
|
|
} FSPI_API_VERSIONS; // Used in FaxRegisterServiceProviderEx
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxRegisterServiceProviderExA(
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCSTR lpctstrGUID,
|
|
IN LPCSTR lpctstrFriendlyName,
|
|
IN LPCSTR lpctstrImageName,
|
|
IN LPCSTR lpctstrTspName,
|
|
IN DWORD dwFSPIVersion,
|
|
IN DWORD dwCapabilities
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxRegisterServiceProviderExW(
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCWSTR lpctstrGUID,
|
|
IN LPCWSTR lpctstrFriendlyName,
|
|
IN LPCWSTR lpctstrImageName,
|
|
IN LPCWSTR lpctstrTspName,
|
|
IN DWORD dwFSPIVersion,
|
|
IN DWORD dwCapabilities
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxRegisterServiceProviderEx FaxRegisterServiceProviderExW
|
|
#else
|
|
#define FaxRegisterServiceProviderEx FaxRegisterServiceProviderExA
|
|
#endif // !UNICODE
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxUnregisterServiceProviderExA(
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCSTR lpctstrGUID
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxUnregisterServiceProviderExW(
|
|
IN HANDLE hFaxHandle,
|
|
IN LPCWSTR lpctstrGUID
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxUnregisterServiceProviderEx FaxUnregisterServiceProviderExW
|
|
#else
|
|
#define FaxUnregisterServiceProviderEx FaxUnregisterServiceProviderExA
|
|
#endif // !UNICODE
|
|
|
|
|
|
//********************************************
|
|
//* Server events
|
|
//********************************************
|
|
|
|
typedef enum
|
|
{
|
|
FAX_EVENT_TYPE_IN_QUEUE = 0x00000001,
|
|
FAX_EVENT_TYPE_OUT_QUEUE = 0x00000002,
|
|
FAX_EVENT_TYPE_CONFIG = 0x00000004,
|
|
FAX_EVENT_TYPE_ACTIVITY = 0x00000008,
|
|
FAX_EVENT_TYPE_QUEUE_STATE = 0x00000010,
|
|
FAX_EVENT_TYPE_IN_ARCHIVE = 0x00000020,
|
|
FAX_EVENT_TYPE_OUT_ARCHIVE = 0x00000040,
|
|
FAX_EVENT_TYPE_FXSSVC_ENDED = 0x00000080,
|
|
FAX_EVENT_TYPE_DEVICE_STATUS = 0x00000100,
|
|
FAX_EVENT_TYPE_NEW_CALL = 0x00000200
|
|
} FAX_ENUM_EVENT_TYPE;
|
|
|
|
typedef enum
|
|
{
|
|
FAX_JOB_EVENT_TYPE_ADDED,
|
|
FAX_JOB_EVENT_TYPE_REMOVED,
|
|
FAX_JOB_EVENT_TYPE_STATUS
|
|
} FAX_ENUM_JOB_EVENT_TYPE;
|
|
|
|
typedef enum
|
|
{
|
|
FAX_CONFIG_TYPE_RECEIPTS,
|
|
FAX_CONFIG_TYPE_ACTIVITY_LOGGING,
|
|
FAX_CONFIG_TYPE_OUTBOX,
|
|
FAX_CONFIG_TYPE_SENTITEMS,
|
|
FAX_CONFIG_TYPE_INBOX,
|
|
FAX_CONFIG_TYPE_SECURITY,
|
|
FAX_CONFIG_TYPE_EVENTLOGS,
|
|
FAX_CONFIG_TYPE_DEVICES,
|
|
FAX_CONFIG_TYPE_OUT_GROUPS,
|
|
FAX_CONFIG_TYPE_OUT_RULES
|
|
} FAX_ENUM_CONFIG_TYPE;
|
|
|
|
|
|
typedef struct _FAX_EVENT_JOBA
|
|
{
|
|
DWORDLONG dwlMessageId;
|
|
FAX_ENUM_JOB_EVENT_TYPE Type;
|
|
PFAX_JOB_STATUSA pJobData;
|
|
} FAX_EVENT_JOBA, *PFAX_EVENT_JOBA;
|
|
typedef struct _FAX_EVENT_JOBW
|
|
{
|
|
DWORDLONG dwlMessageId;
|
|
FAX_ENUM_JOB_EVENT_TYPE Type;
|
|
PFAX_JOB_STATUSW pJobData;
|
|
} FAX_EVENT_JOBW, *PFAX_EVENT_JOBW;
|
|
#ifdef UNICODE
|
|
typedef FAX_EVENT_JOBW FAX_EVENT_JOB;
|
|
typedef PFAX_EVENT_JOBW PFAX_EVENT_JOB;
|
|
#else
|
|
typedef FAX_EVENT_JOBA FAX_EVENT_JOB;
|
|
typedef PFAX_EVENT_JOBA PFAX_EVENT_JOB;
|
|
#endif // UNICODE
|
|
|
|
typedef struct _FAX_EVENT_DEVICE_STATUS
|
|
{
|
|
DWORD dwDeviceId; // Id of the device whose status has just changed
|
|
DWORD dwNewStatus; // The new status - a combination of values from FAX_ENUM_DEVICE_STATUS
|
|
} FAX_EVENT_DEVICE_STATUS, *PFAX_EVENT_DEVICE_STATUS;
|
|
|
|
|
|
typedef struct _FAX_EVENT_NEW_CALLA
|
|
{
|
|
HCALL hCall;
|
|
DWORD dwDeviceId;
|
|
LPTSTR lptstrCallerId;
|
|
} FAX_EVENT_NEW_CALLA, *PFAX_EVENT_NEW_CALLA;
|
|
typedef struct _FAX_EVENT_NEW_CALLW
|
|
{
|
|
HCALL hCall;
|
|
DWORD dwDeviceId;
|
|
LPTSTR lptstrCallerId;
|
|
} FAX_EVENT_NEW_CALLW, *PFAX_EVENT_NEW_CALLW;
|
|
#ifdef UNICODE
|
|
typedef FAX_EVENT_NEW_CALLW FAX_EVENT_NEW_CALL;
|
|
typedef PFAX_EVENT_NEW_CALLW PFAX_EVENT_NEW_CALL;
|
|
#else
|
|
typedef FAX_EVENT_NEW_CALLA FAX_EVENT_NEW_CALL;
|
|
typedef PFAX_EVENT_NEW_CALLA PFAX_EVENT_NEW_CALL;
|
|
#endif // UNICODE
|
|
|
|
|
|
typedef struct _FAX_EVENT_EXA
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
FILETIME TimeStamp;
|
|
FAX_ENUM_EVENT_TYPE EventType;
|
|
union
|
|
{
|
|
FAX_EVENT_JOBA JobInfo;
|
|
FAX_ENUM_CONFIG_TYPE ConfigType;
|
|
FAX_SERVER_ACTIVITY ActivityInfo;
|
|
FAX_EVENT_NEW_CALL NewCall;
|
|
DWORD dwQueueStates;
|
|
FAX_EVENT_DEVICE_STATUS DeviceStatus;
|
|
} EventInfo;
|
|
} FAX_EVENT_EXA, *PFAX_EVENT_EXA;
|
|
typedef struct _FAX_EVENT_EXW
|
|
{
|
|
DWORD dwSizeOfStruct;
|
|
FILETIME TimeStamp;
|
|
FAX_ENUM_EVENT_TYPE EventType;
|
|
union
|
|
{
|
|
FAX_EVENT_JOBW JobInfo;
|
|
FAX_ENUM_CONFIG_TYPE ConfigType;
|
|
FAX_SERVER_ACTIVITY ActivityInfo;
|
|
FAX_EVENT_NEW_CALL NewCall;
|
|
DWORD dwQueueStates;
|
|
FAX_EVENT_DEVICE_STATUS DeviceStatus;
|
|
} EventInfo;
|
|
} FAX_EVENT_EXW, *PFAX_EVENT_EXW;
|
|
#ifdef UNICODE
|
|
typedef FAX_EVENT_EXW FAX_EVENT_EX;
|
|
typedef PFAX_EVENT_EXW PFAX_EVENT_EX;
|
|
#else
|
|
typedef FAX_EVENT_EXA FAX_EVENT_EX;
|
|
typedef PFAX_EVENT_EXA PFAX_EVENT_EX;
|
|
#endif // UNICODE
|
|
|
|
|
|
|
|
//-------------------------------------------------------------------------------
|
|
// Printers Info
|
|
//-------------------------------------------------------------------------------
|
|
|
|
typedef struct _FAX_PRINTER_INFOA
|
|
{
|
|
LPSTR lptstrPrinterName;
|
|
LPSTR lptstrServerName;
|
|
LPSTR lptstrDriverName;
|
|
} FAX_PRINTER_INFOA, *PFAX_PRINTER_INFOA;
|
|
typedef struct _FAX_PRINTER_INFOW
|
|
{
|
|
LPWSTR lptstrPrinterName;
|
|
LPWSTR lptstrServerName;
|
|
LPWSTR lptstrDriverName;
|
|
} FAX_PRINTER_INFOW, *PFAX_PRINTER_INFOW;
|
|
#ifdef UNICODE
|
|
typedef FAX_PRINTER_INFOW FAX_PRINTER_INFO;
|
|
typedef PFAX_PRINTER_INFOW PFAX_PRINTER_INFO;
|
|
#else
|
|
typedef FAX_PRINTER_INFOA FAX_PRINTER_INFO;
|
|
typedef PFAX_PRINTER_INFOA PFAX_PRINTER_INFO;
|
|
#endif // UNICODE
|
|
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetServicePrintersA(
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_PRINTER_INFOA *ppPrinterInfo,
|
|
OUT LPDWORD lpdwPrintersReturned
|
|
);
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetServicePrintersW(
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_PRINTER_INFOW *ppPrinterInfo,
|
|
OUT LPDWORD lpdwPrintersReturned
|
|
);
|
|
#ifdef UNICODE
|
|
#define FaxGetServicePrinters FaxGetServicePrintersW
|
|
#else
|
|
#define FaxGetServicePrinters FaxGetServicePrintersA
|
|
#endif // !UNICODE
|
|
|
|
typedef BOOL
|
|
(WINAPI *PFAXGETSERVICEPRINTERSA)(
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_PRINTER_INFOA *ppPrinterInfo,
|
|
OUT LPDWORD lpdwPrintersReturned
|
|
);
|
|
typedef BOOL
|
|
(WINAPI *PFAXGETSERVICEPRINTERSW)(
|
|
IN HANDLE hFaxHandle,
|
|
OUT PFAX_PRINTER_INFOW *ppPrinterInfo,
|
|
OUT LPDWORD lpdwPrintersReturned
|
|
);
|
|
#ifdef UNICODE
|
|
#define PFAXGETSERVICEPRINTERS PFAXGETSERVICEPRINTERSW
|
|
#else
|
|
#define PFAXGETSERVICEPRINTERS PFAXGETSERVICEPRINTERSA
|
|
#endif // !UNICODE
|
|
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxRegisterForServerEvents (
|
|
IN HANDLE hFaxHandle,
|
|
IN DWORD dwEventTypes,
|
|
IN HANDLE hCompletionPort,
|
|
IN DWORD_PTR dwCompletionKey,
|
|
IN HWND hWnd,
|
|
IN DWORD dwMessage,
|
|
OUT LPHANDLE lphEvent
|
|
);
|
|
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxUnregisterForServerEvents (
|
|
IN HANDLE hEvent
|
|
);
|
|
|
|
|
|
//********************************************
|
|
//* Manual answer support functions
|
|
//********************************************
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxAnswerCall(
|
|
IN HANDLE hFaxHandle,
|
|
IN CONST DWORD dwDeviceId
|
|
);
|
|
|
|
//********************************************
|
|
//* Configuration Wizard support functions
|
|
//********************************************
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxGetConfigWizardUsed (
|
|
OUT LPBOOL lpbConfigWizardUsed
|
|
);
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxSetConfigWizardUsed (
|
|
IN HANDLE hFaxHandle,
|
|
OUT BOOL bConfigWizardUsed
|
|
);
|
|
|
|
//********************************************
|
|
//* Ivalidate archive folder
|
|
//********************************************
|
|
|
|
WINFAXAPI
|
|
BOOL
|
|
WINAPI
|
|
FaxRefreshArchive (
|
|
IN HANDLE hFaxHandle,
|
|
IN FAX_ENUM_MESSAGE_FOLDER Folder
|
|
);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|