You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
300 lines
6.1 KiB
300 lines
6.1 KiB
/*++
|
|
|
|
Copyright (c) 1996 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
faxmon.h
|
|
|
|
Abstract:
|
|
|
|
Header file for fax print monitor
|
|
|
|
Environment:
|
|
|
|
Windows XP fax print monitor
|
|
|
|
Revision History:
|
|
|
|
02/22/96 -davidx-
|
|
Created it.
|
|
|
|
dd-mm-yy -author-
|
|
description
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _FAXMON_H_
|
|
#define _FAXMON_H_
|
|
|
|
#if defined(UNICODE) && !defined(_UNICODE)
|
|
#define _UNICODE
|
|
#endif
|
|
|
|
#include <stddef.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <windows.h>
|
|
#include <winspool.h>
|
|
#include <winsplp.h>
|
|
#include <tchar.h>
|
|
#include "faxutil.h"
|
|
#include <fxsapip.h>
|
|
#include "jobtag.h"
|
|
#include "resource.h"
|
|
#include "faxres.h"
|
|
#include "Dword2Str.h"
|
|
|
|
//
|
|
// Data structure for representing a fax monitor port
|
|
//
|
|
|
|
typedef struct _FAXPORT {
|
|
|
|
PVOID startSig; // signature
|
|
LPTSTR pName; // port name
|
|
HANDLE hFaxSvc; // fax service handle
|
|
DWORD jobId; // main job ID
|
|
DWORD nextJobId; // next job ID in the chain
|
|
HANDLE hFile; // handle to currently open file
|
|
LPTSTR pFilename; // pointer to currently open file name
|
|
LPTSTR pPrinterName; // currently connected printer name
|
|
HANDLE hPrinter; // open handle to currently connected printer
|
|
LPTSTR pParameters; // pointer to job parameter string
|
|
FAX_JOB_PARAM_EX JobParamsEx; // pointer to individual job parameters
|
|
//
|
|
FAX_COVERPAGE_INFO_EX CoverPageEx; // Cover page information
|
|
FAX_PERSONAL_PROFILE SenderProfile; // Sender information
|
|
PFAX_PERSONAL_PROFILE pRecipients; // Array of recipient information for this transmission
|
|
UINT nRecipientCount; // The number of recipients in this transmission
|
|
HANDLE hCoverPageFile;
|
|
LPTSTR pCoverPageFileName; // The name of the cover page file generated on the server by the fax monitor.
|
|
// This file contains the cover page template as transfered via the cover page
|
|
// print job.
|
|
BOOL bCoverPageJob; // TRUE if the current print job is the cover page job.
|
|
PVOID endSig; // signature
|
|
|
|
} FAXPORT, *PFAXPORT;
|
|
|
|
#define ValidFaxPort(pFaxPort) \
|
|
((pFaxPort) && (pFaxPort) == (pFaxPort)->startSig && (pFaxPort) == (pFaxPort)->endSig)
|
|
|
|
//
|
|
// Different error code when sending fax document
|
|
//
|
|
|
|
#define FAXERR_NONE 0
|
|
#define FAXERR_IGNORE 1
|
|
#define FAXERR_RESTART 2
|
|
#define FAXERR_SPECIAL 3
|
|
|
|
#define FAXERR_FATAL IDS_FAXERR_FATAL
|
|
#define FAXERR_RECOVERABLE IDS_FAXERR_RECOVERABLE
|
|
#define FAXERR_BAD_TIFF IDS_FAXERR_BAD_TIFF
|
|
#define FAXERR_BAD_DATA16 IDS_FAXERR_BAD_DATA16
|
|
|
|
//
|
|
// Memory allocation and deallocation macros
|
|
//
|
|
|
|
//
|
|
// undefine the memory allocation routines from FAXUTIL.H
|
|
//
|
|
#undef MemAlloc
|
|
#undef MemFree
|
|
|
|
#define MemAlloc(size) ((PVOID) LocalAlloc(LMEM_FIXED, (size)))
|
|
#define MemAllocZ(size) ((PVOID) LocalAlloc(LPTR, (size)))
|
|
#define MemFree(ptr) { if (ptr) LocalFree((HLOCAL) (ptr)); }
|
|
|
|
//
|
|
// Number of tags used for passing fax job parameters
|
|
//
|
|
|
|
#define NUM_JOBPARAM_TAGS 12
|
|
|
|
//
|
|
// Nul terminator for a character string
|
|
//
|
|
|
|
#define NUL 0
|
|
|
|
//
|
|
// Result of string comparison
|
|
//
|
|
|
|
#define EQUAL_STRING 0
|
|
|
|
#define IsEmptyString(p) ((p)[0] == NUL)
|
|
#define IsNulChar(c) ((c) == NUL)
|
|
#define SizeOfString(p) ((_tcslen(p) + 1) * sizeof(TCHAR))
|
|
|
|
//
|
|
// Maximum value for signed and unsigned integers
|
|
//
|
|
|
|
#ifndef MAX_LONG
|
|
#define MAX_LONG 0x7fffffff
|
|
#endif
|
|
|
|
#ifndef MAX_DWORD
|
|
#define MAX_DWORD 0xffffffff
|
|
#endif
|
|
|
|
#ifndef MAX_SHORT
|
|
#define MAX_SHORT 0x7fff
|
|
#endif
|
|
|
|
#ifndef MAX_WORD
|
|
#define MAX_WORD 0xffff
|
|
#endif
|
|
|
|
|
|
//
|
|
// Declaration of print monitor entry points
|
|
//
|
|
|
|
BOOL
|
|
FaxMonOpenPort(
|
|
LPTSTR pPortName,
|
|
PHANDLE pHandle
|
|
);
|
|
|
|
BOOL
|
|
FaxMonClosePort(
|
|
HANDLE hPort
|
|
);
|
|
|
|
BOOL
|
|
FaxMonStartDocPort(
|
|
HANDLE hPort,
|
|
LPTSTR pPrinterName,
|
|
DWORD JobId,
|
|
DWORD Level,
|
|
LPBYTE pDocInfo
|
|
);
|
|
|
|
BOOL
|
|
FaxMonEndDocPort(
|
|
HANDLE hPort
|
|
);
|
|
|
|
BOOL
|
|
FaxMonWritePort(
|
|
HANDLE hPort,
|
|
LPBYTE pBuffer,
|
|
DWORD cbBuf,
|
|
LPDWORD pcbWritten
|
|
);
|
|
|
|
BOOL
|
|
FaxMonReadPort(
|
|
HANDLE hPort,
|
|
LPBYTE pBuffer,
|
|
DWORD cbBuf,
|
|
LPDWORD pcbRead
|
|
);
|
|
|
|
BOOL
|
|
FaxMonEnumPorts(
|
|
LPTSTR pServerName,
|
|
DWORD Level,
|
|
LPBYTE pPorts,
|
|
DWORD cbBuf,
|
|
LPDWORD pcbNeeded,
|
|
LPDWORD pReturned
|
|
);
|
|
|
|
BOOL
|
|
FaxMonAddPort(
|
|
LPTSTR pServerName,
|
|
HWND hwnd,
|
|
LPTSTR pMonitorName
|
|
);
|
|
|
|
BOOL
|
|
FaxMonAddPortEx(
|
|
LPTSTR pServerName,
|
|
DWORD level,
|
|
LPBYTE pBuffer,
|
|
LPTSTR pMonitorName
|
|
);
|
|
|
|
BOOL
|
|
FaxMonDeletePort(
|
|
LPTSTR pServerName,
|
|
HWND hwnd,
|
|
LPTSTR pPortName
|
|
);
|
|
|
|
BOOL
|
|
FaxMonConfigurePort(
|
|
LPWSTR pServerName,
|
|
HWND hwnd,
|
|
LPWSTR pPortName
|
|
);
|
|
|
|
//
|
|
// Get the list of fax devices from the service
|
|
//
|
|
|
|
PFAX_PORT_INFO
|
|
MyFaxEnumPorts(
|
|
LPDWORD pcPorts,
|
|
BOOL useCache
|
|
);
|
|
|
|
//
|
|
// Wrapper function for fax service's FaxGetPort API
|
|
//
|
|
|
|
PFAX_PORT_INFO
|
|
MyFaxGetPort(
|
|
LPTSTR pPortName,
|
|
BOOL useCache
|
|
);
|
|
|
|
//
|
|
// Make a duplicate of the given character string
|
|
//
|
|
|
|
LPTSTR
|
|
DuplicateString(
|
|
LPCTSTR pSrcStr
|
|
);
|
|
|
|
|
|
//
|
|
// Wrapper function for spooler API GetJob
|
|
//
|
|
|
|
PVOID
|
|
MyGetJob(
|
|
HANDLE hPrinter,
|
|
DWORD level,
|
|
DWORD jobId
|
|
);
|
|
|
|
//
|
|
// Create a temporary file in the system spool directory for storing fax data
|
|
//
|
|
|
|
LPTSTR
|
|
CreateTempFaxFile(
|
|
LPCTSTR lpctstrPrefix
|
|
);
|
|
|
|
//
|
|
// Open a handle to the current fax job file associated with a port
|
|
//
|
|
|
|
BOOL
|
|
OpenTempFaxFile(
|
|
PFAXPORT pFaxPort,
|
|
BOOL doAppend
|
|
);
|
|
|
|
|
|
#endif // !_FAXMON_H_
|
|
|