Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

166 lines
4.2 KiB

//****************************************************************************
// Generic Win 3.1 fax printer driver support
//
// 02-jan-95 nandurir created.
// 14-mar-95 reedb Use GDI hooks to move most functionality to UI.
// 16-aug-95 reedb Move to kernel mode. Many declarations and
// definitions moved from FAXCOMM.H to this file.
//
//****************************************************************************
#include "stddef.h"
#include "windows.h"
#include "winddi.h"
#include "faxcomm.h"
#include "winspool.h"
// The following include is to pickup the definitions for
// the DrvUpgradePrinter private API. These definitions should be in public.
#include <splapip.h>
// WOWFAX component file names.
#define WOWFAX_DLL_NAME L"WOWFAX.DLL"
#define WOWFAXUI_DLL_NAME L"WOWFAXUI.DLL"
// String table constants:
#define WOWFAX_MAX_USER_MSG_LEN 256
#define WOWFAX_UNKNOWN_PROB_STR 0x100
#define WOWFAX_NAME_STR 0x101
#define WOWFAX_NOWOW_STR 0x102
#define WOWFAX_SELF_CONFIG_STR 0x103
#define WOWFAX_ENABLE_CONFIG_STR 0x104
// Dialog constants:
#define IDD_NULLPROP 0x200
#define IDD_DOCPROP 0x201
// Text control constants:
#define IDC_STATIC -1
#define IDC_FEEDBACK 0x300
// InterProcCommHandler command constants
#define DRVFAX_SETMAPDATA 0x1
#define DRVFAX_SENDTOWOW 0x2
#define DRVFAX_SENDNOTIFYWOW 0x3
#define DRVFAX_CREATEMAP 0x4
#define DRVFAX_DESTROYMAP 0x5
#define DRVFAX_CALLWOW 0x6
// Logging macros
/* XLATOFF */
// #define IFLOG(l) if (l==iFaxLogLevel && (iFaxLogLevel&1) || l<=iFaxLogLevel && !(iFaxLogLevel&1) || l == 0)
#undef LOG
#ifdef NOLOG
#define LOG(l,args)
#define SETREQLOG(l)
#else
#define SETREQLOG(l) iReqFaxLogLevel = l
#define LOG(l,args) {SETREQLOG(l) ; faxlogprintf args;}
#endif
#if DBG
extern INT iReqFaxLogLevel;
#define LOGDEBUG(l,args) LOG(l,args)
#else
#define LOGDEBUG(l,args)
#endif
/* XLATON */
//
// This structure is used to hold 16-bit fax driver data stored
// in the registry.
//
typedef struct _REGFAXDRVINFO16 {
LPTSTR lpDeviceName;
LPTSTR lpDriverName;
LPTSTR lpPortName;
} REGFAXDRVINFO16, *LPREGFAXDRVINFO16;
// The the escapes in the following escape range all need a valid HDC.
// Range is inclusive lower, exclusive upper bound. See GDISPOOL.H for
// the actual escape definitions.
#define DOCUMENTEVENT_HDCFIRST 5
#define DOCUMENTEVENT_HDCLAST 11
// Prototypes for public functions implemented in WFSHEETS.C:
PVOID MyGetPrinter(HANDLE hPrinter, DWORD level);
// Prototypes for public functions implemented in WFUPGRAD.C:
BOOL DoUpgradePrinter(DWORD dwLevel, LPDRIVER_UPGRADE_INFO_1W lpDrvUpgradeInfo);
// Prototypes for public functions implemented in WFHELPERS.C:
LPREGFAXDRVINFO16 Get16BitDriverInfoFromRegistry(PWSTR pDeviceName);
VOID faxlogprintf(LPTSTR pszFmt, ...);
VOID LogFaxDev(LPTSTR pszTitle, LPFAXDEV lpFaxDev);
VOID LogWowFaxInfo(LPWOWFAXINFO lpWowFaxInfo);
BOOL ValidateFaxDev(LPFAXDEV lpFaxDev);
VOID Free16BitDriverInfo(LPREGFAXDRVINFO16 lpRegFaxDrvInfo16);
BOOL FaxMapHandler(LPFAXDEV lpdev, UINT iAction);
BOOL InterProcCommHandler(LPFAXDEV lpdev, UINT iAction);
LPVOID WFHeapAlloc(DWORD dwBytes, LPWSTR lpszWhoCalled);
LPVOID WFLocalAlloc(DWORD dwBytes, LPWSTR lpszWhoCalled);
HWND FindWowFaxWindow(void);
LPTSTR DupTokenW(LPTSTR lpTok);
// Prototypes for functions which DrvDocumentEvent dispatches,
// implemented in WOWFAXUI.C:
int DocEvntCreateDCpre(
LPWSTR lpszDevice,
DEVMODEW *pDevModIn,
DEVMODEW **pDevModOut
);
int DocEvntResetDCpre(
HDC hdc,
DEVMODEW *pDevModIn,
DEVMODEW **pDevModOut
);
int DocEvntCreateDCpost(
HDC hdc,
DEVMODEW *pDevModIn
);
int DocEvntResetDCpost(
HDC hdc,
DEVMODEW *pDevModIn
);
int DocEvntStartDoc(
HDC hdc,
DOCINFOW *pDocInfoW
);
int DocEvntDeleteDC(
HDC hdc
);
int DocEvntEndPage(
HDC hdc
);
int DocEvntEndDoc(
HDC hdc
);
//
// Memory allocation macro.
//
#if DBG
#define WFLOCALALLOC(dwBytes, lpszWhoCalled) WFLocalAlloc(dwBytes, lpszWhoCalled)
#else
#define WFLOCALALLOC(dwBytes, lpszWhoCalled) LocalAlloc(LPTR, dwBytes)
#endif