summaryrefslogtreecommitdiffstats
path: root/private/mvdm/inc/wowfax.h
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/mvdm/inc/wowfax.h
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/mvdm/inc/wowfax.h')
-rw-r--r--private/mvdm/inc/wowfax.h302
1 files changed, 302 insertions, 0 deletions
diff --git a/private/mvdm/inc/wowfax.h b/private/mvdm/inc/wowfax.h
new file mode 100644
index 000000000..dddc1ac7e
--- /dev/null
+++ b/private/mvdm/inc/wowfax.h
@@ -0,0 +1,302 @@
+//****************************************************************************
+// WOW fax support. Common file. Conditionally shared between wow16, wow32,
+// wowfax and wowfaxui
+//
+// 16bit structures are share between wow16 and wow32 only. Though they get
+// included while compiling 32bit printdrivers wowfax and wowfaxui, yet they
+// are incorrect and inaccessible from those dlls.
+//
+//
+// History:
+// 02-jan-95 nandurir created.
+// 01-feb-95 reedb Clean-up, support printer install and bug fixes.
+//
+//****************************************************************************
+
+//***************************************************************************
+// WM_DDRV_ defines - Common to wowexec,wow32,wowfax,wowfaxui. If you add
+// a message, be sure to add it to the debug strings also.
+//***************************************************************************
+
+#define WM_DDRV_FIRST (WM_USER+0x100+1) // begin DDRV range
+#define WM_DDRV_LOAD (WM_USER+0x100+1)
+#define WM_DDRV_ENABLE (WM_USER+0x100+2)
+#define WM_DDRV_STARTDOC (WM_USER+0x100+3)
+#define WM_DDRV_PRINTPAGE (WM_USER+0x100+4)
+#define WM_DDRV_ESCAPE (WM_USER+0x100+5)
+#define WM_DDRV_DISABLE (WM_USER+0x100+6)
+#define WM_DDRV_INITFAXINFO16 (WM_USER+0x100+7)
+#define WM_DDRV_ENDDOC (WM_USER+0x100+8)
+#define WM_DDRV_SUBCLASS (WM_USER+0x100+9)
+#define WM_DDRV_EXTDMODE (WM_USER+0x100+10)
+#define WM_DDRV_DEVCAPS (WM_USER+0x100+11)
+#define WM_DDRV_FREEFAXINFO16 (WM_USER+0x100+12)
+#define WM_DDRV_UNLOAD (WM_USER+0x100+20)
+#define WM_DDRV_LAST (WM_USER+0x100+20) // end DDRV range
+
+#ifdef DEBUG
+#ifdef DEFINE_DDRV_DEBUG_STRINGS
+char *szWmDdrvDebugStrings[] =
+{
+ "WM_DDRV_LOAD",
+ "WM_DDRV_ENABLE",
+ "WM_DDRV_STARTDOC",
+ "WM_DDRV_PRINTPAGE",
+ "WM_DDRV_ESCAPE",
+ "WM_DDRV_DISABLE",
+ "WM_DDRV_INITFAXINFO16",
+ "WM_DDRV_ENDDOC",
+ "WM_DDRV_SUBCLASS",
+ "WM_DDRV_EXTDMODE",
+ "WM_DDRV_DEVCAPS",
+ "WM_DDRV_FREEFAXINFO16",
+ "UNKNOWN MESSAGE",
+ "UNKNOWN MESSAGE",
+ "UNKNOWN MESSAGE",
+ "UNKNOWN MESSAGE",
+ "UNKNOWN MESSAGE",
+ "UNKNOWN MESSAGE",
+ "UNKNOWN MESSAGE",
+ "WM_DDRV_UNLOAD"
+};
+#endif
+#endif // #define(DEBUG)
+
+// WOWFAX component file names. Unicode and ANSII
+#define WOWFAX_DLL_NAME L"WOWFAX.DLL"
+#define WOWFAXUI_DLL_NAME L"WOWFAXUI.DLL"
+#define WOWFAX_DLL_NAME_A "WOWFAX.DLL"
+#define WOWFAXUI_DLL_NAME_A "WOWFAXUI.DLL"
+
+//***************************************************************************
+// wow16 ie wowfax.c defines WOWFAX16 to include 16bit print.h etc
+//
+//***************************************************************************
+
+#if defined(_WOWFAX16_)
+
+#include "\nt\private\mvdm\wow16\inc\print.h"
+#include "\nt\private\mvdm\wow16\inc\gdidefs.inc"
+
+#define LPTSTR LPSTR
+#define TEXT(x) x
+#define SRCCOPY 0x00CC0020L
+
+//
+// the following UNALIGNED definition is required because this file
+// in included in wow16\test\shell\wowfax.h
+//
+
+#ifndef UNALIGNED
+
+#if defined(MIPS) || defined(_ALPHA_) // winnt
+#define UNALIGNED __unaligned // winnt
+#else // winnt
+#define UNALIGNED // winnt
+#endif // winnt
+
+#endif
+
+
+#endif // defined(wowfax16)
+
+//***************************************************************************
+// WOWFAXINFO16 common to wow16 and wow32
+// Struct cannot be accessed from 32bit wowfax/wowfaxui dlls
+//***************************************************************************
+
+#define WFINFO16_ENABLED 0x01
+
+/* XLATOFF */
+#pragma pack(2)
+/* XLATON */
+
+typedef struct _WOWFAXINFO16 { /* winfo16 */
+ WORD hmem;
+ WORD flState;
+ WORD hInst;
+
+ WORD (FAR PASCAL *lpEnable)(LPVOID,short,LPSTR,LPSTR,LPVOID);
+ VOID (FAR PASCAL *lpDisable)(LPVOID);
+ int (FAR PASCAL *lpControl)(LPVOID, short, LPVOID, LPVOID);
+ BOOL (FAR PASCAL *lpBitblt)(LPVOID,WORD,WORD,LPVOID,
+ WORD,WORD,WORD,WORD,long,LPVOID,LPVOID);
+ WORD (FAR PASCAL *lpExtDMode)(HWND, HANDLE, LPVOID, LPSTR, LPSTR,
+ LPVOID, LPSTR , WORD);
+ DWORD (FAR PASCAL *lpDevCaps)(LPSTR, LPSTR, WORD, LPSTR, LPVOID);
+
+ WORD hmemdevice;
+ DWORD cData;
+ WORD hwndui;
+ DWORD retvalue;
+ WORD wCmd;
+
+ // The following pointers provide offsets into the mapped file
+ // section used for inter process communication. They point to
+ // objects which have a variable length.
+ LPVOID lpDevice;
+ LPVOID lpDriverName;
+ LPVOID lpPortName;
+ LPVOID lpIn;
+ LPVOID lpOut;
+
+ // Since we have a max length (CCHDEVICENAME) we'll pass
+ // the printer/device name in this fixed length buffer.
+ char szDeviceName[CCHDEVICENAME+1];
+
+} WOWFAXINFO16;
+
+typedef WOWFAXINFO16 UNALIGNED FAR *LPWOWFAXINFO16;
+
+//***************************************************************************
+// GDIINFO16 common to wow16 and wow32
+// - this structure copied from wow16\inc\gdidefs.inc
+// - PTTYPE has been replaced with POINT
+//
+// Struct cannot be accessed from 32bit wowfax/wowfaxui dlls. the
+// definition itself will be incorrect.
+//
+//***************************************************************************
+
+#ifndef _DEF_WOW32_
+#define POINT16 POINT
+#endif
+
+typedef struct _GDIINFO16{ /* gdii16 */
+ short int dpVersion;
+ short int dpTechnology;
+ short int dpHorzSize;
+ short int dpVertSize;
+ short int dpHorzRes;
+ short int dpVertRes;
+ short int dpBitsPixel;
+ short int dpPlanes;
+ short int dpNumBrushes;
+ short int dpNumPens;
+ short int futureuse;
+ short int dpNumFonts;
+ short int dpNumColors;
+ short int dpDEVICEsize;
+ unsigned short int dpCurves;
+ unsigned short int dpLines;
+ unsigned short int dpPolygonals;
+ unsigned short int dpText;
+ unsigned short int dpClip;
+ unsigned short int dpRaster;
+ short int dpAspectX;
+ short int dpAspectY;
+ short int dpAspectXY;
+ short int dpStyleLen;
+ POINT16 dpMLoWin;
+ POINT16 dpMLoVpt;
+ POINT16 dpMHiWin;
+ POINT16 dpMHiVpt;
+ POINT16 dpELoWin;
+ POINT16 dpELoVpt;
+ POINT16 dpEHiWin;
+ POINT16 dpEHiVpt;
+ POINT16 dpTwpWin;
+ POINT16 dpTwpVpt;
+ short int dpLogPixelsX;
+ short int dpLogPixelsY;
+ short int dpDCManage;
+ unsigned short int dpCaps1;
+ short int futureuse4;
+ short int futureuse5;
+ short int futureuse6;
+ short int futureuse7;
+ WORD dpNumPalReg;
+ WORD dpPalReserved;
+ WORD dpColorRes;
+} GDIINFO16;
+
+typedef GDIINFO16 UNALIGNED FAR *LPGDIINFO16;
+
+
+/* XLATOFF */
+#pragma pack()
+/* XLATON */
+
+#ifndef _WOWFAX16_
+
+//***************************************************************************
+// WOWFAXINFO - common to wow32,wowfax,wowfaxui. This defines the header of
+// shared memory section.
+//
+//***************************************************************************
+
+typedef struct _WOWFAXINFO { /* faxi */
+ HWND hwnd;
+ DWORD tid;
+ WNDPROC proc16;
+ LPBYTE lpinfo16;
+
+ UINT msg;
+ WPARAM hdc;
+
+ WORD wCmd;
+ DWORD cData;
+ HWND hwndui;
+ DWORD retvalue;
+ DWORD status;
+
+ // The following pointers provide offsets into the mapped file
+ // section used for inter process communication. They point to
+ // objects which have a variable length.
+ LPVOID lpDevice;
+ LPVOID lpDriverName;
+ LPVOID lpPortName;
+ LPVOID lpIn;
+ LPVOID lpOut;
+
+ // Since we have a max length (CCHDEVICENAME) we'll pass
+ // the printer/device name in this fixed length buffer.
+ WCHAR szDeviceName[CCHDEVICENAME+1];
+
+ UINT bmPixPerByte;
+ UINT bmWidthBytes;
+ UINT bmHeight;
+ LPBYTE lpbits;
+
+} WOWFAXINFO, FAR *LPWOWFAXINFO;
+
+#endif // _WOWFAX16_
+
+#define WOWFAX_CLASS TEXT("WOWFaxClass")
+
+VOID GetFaxDataMapName(DWORD idMap, LPTSTR lpT);
+
+//***************************************************************************
+// Common functions for wow32, wowfax and wowfaxui.
+//***************************************************************************
+
+#ifdef WOWFAX_INC_COMMON_CODE
+
+#define WOWFAX_MAPPREFIX TEXT("wfm")
+#define WOWFAX_HEXDIGITS TEXT("0123456789abcdef")
+
+//***************************************************************************
+// GetFaxDataMapName - given idMap, generates the sharedmem Map Name.
+// A process can access the relevant data by opening the file
+// identified by idMap
+//***************************************************************************
+
+VOID GetFaxDataMapName(DWORD idMap, LPTSTR lpT)
+{
+ int i;
+ int cb = lstrlen(WOWFAX_MAPPREFIX);
+ LPBYTE lpid = (LPBYTE)&idMap;
+ LPTSTR lphexT = WOWFAX_HEXDIGITS;
+
+ lstrcpy(lpT, WOWFAX_MAPPREFIX);
+ for (i = 0; i < sizeof(idMap) ; i++) {
+ lpT[(i * 2) + cb] = lphexT[lpid[i] & 0xf];
+ lpT[(i * 2) + cb + 1] = lphexT[(lpid[i] & 0xf0) >> 4];
+ }
+
+ lpT[(i * 2) + cb] = 0;
+}
+
+#endif // WOWFAX_INC_COMMON_CODE
+
+