/*++ Copyright (c) Microsoft Corporation. All rights reserved. Module Name: faxdev.h Abstract: This file contains the prototypes, etc for the FAX device provider API. --*/ #include #ifndef _FAXDEV_ #define _FAXDEV_ #if _MSC_VER > 1000 #pragma once #endif #ifdef __cplusplus extern "C" { #endif // // FAX status constants // #define FS_INITIALIZING 0x20000000 #define FS_DIALING 0x20000001 #define FS_TRANSMITTING 0x20000002 #define FS_RECEIVING 0x20000004 #define FS_COMPLETED 0x20000008 #define FS_HANDLED 0x20000010 #define FS_LINE_UNAVAILABLE 0x20000020 #define FS_BUSY 0x20000040 #define FS_NO_ANSWER 0x20000080 #define FS_BAD_ADDRESS 0x20000100 #define FS_NO_DIAL_TONE 0x20000200 #define FS_DISCONNECTED 0x20000400 #define FS_FATAL_ERROR 0x20000800 // see the stringid for the real status #define FS_NOT_FAX_CALL 0x20001000 #define FS_CALL_DELAYED 0x20002000 #define FS_CALL_BLACKLISTED 0x20004000 #define FS_USER_ABORT 0x20200000 #define FS_ANSWERED 0x20800000 // // data structures // typedef struct _FAX_SEND { DWORD SizeOfStruct; LPWSTR FileName; LPWSTR CallerName; LPWSTR CallerNumber; LPWSTR ReceiverName; LPWSTR ReceiverNumber; BOOL Branding; HCALL CallHandle; DWORD Reserved[3]; } FAX_SEND, *PFAX_SEND; typedef struct _FAX_RECEIVE { DWORD SizeOfStruct; LPWSTR FileName; LPWSTR ReceiverName; LPWSTR ReceiverNumber; DWORD Reserved[4]; } FAX_RECEIVE, *PFAX_RECEIVE; typedef struct _FAX_DEV_STATUS { DWORD SizeOfStruct; DWORD StatusId; DWORD StringId; DWORD PageCount; LPWSTR CSI; LPWSTR CallerId; LPWSTR RoutingInfo; DWORD ErrorCode; DWORD Reserved[3]; } FAX_DEV_STATUS, *PFAX_DEV_STATUS; typedef BOOL (CALLBACK *PFAX_SERVICE_CALLBACK)( IN HANDLE FaxHandle, IN DWORD DeviceId, IN DWORD_PTR Param1, IN DWORD_PTR Param2, IN DWORD_PTR Param3 ); typedef void (CALLBACK *PFAX_LINECALLBACK)( IN HANDLE FaxHandle, IN DWORD hDevice, IN DWORD dwMessage, IN DWORD_PTR dwInstance, IN DWORD_PTR dwParam1, IN DWORD_PTR dwParam2, IN DWORD_PTR dwParam3 ); BOOL WINAPI FaxDevInitialize( IN HLINEAPP LineAppHandle, IN HANDLE HeapHandle, OUT PFAX_LINECALLBACK *LineCallbackFunction, IN PFAX_SERVICE_CALLBACK FaxServiceCallback ); HRESULT WINAPI FaxDevShutdown( void ); BOOL WINAPI FaxDevVirtualDeviceCreation( OUT LPDWORD DeviceCount, OUT LPWSTR DeviceNamePrefix, OUT LPDWORD DeviceIdPrefix, IN HANDLE CompletionPort, IN ULONG_PTR CompletionKey ); BOOL WINAPI FaxDevStartJob( IN HLINE LineHandle, IN DWORD DeviceId, OUT PHANDLE FaxHandle, IN HANDLE CompletionPortHandle, IN ULONG_PTR CompletionKey ); BOOL WINAPI FaxDevEndJob( IN HANDLE FaxHandle ); typedef BOOL (CALLBACK *PFAX_SEND_CALLBACK)( IN HANDLE FaxHandle, IN HCALL CallHandle, IN DWORD Reserved1, IN DWORD Reserved2 ); BOOL WINAPI FaxDevSend( IN HANDLE FaxHandle, IN PFAX_SEND FaxSend, IN PFAX_SEND_CALLBACK FaxSendCallback ); #define FAXDEVRECEIVE_SIZE 4096 BOOL WINAPI FaxDevReceive( IN HANDLE FaxHandle, IN HCALL CallHandle, IN OUT PFAX_RECEIVE FaxReceive ); #define FAXDEVREPORTSTATUS_SIZE 4096 BOOL WINAPI FaxDevReportStatus( IN HANDLE FaxHandle OPTIONAL, OUT PFAX_DEV_STATUS FaxStatus, IN DWORD FaxStatusSize, OUT LPDWORD FaxStatusSizeRequired ); BOOL WINAPI FaxDevAbortOperation( IN HANDLE FaxHandle ); BOOL WINAPI FaxDevConfigure( OUT HPROPSHEETPAGE *PropSheetPage ); typedef BOOL (WINAPI *PFAXDEVINITIALIZE) (HLINEAPP,HANDLE,PFAX_LINECALLBACK*,PFAX_SERVICE_CALLBACK); typedef BOOL (WINAPI *PFAXDEVVIRTUALDEVICECREATION) (LPDWORD,LPWSTR,LPDWORD,HANDLE,ULONG_PTR); typedef BOOL (WINAPI *PFAXDEVSTARTJOB) (HLINE,DWORD,PHANDLE,HANDLE,ULONG_PTR); typedef BOOL (WINAPI *PFAXDEVENDJOB) (HANDLE); typedef BOOL (WINAPI *PFAXDEVSEND) (HANDLE,PFAX_SEND,PFAX_SEND_CALLBACK); typedef BOOL (WINAPI *PFAXDEVRECEIVE) (HANDLE,HCALL,PFAX_RECEIVE); typedef BOOL (WINAPI *PFAXDEVREPORTSTATUS) (HANDLE,PFAX_DEV_STATUS,DWORD,LPDWORD); typedef BOOL (WINAPI *PFAXDEVABORTOPERATION) (HANDLE); typedef BOOL (WINAPI *PFAXDEVCONFIGURE) (HPROPSHEETPAGE*); typedef HRESULT (WINAPI * PFAXDEVSHUTDOWN) (void); #ifdef __cplusplus } #endif #endif