Leaked source code of windows server 2003
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

/*++
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_