windows-nt/Source/XPSP1/NT/public/sdk/inc/faxdev.h
2020-09-26 16:20:57 +08:00

206 lines
4.6 KiB
C

/*++
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 <commctrl.h>
#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