diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/mvdm/inc | |
download | NT4.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 '')
63 files changed, 17481 insertions, 0 deletions
diff --git a/private/mvdm/inc/apistruc.h b/private/mvdm/inc/apistruc.h new file mode 100644 index 000000000..b95bd3186 --- /dev/null +++ b/private/mvdm/inc/apistruc.h @@ -0,0 +1,151 @@ +/*****************************************************************/ +/** Microsoft LAN Manager **/ +/** Copyright(c) Microsoft Corp., 1990 **/ +/*****************************************************************/ +/*** apistruc.h + * + * This file contains the structure definitions used to pass parameters + * to the loadable APIs in the REDIR 1.5 project + * + * CONTENTS tr_packet + * NetWkstaSetUIDStruc + * NetWkstaLogonStruc + * NetWkstaReLogonStruc + * NetSpecialSMBStruc + * NetRemoteCopyStruc + * NetMessageBufferSendStruc + * NetMessageNameGetInfoStruc + * NetServiceControlStruc + * NetUseGetInfoStruc + */ + +struct tr_packet { + char FAR * tr_name; /* UNC Machine/Transaction name */ + char FAR * tr_passwd; /* password */ + char FAR * tr_spbuf; /* Send parameter buffer address */ + char FAR * tr_sdbuf; /* Send data buffer address */ + char FAR * tr_rsbuf; /* Receive set up buffer address */ + char FAR * tr_rpbuf; /* Receive parameter buffer address */ + char FAR * tr_rdbuf; /* Receive data buffer address */ + unsigned short tr_splen; /* Number of send parameter bytes */ + unsigned short tr_sdlen; /* Number of send data bytes */ + unsigned short tr_rplen; /* Number of receive parameter bytes */ + unsigned short tr_rdlen; /* Number of receive data bytes */ + unsigned short tr_rslen; /* Number of receive set up bytes */ + unsigned short tr_flags; /* Flags */ + unsigned long tr_timeout; /* Timeout */ + unsigned short tr_resvd; /* RESERVED (MBZ) */ + unsigned short tr_sslen; /* Number of send set up bytes */ +};/* tr_packet */ + +/* data structure to simulate Transaction2 SMB. + */ +struct tr2_packet { + char FAR * tr2_name; /* UNC Machine/Transaction name */ + char FAR * tr2_passwd; /* password */ + char FAR * tr2_spbuf; /* Send parameter buffer address */ + char FAR * tr2_sdbuf; /* Send data buffer address */ + char FAR * tr2_rsbuf; /* Receive set up buffer address */ + char FAR * tr2_rpbuf; /* Receive parameter buffer address */ + char FAR * tr2_rdbuf; /* Receive data buffer address */ + unsigned short tr2_splen; /* Number of send parameter bytes */ + unsigned short tr2_sdlen; /* Number of send data bytes */ + unsigned short tr2_rplen; /* Number of receive parameter bytes */ + unsigned short tr2_rdlen; /* Number of receive data bytes */ + unsigned short tr2_rslen; /* Number of receive set up bytes */ + unsigned short tr2_flags; /* Flags */ + unsigned long tr2_timeout; /* Timeout */ + unsigned short tr2_resvd; /* RESERVED (MBZ) */ + unsigned short tr2_sslen; /* Number of send set up bytes */ + unsigned short tr2_trancode; /* Transaction code for T2 SMB */ +};/* tr2_packet */ + +struct NetWkstaSetUIDStruc { + const char FAR * su_username; /* username to log on/off */ + const char FAR * su_password; /* password */ + const char FAR * su_parms; /* OEM-specific parameter string */ +};/* NetWkstaSetUIDStruc */ + +struct NetWkstaLogonStruc { + char FAR * ln_username; /* new user name */ + char FAR * ln_password; /* new password */ + char FAR * ln_parms; /* OEM-specific parameter string */ + long FAR * ln_uid; /* UID returned here */ + char FAR * ln_buffer; /* buffer for passkey */ + unsigned short ln_buflen; /* length of passkey buffer */ +};/* NetWkstaLogonStruc */ + +struct NetWkstaReLogonStruc { + char FAR * rl_username; /* user name to re-log on */ + char FAR * rl_password; /* password to use in re-log on */ + char FAR * rl_parms; /* OEM-specific parameters */ + char FAR * rl_buffer; /* passkey buffer */ + unsigned short rl_buflen; /* length of passkey */ +};/* NetWkstaReLogonStruc */ + +struct NetSpecialSMBStruc { + char FAR * sp_uncname; /* UNC session name for SMB */ + char FAR * sp_reqbuf; /* Send SMB request buffer */ + unsigned short sp_reqlen; /* Length of send buffer */ + char FAR * sp_rspbuf; /* Receive SMB response buffer */ + unsigned short sp_rsplen; /* Length of receive buffer */ +};/* NetSpecialSMBStruc */ + +struct NetRemoteCopyStruc { + char FAR * sourcepath; /* ASCIIZ fully specified source path */ + char FAR * destpath; /* ASCIIZ fully specified dest path */ + char FAR * sourcepass; /* password for source path (NULL for default) */ + char FAR * destpass; /* password for dest path (NULL for default) */ + unsigned short openflags; /* flags for open of destpath */ + unsigned short copyflags; /* flags to control the copy */ + char FAR * buf; /* buffer to return error text in */ + unsigned short buflen; /* size of buffer on call */ +};/* NetRemoteCopyStruc */ + + +struct NetMessageBufferSendStruc { + char FAR * NMBSS_NetName; /* asciz net name. */ + char FAR * NMBSS_Buffer; /* pointer to buffer. */ + unsigned int NMBSS_BufSize; /* size of buffer. */ + +}; /* NetMessageBufferSendStruc */ + +struct NetMessageNameGetInfoStruc { + const char FAR * NMNGIS_NetName; /* ASCIZ net name */ + char FAR * NMNGIS_Buffer; /* Pointer to buffer */ + unsigned int NMNGIS_BufSize; /* Buffer size */ +}; /* NetMessageNameGetInfoStruc */ + +struct NetServiceControlStruc { + char FAR * NSCS_Service; /* Service name */ + unsigned short NSCS_BufLen; /* Buffer length */ + char FAR * NSCS_BufferAddr;/* Buffer address */ +}; /* NetServiceControlStruc */ + +struct NetUseGetInfoStruc { + const char FAR* NUGI_usename; /* ASCIZ redirected device name */ + short NUGI_level; /* level of info */ + char FAR* NUGI_buffer; /* buffer for returned info */ + unsigned short NUGI_buflen; /* size of buffer */ +}; /* NetUseGetInfoStruc */ + +struct DosWriteMailslotStruct { + unsigned long DWMS_Timeout; /* Timeout value of search */ + const char FAR *DWMS_Buffer; /* Buffer address for mailslot write*/ +}; /* DosWriteMailslotStruct */ + +struct NetServerEnum2Struct { + short NSE_level; /* level of information to be returned */ + char FAR *NSE_buf; /* buffer to contain returned info */ + unsigned short NSE_buflen; /* number of bytes available in buffer */ + unsigned long NSE_type; /* bitmask of types to find */ + char FAR *NSE_domain; /* return servers in this domain */ +}; /* NetServerEnum2Struct */ + +struct I_CDNames { + char FAR *CDN_pszComputer; + char FAR *CDN_pszPrimaryDomain; + char FAR *CDN_pszLogonDomain; +}; /* I_CDNames */ + + diff --git a/private/mvdm/inc/bop.h b/private/mvdm/inc/bop.h new file mode 100644 index 000000000..d1991689e --- /dev/null +++ b/private/mvdm/inc/bop.h @@ -0,0 +1,93 @@ +/*++ BUILD Version: 0001 + +Copyright (c) 1990 Microsoft Corporation + +Module Name: + + BOP.H + +Abstract: + + This module contains macro support for use of Bops in C code. + +Author: + + Dave Hastings (daveh) 25-Apr-1991 + +Revision History: + +--*/ + +// +// Assigned Bop Numbers +// + +#define BOP_DOS 0x50 +#define BOP_WOW 0x51 +#define BOP_XMS 0x52 +#define BOP_DPMI 0x53 +#define BOP_CMD 0x54 +#define BOP_DEBUGGER 0x56 +#define BOP_REDIR 0x57 // used to be 55, now goes to MS_bop_7() +#define BOP_NOSUPPORT 0x59 // host warning dialog box +#define BOP_WAITIFIDLE 0x5A // idle bop +#define BOP_DBGBREAKPOINT 0x5B // does a 32 bit DbgBreakPoint +#define BOP_KBD 0x5C // BUGBUG temporary +#define BOP_VIDEO 0x5D // BUGBUG temporary +#define BOP_NOTIFICATION 0x5E // 16bits to 32 bits notification +#define BOP_UNIMPINT 0x5F // BUGBUG temporary +#define BOP_SWITCHTOREALMODE 0xFD +#define BOP_UNSIMULATE 0xFE // end execution of code in a vdm + +#define BOP_SIZE 3 // # of bytes in a bop instruction +// +// Bop Macro +// + +/* XLATOFF */ + +#define BOP(BopNumber) _asm db 0xC4, 0xC4, BopNumber + +/* XLATON */ + +/* ASM +BOP macro BopNumber + db 0C4h, 0C4h, BopNumber + endm + +IFNDEF WOW_x86 +FBOP macro BopNumber,BopMinorNumber,FastBopEntry + BOP BopNumber +ifnb <BopMinorNumber> + db BopMinorNumber +endif + endm +ELSE +FBOP macro BopNumber,BopMinorNumber,FastBopEntry + local fb10,fb20 + test word ptr [FastBopEntry + 4],0FFFFh + jz fb10 +.386p + push ds + push 40h + pop ds + test ds:[FIXED_NTVDMSTATE_REL40],RM_BIT_MASK + pop ds + jnz short fb10 + call fword ptr [FastBopEntry] + + db BopNumber ; indicates which bop +ifnb <BopMinorNumber> + db BopMinorNumber +endif + jmp short fb20 + +.286p +fb10: BOP BopNumber +ifnb <BopMinorNumber> + db BopMinorNumber +endif +fb20: + endm +endif + */ diff --git a/private/mvdm/inc/cmdsvc.h b/private/mvdm/inc/cmdsvc.h new file mode 100644 index 000000000..14f72331d --- /dev/null +++ b/private/mvdm/inc/cmdsvc.h @@ -0,0 +1,128 @@ +/* command.h - This file has all the defines and data structures nneded + * for command.com/command.dll communication. + * + * Sudeepb 17-Sep-1991 Created + */ + +/* ASM +include bop.inc + +CMDSVC macro func + BOP BOP_CMD + db func + endm +*/ + +#define SVC_CMDEXITVDM 0 +#define SVC_CMDGETNEXTCMD 1 +#define SVC_CMDCOMSPEC 2 +#define SVC_CMDSAVEWORLD 3 +#define SVC_CMDGETCURDIR 4 +#define SVC_CMDSETINFO 5 +#define SVC_GETSTDHANDLE 6 +#define SVC_CMDCHECKBINARY 7 +#define SVC_CMDEXEC 8 +#define SVC_CMDINITCONSOLE 9 +#define SVC_EXECCOMSPEC32 10 +#define SVC_RETURNEXITCODE 11 +#define SVC_GETCONFIGSYS 12 +#define SVC_GETAUTOEXECBAT 13 +#define SVC_GETKBDLAYOUT 14 +#define SVC_GETINITENVIRONMENT 15 +#define SVC_GETSTARTINFO 16 + +#define SVC_CMDLASTSVC 17 + +#define ALL_HANDLES 7 +#define HANDLE_STDIN 0 +#define HANDLE_STDOUT 1 +#define HANDLE_STDERR 2 +#define MASK_STDIN 1 +#define MASK_STDOUT 2 +#define MASK_STDERR 4 + + +// define extention type for command.com. +// these value must be in sync with 16bits. Please refer to +// tmisc1.asm in mvdm\dos\v86\cmd\command +#define BAD_EXTENTION 0 // never returned from 32 bits +#define BAT_EXTENTION 2 +#define EXE_EXTENTION 4 +#define COM_EXTENTION 8 +#define MAX_STD_EXTENTION COM_EXTENTION + +// THIS VALUE IS VERY IMPORTANT. +// 0(zero) means there is no such a program file and command.com would spit out +// well-known "bad command or file name". +// Give it to any value larger than than MAX_STD_EXTENTION) makes command.com +// by-passing any other checking and passing down the program file as is +// to DOS which doesn't have tight executable file extention convention. +// The reason that we allow program file with "non-standard" extention to +// pass through command.com and reach DOS is we receive the program pathname +// from CreateProcess which doesn't limit any file extention. +// + + +#define UNKNOWN_EXTENTION MAX_STD_EXTENTION + 1 + + +/* XLATOFF */ + +typedef struct _SAVEWORLD { + USHORT ax; + USHORT bx; + USHORT cx; + USHORT dx; + USHORT cs; + USHORT ss; + USHORT ds; + USHORT es; + USHORT si; + USHORT di; + USHORT bp; + USHORT sp; + USHORT ip; + USHORT flag; + ULONG ImageSize; +} SAVEWORLD, *PSAVEWORLD; + +extern BOOL CMDInit (int argc, char *argv[]); +extern BOOL CMDRebootVDM (void); + +extern BOOL fEnableInt10; + +/* XLATON */ + +/** CMDINFO - Communication record of command.com **/ + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +typedef struct _CMDINFO { /**/ + USHORT EnvSeg; + USHORT EnvSize; + USHORT CurDrive; + USHORT NumDrives; + USHORT CmdLineSeg; + USHORT CmdLineOff; + USHORT CmdLineSize; + USHORT ReturnCode; + USHORT bStdHandles; + ULONG pRdrInfo; + USHORT CodePage; + USHORT fTSRExit; + USHORT fBatStatus; + USHORT ExecPathSeg; + USHORT ExecPathOff; + USHORT ExecPathSize; + USHORT ExecExtType; +} CMDINFO; +typedef CMDINFO UNALIGNED *PCMDINFO; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ + + +BOOL CmdDispatch (ULONG); diff --git a/private/mvdm/inc/curdir.h b/private/mvdm/inc/curdir.h new file mode 100644 index 000000000..028b691d5 --- /dev/null +++ b/private/mvdm/inc/curdir.h @@ -0,0 +1,72 @@ +/* BREAK <Current directory list structure> + * + * + * Microsoft Confidential + * Copyright (C) Microsoft Corporation 1991 + * All Rights Reserved. + * + * + * CDS - Current Directory Structure + * + * CDS items are used bu the internal routines to store cluster numbers and + * network identifiers for each logical name. The ID field is used dually, + * both as net ID and for a cluster number for local devices. In the case + * of local devices, the cluster number will be -1 if there is a potential + * of the disk being changed or if the path must be recracked. + * + * Some pathnames have special preambles, such as + * + * \\machane\sharename\... + * For these pathnames we can't allow ".." processing to back us + * up into the special front part of the name. The CURDIR_END field + * holds the address of the seperator character which marks + * the split between the special preamble and the regular + * path list; ".." processing isn't allowed to back us up past + * (i.e., before) CURDIR_END + * For the root, it points at the leading /. For net + * assignments it points at the end (nul) of the initial assignment: + * A:/ \\foo\bar \\foo\bar\blech\bozo + * ^ ^ ^ + */ + + +#define DIRSTRLEN 64+3 // Max length in bytes of directory strings +#define TEMPLEN DIRSTRLEN*2 + +/* XLATOFF */ +#pragma pack(1) +/* XLATON */ + +typedef struct CURDIR_LIST { + CHAR CurDir_Text[DIRSTRLEN]; // text of assignment and curdir + USHORT CurDir_Flags; // various flags + USHORT CurDir_End; // index to ".." backup limit - +} CDS; // see above + +typedef CDS UNALIGNED *PCDS; + +#define curdirLen sizeof(CURDIR_LIST) // Needed for screwed up + // ASM87 which doesn't allow + // Size directive as a macro + // argument +// Flag values for CURDIR_FLAGS + +#define CURDIR_ISNET 0x8000 +#define CURDIR_ISIFS 0x8000 +#define CURDIR_INUSE 0x4000 +#define CURDIR_SPLICE 0x2000 +#define CURDIR_LOCAL 0x1000 +#define CURDIR_TOSYNC 0x0800 // Directory path to be sync added +#define CURDIR_NT_FIX 0x0400 // fixed disk (includes NETWORK + // drives. Used in $Current_dir perf + // work. + + + +/* XLATOFF */ +typedef CDS UNALIGNED *PCDS; +/* XLATON */ + +/* XLATOFF */ +#pragma pack() +/* XLATON */ diff --git a/private/mvdm/inc/dbgexp.h b/private/mvdm/inc/dbgexp.h new file mode 100644 index 000000000..02c47d2df --- /dev/null +++ b/private/mvdm/inc/dbgexp.h @@ -0,0 +1,19 @@ +/*++ BUILD Version: 0001 + * + * MVDM v1.0 + * + * Copyright (c) 1991,1992 Microsoft Corporation + * + * DBGEXP.H + * DBG exports + * + * History: + * 13-Jan-1992 Bob Day (bobday) + * Created. +--*/ + +extern BOOL DBGInit( int, char *[] ); +extern VOID DBGDispatch( void ); +extern VOID DBGNotifyNewTask( LPVOID pNTFrame, UINT uFrameSize ); +extern VOID DBGNotifyRemoteThreadAddress( LPVOID lpAddress, DWORD lpBlock ); +extern VOID DBGNotifyDebugged( BOOL fDebugged ); diff --git a/private/mvdm/inc/dbginfo.h b/private/mvdm/inc/dbginfo.h new file mode 100644 index 000000000..9faa2916e --- /dev/null +++ b/private/mvdm/inc/dbginfo.h @@ -0,0 +1,23 @@ +typedef struct _vdminternalinfo { + DWORD dwLdtBase; + DWORD dwLdtLimit; + DWORD dwGdtBase; + DWORD dwGdtLimit; + WORD wKernelSeg; + DWORD dwOffsetTHHOOK; + LPVOID vdmContext; + LPVOID lpRemoteAddress; + DWORD lpRemoteBlock; + BOOL f386; +} VDMINTERNALINFO; +typedef VDMINTERNALINFO *LPVDMINTERNALINFO; + +typedef struct _com_header { + DWORD dwBlockAddress; + DWORD dwReturnValue; + WORD wArgsPassed; + WORD wArgsSize; + WORD wBlockLength; + WORD wSuccess; +} COM_HEADER; +typedef COM_HEADER FAR *LPCOM_HEADER; diff --git a/private/mvdm/inc/dbgsvc.h b/private/mvdm/inc/dbgsvc.h new file mode 100644 index 000000000..4605f7334 --- /dev/null +++ b/private/mvdm/inc/dbgsvc.h @@ -0,0 +1,69 @@ +/** SVC Defines + * + * Revision history: + * + * bobday 13-Jan-1992 Created + */ + + +/* DBGSVC - DBG SVC calls. + * + * This macro is used by Nlddebug.asm (where N=nothing or 2) + * + */ + +/* ASM +include bop.inc + +dbgsvc macro func + BOP BOP_DEBUGGER + db func + endm +*/ + +#define DBG_SEGLOAD 0 +#define DBG_SEGMOVE 1 +#define DBG_SEGFREE 2 +#define DBG_MODLOAD 3 +#define DBG_MODFREE 4 +#define DBG_SINGLESTEP 5 +#define DBG_BREAK 6 +#define DBG_GPFAULT 7 +#define DBG_DIVOVERFLOW 8 +#define DBG_INSTRFAULT 9 +#define DBG_TASKSTART 10 +#define DBG_TASKSTOP 11 +#define DBG_DLLSTART 12 +#define DBG_DLLSTOP 13 +#define DBG_ATTACH 14 +#define DBG_TOOLHELP 15 + +// +// Flags used by DemIsDebug +// +#define ISDBG_DEBUGGEE 1 +#define ISDBG_SHOWSVC 2 + + +void ModuleLoad(LPSTR,LPSTR,WORD,DWORD); +void ModuleFree(LPSTR,LPSTR); +void ModuleSegmentMove(LPSTR,LPSTR,WORD,WORD); +BOOL VdmDebugger(ULONG IntNumber); + +#define MAX_VDM_BREAKPOINTS 16 +typedef struct _VDM_BREAKPOINT { /* VDMBP */ + UCHAR Flags; + UCHAR Opcode; + USHORT Count; + USHORT Seg; + ULONG Offset; +} VDM_BREAKPOINT; + +// +// Bits defined in Flags +// +#define VDMBP_SET 0x01 +#define VDMBP_ENABLED 0x02 +#define VDMBP_FLUSH 0x04 +#define VDMBP_PENDING 0x08 +#define VDMBP_V86 0x10 diff --git a/private/mvdm/inc/demexp.h b/private/mvdm/inc/demexp.h new file mode 100644 index 000000000..57f12db7b --- /dev/null +++ b/private/mvdm/inc/demexp.h @@ -0,0 +1,37 @@ +/*++ BUILD Version: 0001 + * + * MVDM v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * DEMEXP.H + * DOS emulation exports + * + * History: + * 22-Apr-1991 Sudeep Bharati (sudeepb) + * Created. +--*/ + +BOOL DemInit (int argc, char *argv[]); +BOOL DemDispatch(ULONG iSvc); +VOID demCloseAllPSPRecords (VOID); +DWORD demFileFindFirst (PVOID pDTA, LPSTR lpFile, USHORT usSearchAttr); +DWORD demFileFindNext (PVOID pDTA); +ULONG demClientErrorEx (HANDLE hFile, CHAR chDrive, BOOL bSetRegs); +UCHAR demGetPhysicalDriveType(UCHAR DriveNum); + +#define SIZEOF_DOSSRCHDTA 43 + +#if DEVL +// bit masks to control trace info +#define DEMDOSAPPBREAK 0x80000000 +#define DEMDOSDISP 0x40000000 +#define DEMFILIO 0x20000000 +#define DEMSVCTRACE 0x10000000 +#define KEEPBOOTFILES 0x01000000 // if set, no delete temp boot files +#define DEM_ABSDRD 0x02000000 +#define DEM_ABSWRT 0x04000000 +#define DEMERROR 0x08000000 + +extern DWORD fShowSVCMsg; +#endif diff --git a/private/mvdm/inc/dossvc.h b/private/mvdm/inc/dossvc.h new file mode 100644 index 000000000..b4ec39303 --- /dev/null +++ b/private/mvdm/inc/dossvc.h @@ -0,0 +1,178 @@ +/** SVC Defines + * + * Revision history: + * + * sudeepb 27-Feb-1991 Created + */ + +/* VHE - Virtual Hard Error packet. + * + * DEM makes fbInt24 to true if an hard error happens. + */ + +typedef struct vhe_s { + char vhe_fbInt24; // Was there a hard error? + char vhe_HrdErrCode; // If hard error then this is the error code + char vhe_bDriveNum; // If so on which drive +} VHE; + +typedef VHE *PVHE; + +/* DEMEXTERR - Extended Error structure. The following structure contains the + * DOS extended error elements which are loosely coupled in the DOS data + * segment + * + */ + +/* XLATOFF */ +#include <packon.h> + +typedef struct _DEMEXTERR { + UCHAR ExtendedErrorLocus; + USHORT ExtendedError; + UCHAR ExtendedErrorAction; + UCHAR ExtendedErrorClass; + PUCHAR ExtendedErrorPointer; +} DEMEXTERR; + +typedef DEMEXTERR* PDEMEXTERR; + + +/* SYSDEV - Device chain node + */ + +typedef struct _SYSDEV { + + ULONG sdevNext; // REAL mode pointer to next device. -1 for end of chain. + char sdevIgnore[6]; + UCHAR sdevDevName[8]; // device name + +} SYSDEV; + +typedef SYSDEV UNALIGNED *PSYSDEV; + +#ifndef _DEMINCLUDED_ +extern DECLSPEC_IMPORT PSYSDEV pDeviceChain; +#else +extern PSYSDEV pDeviceChain; +#endif + + +/* XLATON */ + +/* XLATOFF */ +#include <packoff.h> +/* XLATON */ + +/* Note : To add a new SVC: + * New SVC gets the current value of SVC_LASTSVC. Increment + * the SVC_LASTSVC value. Add the appropriate SVC handler + * in apfnSVC (file dem\demdisp.c) at the end. + * To delete a SVC : + * Move each SVC one level up. Appropriatly adjust the + * apfnSVC (file dem\demdisp.c). + */ + +/* SVC - Supervisory Call macro. + * + * This macro is used by NTDOS and NTBIO to call DEM. + * + */ + +#define NTVDMDBG 1 + +/* ASM +include bop.inc + +svc macro func + BOP BOP_DOS + db func + endm +*/ +#define SVC_DEMCHGFILEPTR 0x00 +#define SVC_DEMCHMOD 0x01 +#define SVC_DEMCLOSE 0x02 +#define SVC_DEMCREATE 0x03 +#define SVC_DEMCREATEDIR 0x04 +#define SVC_DEMDELETE 0x05 +#define SVC_DEMDELETEDIR 0x06 +#define SVC_DEMDELETEFCB 0x07 +#define SVC_DEMFILETIMES 0x08 +#define SVC_DEMFINDFIRST 0x09 +#define SVC_DEMFINDFIRSTFCB 0x0a +#define SVC_DEMFINDNEXT 0x0b +#define SVC_DEMFINDNEXTFCB 0x0c +#define SVC_DEMGETBOOTDRIVE 0x0d +#define SVC_DEMGETDRIVEFREESPACE 0x0e +#define SVC_DEMGETDRIVES 0x0f +#define SVC_DEMGSETMEDIAID 0x10 +#define SVC_DEMLOADDOS 0x11 +#define SVC_DEMOPEN 0x12 +#define SVC_DEMQUERYCURRENTDIR 0x13 +#define SVC_DEMQUERYDATE 0x14 +#define SVC_DEMQUERYTIME 0x15 +#define SVC_DEMREAD 0x16 +#define SVC_DEMRENAME 0x17 +#define SVC_DEMSETCURRENTDIR 0x18 +#define SVC_DEMSETDATE 0x19 +#define SVC_DEMSETDEFAULTDRIVE 0x1a +#define SVC_DEMSETDTALOCATION 0x1b +#define SVC_DEMSETTIME 0x1c +#define SVC_DEMSETV86KERNELADDR 0x1d +#define SVC_DEMWRITE 0x1e +#define SVC_GETDRIVEINFO 0x1f +#define SVC_DEMRENAMEFCB 0x20 +#define SVC_DEMIOCTL 0x21 +#define SVC_DEMCREATENEW 0x22 +#define SVC_DEMDISKRESET 0x23 +#define SVC_DEMSETDPB 0x24 +#define SVC_DEMGETDPB 0x25 +#define SVC_DEMSLEAZEFUNC 0x26 +#define SVC_DEMCOMMIT 0x27 +#define SVC_DEMEXTHANDLE 0x28 +#define SVC_DEMABSDRD 0x29 +#define SVC_DEMABSDWRT 0x2a +#define SVC_DEMGSETCDPG 0x2b +#define SVC_DEMCREATEFCB 0x2c +#define SVC_DEMOPENFCB 0x2d +#define SVC_DEMCLOSEFCB 0x2e +#define SVC_DEMFCBIO 0x2f +#define SVC_DEMDATE16 0x30 +#define SVC_DEMGETFILEINFO 0x31 +#define SVC_DEMSETHARDERRORINFO 0x32 +#define SVC_DEMRETRY 0x33 +#define SVC_DEMLOADDOSAPPSYM 0x34 +#define SVC_DEMFREEDOSAPPSYM 0x35 +#define SVC_DEMENTRYDOSAPP 0x36 +#define SVC_DEMDOSDISPCALL 0x37 +#define SVC_DEMDOSDISPRET 0x38 +#define SVC_OUTPUT_STRING 0x39 +#define SVC_INPUT_STRING 0x3A +#define SVC_ISDEBUG 0x3B +#define SVC_PDBTERMINATE 0x3C +#define SVC_DEMEXITVDM 0x3D +#define SVC_DEMWOWFILES 0x3E +#define SVC_DEMLOCKOPER 0x3F +#define SVC_DEMDRIVEFROMHANDLE 0x40 +#define SVC_DEMGETCOMPUTERNAME 0x41 +#define SVC_DEMFASTREAD 0x42 +#define SVC_DEMFASTWRITE 0x43 +#define SVC_DEMCHECKPATH 0x44 +#define SVC_DEMSYSTEMSYMBOLOP 0x45 +#define SVC_DEMGETDPBLIST 0x46 + +#define SVC_DEMPIPEFILEDATAEOF 0x47 +#define SVC_DEMPIPEFILEEOF 0x48 +#define SVC_DEMLASTSVC 0x49 + + +/* + * Equates used in the DEMxxxSYSTEMxxx calls + */ +#define SYMOP_LOAD 1 +#define SYMOP_FREE 2 +#define SYMOP_MOVE 3 +#define SYMOP_CLEANUP 0x80 + +#define ID_NTIO 1 +#define ID_NTDOS 2 diff --git a/private/mvdm/inc/doswow.h b/private/mvdm/inc/doswow.h new file mode 100644 index 000000000..fcc6d3c22 --- /dev/null +++ b/private/mvdm/inc/doswow.h @@ -0,0 +1,81 @@ +/*++ BUILD Version: 0002 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * DOSWOW.H + * Shared structures between NTDOS, DEM and WOW32 + * + * History: + * Created 03-Dec-1993 by Neil Sandlin (neilsa) +--*/ + +/* XLATOFF */ + +#pragma pack(2) + +/* XLATON */ + +/* + * The following structure is used by some of the WOW functions to + * point to internal DOS data. This is done to emulate some of the more + * involved functions in WOW32, while still maintaining DOS data integrity. + */ +typedef struct _DOSWOWDATA { /* DWD */ + DWORD lpCDSCount; + DWORD lpCDSFixedTable; + DWORD lpCDSBuffer; + DWORD lpCurDrv; + DWORD lpCurPDB; + DWORD lpDrvErr; + DWORD lpExterrLocus; + DWORD lpSCS_ToSync; + DWORD lpSftAddr; +} DOSWOWDATA; +typedef DOSWOWDATA UNALIGNED *PDOSWOWDATA; + + +/* XLATOFF */ + +#pragma pack(1) + +typedef struct _DOSPDB { // DOS Process Data Block + CHAR PDB_Not_Interested[50]; // Fields we are not interested in + USHORT PDB_JFN_Length; // JFT length + ULONG PDB_JFN_Pointer; // JFT pointer +} DOSPDB, *PDOSPDB; + + +typedef struct _DOSSF { // DOS header for SFT chain + ULONG SFLink; // Link to next SF + USHORT SFCount; // number of entries + USHORT SFTable; // beginning of array of the SFTs +} DOSSF; +typedef DOSSF UNALIGNED *PDOSSF; + + +#define SFT_NAMED_PIPE 0x2000 // named pipe flag + +typedef struct _DOSSFT { // DOS SFT + USHORT SFT_Ref_Count; // Howmany tasks using it + USHORT SFT_Mode; // Mode of access + UCHAR SFT_Attr; // Attribute of file + USHORT SFT_Flags; // Bit 15 = 1 if remote file + // = 0 if local or device + ULONG SFT_Devptr; // Device pointer + USHORT SFT_Time; + USHORT SFT_Date; + ULONG SFT_Size; + ULONG SFT_Position; + ULONG SFT_Chain; + USHORT SFT_PID; + ULONG SFT_NTHandle; // NT File Handle +} DOSSFT; +typedef DOSSFT UNALIGNED *PDOSSFT; + +#define SF_NT_SEEK 0x0200 + +#pragma pack() + +/* XLATON */ diff --git a/private/mvdm/inc/dpmi.h b/private/mvdm/inc/dpmi.h new file mode 100644 index 000000000..2131cdc80 --- /dev/null +++ b/private/mvdm/inc/dpmi.h @@ -0,0 +1,124 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + dpmi.h + +Abstract: + + This file contains code to implement support for the DPMI bops + +Author: + + Dave Hastings (daveh) 27-Jun-1991 + +Revision History: + + +--*/ + +/* ASM +ifdef WOW_x86 +include vint.inc +endif +include bop.inc +*/ +#define LDT_SIZE 0x1FFF + +// DPMI Bop Sub Functions + +#define SetDescriptorTableEntries 0 +#define DPMISwitchToProtectedMode 1 /* prefix necessary */ +#define SetProtectedmodeInterrupt 2 +#define GetFastBopAddress 3 +#define InitDosx 4 +#define InitApp 5 +#define XlatInt21Call 6 +#define AllocXmem 7 +#define FreeXmem 8 +#define ReallocXmem 9 +#define SetFaultHandler 10 +#define GetMemoryInformation 11 +#define DpmiInUse 12 +#define DpmiNoLongerInUse 13 +#define SetDebugRegisters 14 +#define PassTableAddress 15 +#define TerminateApp 16 +#define InitializePmStackInfo 17 +#define VcdPmSvcCall32 18 +#define FreeAllXmem 19 +#define IntHandlerIret 20 +#define IntHandlerIretd 21 +#define FaultHandlerIret 22 +#define FaultHandlerIretd 23 +#define DpmiUnhandledException 24 + +#define MAX_DPMI_BOP_FUNC DpmiUnhandledException + 1 + +/* ASM +DPMIBOP macro SubFun + BOP BOP_DPMI + db SubFun + endm +*/ + +/* XLATOFF */ +#if DBG + +#define DBGTRACE(Type, v1, v2, v3) DpmiDbgTrace(Type, v1, v2, v3) + +#else + +#define DBGTRACE(Type, v1, v2, v3) {} + +#endif + +/* XLATON */ + + +VOID DpmiDbgTrace( + int Type, + ULONG v1, + ULONG v2, + ULONG v3 + ); + + +#define DPMI_SET_PMODE_INT_HANDLER 1 +#define DPMI_SET_FAULT_HANDLER 2 +#define DPMI_DISPATCH_INT 3 +#define DPMI_HW_INT 4 +#define DPMI_SW_INT 5 +#define DPMI_INT_IRET16 6 +#define DPMI_INT_IRET32 7 +#define DPMI_FAULT 8 +#define DPMI_DISPATCH_FAULT 9 +#define DPMI_FAULT_IRET 10 +#define DPMI_OP_EMULATION 11 +#define DPMI_DISPATCH_ENTRY 12 + + +typedef struct _DPMI_TRACE_ENTRY { /* DPMITRACE */ + int Type; + ULONG v1; + ULONG v2; + ULONG v3; + ULONG eax; + ULONG ebx; + ULONG ecx; + ULONG edx; + ULONG esi; + ULONG edi; + ULONG ebp; + ULONG esp; + ULONG eip; + ULONG eflags; + USHORT cs; + USHORT ds; + USHORT es; + USHORT fs; + USHORT gs; + USHORT ss; +} DPMI_TRACE_ENTRY; diff --git a/private/mvdm/inc/enumapis.h b/private/mvdm/inc/enumapis.h new file mode 100644 index 000000000..75e9dd832 --- /dev/null +++ b/private/mvdm/inc/enumapis.h @@ -0,0 +1,74 @@ +/*****************************************************************/ +/** Microsoft LAN Manager **/ +/** Copyright(c) Microsoft Corp., 1990 **/ +/*****************************************************************/ +/*** enumapis.h + * + * This file contains the subfunctions for the loadable APIs in the + * REDIR 1.5 project + */ + +#define REDIRBASEFUNCTION 0x5f00 +#define BADFUNCTION 0xFFFF +#define UseWkstaPass 0x80 + +#define Local_API_ReturnMode 0x00 +#define Local_API_SetMode 0x01 +#define Local_API_GetAsgList 0x02 +#define Local_API_Define 0x03 +#define Local_API_BREAK_MAC 0x04 +#define Local_API_GetAsgList2 0x05 + +#define Local_API_RedirGetVersion 0x30 +#define Local_API_NetWkstaSetUID 0x31 +#define Local_API_DosQNmPipeInfo 0x32 +#define Local_API_DosQNmPHandState 0x33 +#define Local_API_DosSetNmPHandState 0x34 +#define Local_API_DosPeekNmPipe 0x35 +#define Local_API_DosTransactNmPipe 0x36 +#define Local_API_DosCallNmPipe 0x37 +#define Local_API_DosWaitNmPipe 0x38 +#define Local_API_DosRawReadNmPipe 0x39 +#define Local_API_DosRawWriteNmPipe 0x3a +#define Local_API_NetHandleSetInfo 0x3b +#define Local_API_NetHandleGetInfo 0x3c +#define Local_API_NetTransact 0x3d +#define Local_API_NetSpecialSMB 0x3e +#define Local_API_NetIRemoteAPI 0x3f +#define Local_API_NetMessageBufferSend 0x40 +#define Local_API_NetServiceEnum 0x41 +#define Local_API_NetServiceControl 0x42 +#define Local_API_DosPrintJobGetID 0x43 +#define Local_API_NetWkstaGetInfo 0x44 +#define Local_API_NetWkstaSetInfo 0x45 +#define Local_API_NetUseEnum 0x46 +#define Local_API_NetUseAdd 0x47 +#define Local_API_NetUseDel 0x48 +#define Local_API_NetUseGetInfo 0x49 +#define Local_API_NetRemoteCopy 0x4a +#define Local_API_NetRemoteMove 0x4b +#define Local_API_NetServerEnum 0x4c +#define Local_API_DosMakeMailslot 0x4d +#define Local_API_DosDeleteMailslot 0x4e +#define Local_API_DosMailslotInfo 0x4f +#define Local_API_DosReadMailslot 0x50 +#define Local_API_DosPeekMailslot 0x51 +#define Local_API_DosWriteMailslot 0x52 +#define Local_API_NetServerEnum2 0x53 +#define Local_API_NullTransact 0x54 + +/* NOTE:: Remove_Network_Connections is a private call to allow the + * NetSetUserName INT 2F to remove network connections. + */ + +#define Local_API_Remove_Network_Connections 0x55 + +/* NOTE:: Process_Interrogate is a private call to allow the + * redirector to kick itself from INT 28 and INT 8 to process relogon + * requests. + */ +#define Local_API_Periodic_View_Tasks 0x56 +#define Local_API_Set_LongName 0x57 +#define Local_API_Start_Redir_On_Net 0x58 +#define Local_API_Stop_Redir_per_Net 0x59 + diff --git a/private/mvdm/inc/exterr.h b/private/mvdm/inc/exterr.h new file mode 100644 index 000000000..647daf1fe --- /dev/null +++ b/private/mvdm/inc/exterr.h @@ -0,0 +1,186 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + exterr.h + +Abstract: + + Taken from mvdm\dos\v86\inc\error.inc + +Author: + + Richard L Firth (rfirth) 17-Oct-1992 + +Revision History: + +--*/ + +/** ERROR.INC - DOS Error Codes +; +; The newer (DOS 2.0 and above) "XENIX-style" calls +; return error codes through AX. If an error occurred then +; the carry bit will be set and the error code is in AX. If no error +; occurred then the carry bit is reset and AX contains returned info. +; +; Since the set of error codes is being extended as we extend the operating +; system, we have provided a means for applications to ask the system for a +; recommended course of action when they receive an error. +; +; The GetExtendedError system call returns a universal error, an error +; location and a recommended course of action. The universal error code is +; a symptom of the error REGARDLESS of the context in which GetExtendedError +; is issued. +*/ + +// 2.0 error codes + +#define error_invalid_function 1 +#define error_file_not_found 2 +#define error_path_not_found 3 +#define error_too_many_open_files 4 +#define error_access_denied 5 +#define error_invalid_handle 6 +#define error_arena_trashed 7 +#define error_not_enough_memory 8 +#define error_invalid_block 9 +#define error_bad_environment 10 +#define error_bad_format 11 +#define error_invalid_access 12 +#define error_invalid_data 13 +/**** reserved EQU 14 ; *****/ +#define error_invalid_drive 15 +#define error_current_directory 16 +#define error_not_same_device 17 +#define error_no_more_files 18 + +// These are the universal int 24 mappings for the old INT 24 set of errors + +#define error_write_protect 19 +#define error_bad_unit 20 +#define error_not_ready 21 +#define error_bad_command 22 +#define error_CRC 23 +#define error_bad_length 24 +#define error_Seek 25 +#define error_not_DOS_disk 26 +#define error_sector_not_found 27 +#define error_out_of_paper 28 +#define error_write_fault 29 +#define error_read_fault 30 +#define error_gen_failure 31 + +// the new 3.0 error codes reported through INT 24 + +#define error_sharing_violation 32 +#define error_lock_violation 33 +#define error_wrong_disk 34 +#define error_FCB_unavailable 35 +#define error_sharing_buffer_exceeded 36 +#define error_Code_Page_Mismatched 37 // DOS 4.00 ;AN000; +#define error_handle_EOF 38 // DOS 4.00 ;AN000; +#define error_handle_Disk_Full 39 // DOS 4.00 ;AN000; + +// New OEM network-related errors are 50-79 + +#define error_not_supported 50 + +#define error_net_access_denied 65 //M028 + +// End of INT 24 reportable errors + +#define error_file_exists 80 +#define error_DUP_FCB 81 // ***** +#define error_cannot_make 82 +#define error_FAIL_I24 83 + +// New 3.0 network related error codes + +#define error_out_of_structures 84 +#define error_Already_assigned 85 +#define error_invalid_password 86 +#define error_invalid_parameter 87 +#define error_NET_write_fault 88 +#define error_sys_comp_not_loaded 90 // DOS 4.00 ;AN000; + + + +// BREAK <Interrupt 24 error codes> + +/** Int24 Error Codes **/ + +#define error_I24_write_protect 0 +#define error_I24_bad_unit 1 +#define error_I24_not_ready 2 +#define error_I24_bad_command 3 +#define error_I24_CRC 4 +#define error_I24_bad_length 5 +#define error_I24_Seek 6 +#define error_I24_not_DOS_disk 7 +#define error_I24_sector_not_found 8 +#define error_I24_out_of_paper 9 +#define error_I24_write_fault 0xA +#define error_I24_read_fault 0xB +#define error_I24_gen_failure 0xC +// NOTE: Code 0DH is used by MT-DOS. +#define error_I24_wrong_disk 0xF + + +// THE FOLLOWING ARE MASKS FOR THE AH REGISTER ON Int 24 +// +// NOTE: ABORT is ALWAYS allowed + +#define Allowed_FAIL 0x08 // 00001000B +#define Allowed_RETRY 0x10 // 00010000B +#define Allowed_IGNORE 0x20 // 00100000B + +#define I24_operation 0x01 // 00000001B ;Z if READ,NZ if Write +#define I24_area 0x60 // 00000110B ; 00 if DOS + // ; 01 if FAT + // ; 10 if root DIR + // ; 11 if DATA +#define I24_class 0x80 // 10000000B ;Z if DISK, NZ if FAT or char + + +// BREAK <GetExtendedError CLASSes ACTIONs LOCUSs> + +/** The GetExtendedError call takes an error code and returns CLASS, +; ACTION and LOCUS codes to help programs determine the proper action +; to take for error codes that they don't explicitly understand. +*/ + +// Values for error CLASS + +#define errCLASS_OutRes 1 // Out of Resource +#define errCLASS_TempSit 2 // Temporary Situation +#define errCLASS_Auth 3 // Permission problem +#define errCLASS_Intrn 4 // Internal System Error +#define errCLASS_HrdFail 5 // Hardware Failure +#define errCLASS_SysFail 6 // System Failure +#define errCLASS_Apperr 7 // Application Error +#define errCLASS_NotFnd 8 // Not Found +#define errCLASS_BadFmt 9 // Bad Format +#define errCLASS_Locked 10 // Locked +#define errCLASS_Media 11 // Media Failure +#define errCLASS_Already 12 // Collision with Existing Item +#define errCLASS_Unk 13 // Unknown/other + +// Values for error ACTION + +#define errACT_Retry 1 // Retry +#define errACT_DlyRet 2 // Delay Retry, retry after pause +#define errACT_User 3 // Ask user to regive info +#define errACT_Abort 4 // abort with clean up +#define errACT_Panic 5 // abort immediately +#define errACT_Ignore 6 // ignore +#define errACT_IntRet 7 // Retry after User Intervention + +// Values for error LOCUS + +#define errLOC_Unk 1 // No appropriate value +#define errLOC_Disk 2 // Random Access Mass Storage +#define errLOC_Net 3 // Network +#define errLOC_SerDev 4 // Serial Device +#define errLOC_Mem 5 // Memory diff --git a/private/mvdm/inc/intapi.h b/private/mvdm/inc/intapi.h new file mode 100644 index 000000000..6ba9a19fa --- /dev/null +++ b/private/mvdm/inc/intapi.h @@ -0,0 +1,40 @@ +/*++ + +Copyright (c) 1992 Microsoft Corporation + +Module Name: + + intapi.h + +Abstract: + + This header defines the function prototypes for the interrupt + handler support routines in the 486 emulator. + +Author: + + Neil Sandlin (neilsa) + +Notes: + + +Revision History: + + +--*/ + +NTSTATUS +VdmInstallHardwareIntHandler( + PVOID HwIntHandler + ); + +NTSTATUS +VdmInstallSoftwareIntHandler( + PVOID SwIntHandler + ); + +NTSTATUS +VdmInstallFaultHandler( + PVOID FaultHandler + ); + diff --git a/private/mvdm/inc/intmac.inc b/private/mvdm/inc/intmac.inc new file mode 100644 index 000000000..0add7f929 --- /dev/null +++ b/private/mvdm/inc/intmac.inc @@ -0,0 +1,317 @@ +;++ +; +; Copyright (c) 1989 Microsoft Corporation +; +; Module Name: +; +; intmac.inc +; +; Abstract: +; +; This module contains macros to allow code running in 16 bit protected +; mode to manipulate the virtual interrupt flag +; +; Author: +; +; Dave Hastings (daveh) 24-Apr-1992 +; +; Revision History: +; +;-- + + +VDM_INT_TRAP_GATE EQU 00000000h +VDM_INT_INT_GATE EQU 00000001h +VDM_INT_32 EQU 00000002h +VDM_INT_16 EQU 00000000h +EFLAGS_VIF equ 080000H + +ifdef WOW_x86 +include vint.inc +riret macro + local a,b,c,d + push bp + mov bp,sp + push ax + push ds + mov ax,40h + mov ds,ax + mov ax,[bp+6] + test ax,200h + jz a + test ds:FIXED_NTVDMSTATE_REL40,RI_BIT_MASK + jz c + sti +c: lock or word ptr ds:FIXED_NTVDMSTATE_REL40, VIRTUAL_INTERRUPT_BIT + jmp short b +a: + test ds:FIXED_NTVDMSTATE_REL40,RI_BIT_MASK + jz d + cli +d: lock and word ptr ds:FIXED_NTVDMSTATE_REL40,NOT VIRTUAL_INTERRUPT_BIT +b: + pop ds + pop ax + pop bp + iret + endm + +riretd macro + local a,b,c,d + push bp + mov bp,sp + push ax + push ds + mov ax,40h + mov ds,ax + mov ax,[bp+10] + test ax,200h + jz a + test ds:FIXED_NTVDMSTATE_REL40,RI_BIT_MASK + jz c + sti +c: lock or word ptr ds:FIXED_NTVDMSTATE_REL40, VIRTUAL_INTERRUPT_BIT + jmp short b +a: + test ds:FIXED_NTVDMSTATE_REL40,RI_BIT_MASK + jz d + cli +d: lock and word ptr ds:FIXED_NTVDMSTATE_REL40,NOT VIRTUAL_INTERRUPT_BIT +b: + pop ds + pop ax + pop bp + iretd + endm + +riretd32 macro + local a,b,c,d + push ebp + mov ebp,esp + push ax + push ds + mov ax,40h + mov ds,ax + mov ax,[ebp+0ch] + test ax,200h + jz a + test ds:FIXED_NTVDMSTATE_REL40,RI_BIT_MASK + jz c + sti +c: lock or word ptr ds:FIXED_NTVDMSTATE_REL40, VIRTUAL_INTERRUPT_BIT + jmp short b +a: + test ds:FIXED_NTVDMSTATE_REL40,RI_BIT_MASK + jz d + cli +d: lock and word ptr ds:FIXED_NTVDMSTATE_REL40,NOT VIRTUAL_INTERRUPT_BIT +b: + pop ds + pop ax + pop ebp + iretd + endm + +rpopf macro + local a,b,c,d + push bp + mov bp,sp + push ax + push ds + mov ax,40h + mov ds,ax + mov ax,[bp+2] + test ax,200h + jz a + test ds:FIXED_NTVDMSTATE_REL40,RI_BIT_MASK + jz c + sti +c: lock or word ptr ds:FIXED_NTVDMSTATE_REL40, VIRTUAL_INTERRUPT_BIT + jmp short b +a: + test ds:FIXED_NTVDMSTATE_REL40,RI_BIT_MASK + jz d + cli +d: lock and word ptr ds:FIXED_NTVDMSTATE_REL40,NOT VIRTUAL_INTERRUPT_BIT +b: + pop ds + pop ax + pop bp + popf + endm + +rpopfd macro + local a,b,c,d + push bp + mov bp,sp + push ax + push ds + mov ax,40h + mov ds,ax + mov ax,[bp+2] + test ax,200h + jz a + test ds:FIXED_NTVDMSTATE_REL40,RI_BIT_MASK + jz c + sti +c: lock or word ptr ds:FIXED_NTVDMSTATE_REL40, VIRTUAL_INTERRUPT_BIT + jmp short b +a: + test ds:FIXED_NTVDMSTATE_REL40,RI_BIT_MASK + jz d + cli +d: lock and word ptr ds:FIXED_NTVDMSTATE_REL40,NOT VIRTUAL_INTERRUPT_BIT +b: + pop ds + pop ax + pop bp + popfd + endm + +; +; The following assume that the RI bit implies a virtual interrupt flag +; in eflags. See appendix h of the Pentium user's manual +; +rpushf macro + local a,b,c,d + .386p + pushf + push bp + mov bp,sp + push ax + push ds + mov ax,40h + mov ds,ax + mov ax,word ptr ds:FIXED_NTVDMSTATE_REL40 + test ax,RI_BIT_MASK + jz c + pushfd + test dword ptr [bp-8],EFLAGS_VIF + jz d + or word ptr [bp+2],200h + popfd + jmp b +d: + and word ptr [bp+2],NOT 200h + popfd + jmp b +c: + test ax,VIRTUAL_INTERRUPT_BIT + jz a + or word ptr [bp+2],200h + jmp b +a: + and word ptr [bp+2],NOT 200h +b: + pop ds + pop ax + pop bp + .286p + endm + +rpushfd macro + local a,b,c,d + pushfd + push bp + mov bp,sp + push ax + push ds + mov ax,40h + mov ds,ax + mov ax,word ptr ds:FIXED_NTVDMSTATE_REL40 + test ax,RI_BIT_MASK + jz c + test dword ptr [bp+2],EFLAGS_VIF + jz d + or word ptr [bp+2],200h + jmp b +d: + and word ptr [bp+2],NOT 200h + jmp b +c: + test ax,VIRTUAL_INTERRUPT_BIT + jz a + or word ptr [bp+2],200h + jmp b +a: + and word ptr [bp+2],NOT 200h +b: + pop ds + pop ax + pop bp + endm + + +rpushfd32 macro + local a,b,c,d + pushfd + push ebp + mov ebp,esp + push ax + push ds + mov ax,40h + mov ds,ax + mov ax,word ptr ds:FIXED_NTVDMSTATE_REL40 + test ax,RI_BIT_MASK + jz c + test dword ptr [ebp+4],EFLAGS_VIF + jz d + or word ptr [ebp+4],200h + jmp b +d: + and word ptr [ebp+4],NOT 200h + jmp b +c: + test ax,VIRTUAL_INTERRUPT_BIT + jz a + or word ptr [ebp+4],200h + jmp b +a: + and word ptr [ebp+4],NOT 200h +b: + pop ds + pop ax + pop ebp + endm +ELSE +riret macro + iret + endm + +riretd macro + iretd + endm + +riretd32 macro + iretd + endm + +rpopf macro + popf + endm + +rpopfd macro + popfd + endm + +rpushf macro + pushf + endm + +rpushfd macro + pushfd + endm + +rpushfd32 macro + pushfd + endm + +FCLI macro + cli + endm + +FSTI macro + sti + endm + +ENDIF diff --git a/private/mvdm/inc/makefile b/private/mvdm/inc/makefile new file mode 100644 index 000000000..5ef0946f1 --- /dev/null +++ b/private/mvdm/inc/makefile @@ -0,0 +1,126 @@ +# MVDM\INC makefile +# +# Copyright (c) 1991, Microsoft Corporation +# +# History: +# 14-May-1991 Jeff Parsons (jeffpar) +# Created. +# 08-Dec-1991 Sudeep Bharati (sudeepb) +# Changed the h2inc usage for DOSSVC to include strucs +# 12-FEB-92 mattfe added tdb16.h +# 14-April-92 ChandanC added WOWSHELL.H +# 12-May-1992 MikeTri added MultiMedia header +# + +!IFDEF USEBUILD + +# If using BUILD.EXE, edit .\sources. if you want to add a new source +# file to this component. This file merely indirects to the real make file +# that is shared by all the components of NT OS/2. + +!INCLUDE $(NTMAKEENV)\makefile.def + +!ELSE + +########## Path definition so we find 16 bit tools ########## +# Also works around stupid bug in RC 3.1 that doesn't allow rcpp.err to be +# in a directory that is greater than 128 chars down the path, even if +# rc 3.1 is running as an OS/2 app. + +PATH = $(_NTBINDIR)\private\mvdm\tools16;$(PATH) + +.SUFFIXES: +.SUFFIXES: .c .asm .h .inc .obj .lst .sys .exe .com .map .sym .def .lib + + +.h.inc: + h2inc -t -s mvdm.h -s wow.h $*.h -o $*.inc + + +INC_FILES = mvdm.inc softpc.inc bop.inc vint.inc \ + wow.inc wownt32.inc wowkrn.inc wowusr.inc wowgdi.inc wowshell.inc \ + wowkbd.inc wowsnd.inc tdb16.inc dpmi.inc dossvc.inc \ + xmssvc.inc cmdsvc.inc rdrsvc.inc dbgsvc.inc \ + apistruc.inc enumapis.inc wowmmed.inc wowmmcb.inc vrdlctab.inc \ + wowwsock.inc wowth.inc vrdefld.inc wowcmdlg.inc wowcmpat.inc \ + doswow.inc curdir.inc vdmtib.inc + +all: $(INC_FILES) + +clean: cleanup all + + +# +# Do NOT do del *.inc here. There are include files checked into this +# directory, and it's really annoying to have all of your changes vanish +# on a clean build +# +cleanup: + !-del $(INC_FILES) + +mvdm.inc: mvdm.h + +softpc.inc: softpc.h + +bop.inc: bop.h + +vint.inc: vint.h + +wow.inc: wow.h mvdm.h bop.h + +wowcmdlg.inc: wowcmdlg.h wow.inc + +wowkrn.inc: wowkrn.h wow.inc + +wowusr.inc: wowusr.h wow.inc + +wowgdi.inc: wowgdi.h wow.inc + +wowshell.inc: wowshell.h wow.inc + +wowkbd.inc: wowkbd.h wow.inc + +wowsnd.inc: wowsnd.h wow.inc + +wowmmed.inc: wowmmed.h wowmmcb.inc wow.inc + h2inc -t -s mvdm.h -s wow.h -s wowmmcb.h $*.h -o $*.inc + +wowwsock.inc: wowwsock.h wow.inc + +wowth.inc: wowth.h wow.inc + +tdb16.inc: tdb16.h + h2inc -s mvdm.h -s wow.h tdb16.h -o tdb16.inc + +dossvc.inc: dossvc.h bop.h + h2inc -s mvdm.h -s wow.h dossvc.h -o dossvc.inc + +xmssvc.inc: xmssvc.h bop.h + +cmdsvc.inc: cmdsvc.h bop.h + +curdir.inc: curdir.h bop.h + h2inc -s mvdm.h -s wow.h curdir.h -o curdir.inc + +dbgsvc.inc: dbgsvc.h bop.h + +dpmi.inc: dpmi.h bop.inc + +rdrsvc.inc: rdrsvc.h bop.h + +apistruc.inc: apistruc.h + +enumapis.inc: enumapis.h + +vrdlctab.inc: vrdlctab.h + +vrdefld.inc: vrdefld.h + +doswow.inc: doswow.h + +wownt32.inc: \nt\public\sdk\inc\wownt32.h + h2inc -t -s mvdm.h -s wow.h \nt\public\sdk\inc\wownt32.h -o wownt32.inc + +vdmtib.inc: ..\..\inc\vdm.h + h2inc -t -s mvdm.h -s wow.h ..\..\inc\vdm.h -o vdmtib.inc +!ENDIF diff --git a/private/mvdm/inc/memapi.h b/private/mvdm/inc/memapi.h new file mode 100644 index 000000000..62b01cac9 --- /dev/null +++ b/private/mvdm/inc/memapi.h @@ -0,0 +1,82 @@ +/*++ + +Copyright (c) 1992 Microsoft Corporation + +Module Name: + + memapi.h + +Abstract: + + This header defines the function prototypes for the memory + manipulation routines in the 486 emulator. + +Author: + + Neil Sandlin (neilsa) + +Notes: + + +Revision History: + + +--*/ + +NTSTATUS +VdmAllocateVirtualMemory( + PULONG Address, + ULONG Size, + BOOLEAN Commit + ); + +NTSTATUS +VdmFreeVirtualMemory( + ULONG Address + ); + +NTSTATUS +VdmCommitVirtualMemory( + ULONG Address, + ULONG Size + ); + +NTSTATUS +VdmDeCommitVirtualMemory( + ULONG Address, + ULONG Size + ); + +NTSTATUS +VdmQueryFreeVirtualMemory( + PULONG FreeBytes, + PULONG LargestFreeBlock + ); + +NTSTATUS +VdmReallocateVirtualMemory( + ULONG OldAddress, + PULONG NewAddress, + ULONG NewSize + ); + +NTSTATUS +VdmAddVirtualMemory( + ULONG HostAddress, + ULONG Size, + PULONG IntelAddress + ); + +NTSTATUS +VdmRemoveVirtualMemory( + ULONG IntelAddress + ); + + +BOOL +VdmAddDescriptorMapping( + USHORT SelectorStart, + USHORT SelectorCount, + ULONG LdtBase, + ULONG Flat + ); diff --git a/private/mvdm/inc/monregs.h b/private/mvdm/inc/monregs.h new file mode 100644 index 000000000..3fbfbdd08 --- /dev/null +++ b/private/mvdm/inc/monregs.h @@ -0,0 +1,103 @@ +extern CONTEXT IntelRegisters; +extern ULONG IntelMSW; +// Flag Register constants + +#define FLG_CARRY 0x00000001 +#define FLG_CARRY_BIT 0x00000000 +#define FLG_PARITY 0x00000004 +#define FLG_PARITY_BIT 0x00000003 +#define FLG_AUXILIARY 0x00000010 +#define FLG_AUXILIARY_BIT 0x00000005 +#define FLG_ZERO 0x00000040 +#define FLG_ZERO_BIT 0x00000006 +#define FLG_SIGN 0x00000080 +#define FLG_SIGN_BIT 0x00000007 +#define FLG_INTERRUPT 0x00000200 +#define FLG_INTERRUPT_BIT 0x00000009 +#define FLG_DIRECTION 0x00000400 +#define FLG_DIRECTION_BIT 0x0000000A +#define FLG_OVERFLOW 0x00000800 +#define FLG_OVERFLOW_BIT 0x0000000B +extern ULONG getEAX(VOID); +extern USHORT getAX(VOID); +extern UCHAR getAL(VOID); +extern UCHAR getAH(VOID); +extern ULONG getEBX(VOID); +extern USHORT getBX(VOID); +extern UCHAR getBL(VOID); +extern UCHAR getBH(VOID); +extern ULONG getECX(VOID); +extern USHORT getCX(VOID); +extern UCHAR getCL(VOID); +extern UCHAR getCH(VOID); +extern ULONG getEDX(VOID); +extern USHORT getDX(VOID); +extern UCHAR getDL(VOID); +extern UCHAR getDH(VOID); +extern ULONG getESP(VOID); +extern USHORT getSP(VOID); +extern ULONG getEBP(VOID); +extern USHORT getBP(VOID); +extern ULONG getESI(VOID); +extern USHORT getSI(VOID); +extern ULONG getEDI(VOID); +extern USHORT getDI(VOID); +extern ULONG getEIP(VOID); +extern USHORT getIP(VOID); +extern USHORT getCS(VOID); +extern USHORT getSS(VOID); +extern USHORT getDS(VOID); +extern USHORT getES(VOID); +extern USHORT getFS(VOID); +extern USHORT getGS(VOID); +extern ULONG getCF(VOID); +extern ULONG getPF(VOID); +extern ULONG getAF(VOID); +extern ULONG getZF(VOID); +extern ULONG getSF(VOID); +extern ULONG getIF(VOID); +extern ULONG getDF(VOID); +extern ULONG getOF(VOID); +extern USHORT getMSW(VOID); + +extern VOID setEAX(ULONG); +extern VOID setAX(USHORT); +extern VOID setAH(UCHAR); +extern VOID setAL(UCHAR); +extern VOID setEBX(ULONG); +extern VOID setBX(USHORT); +extern VOID setBH(UCHAR); +extern VOID setBL(UCHAR); +extern VOID setECX(ULONG); +extern VOID setCX(USHORT); +extern VOID setCH(UCHAR); +extern VOID setCL(UCHAR); +extern VOID setEDX(ULONG); +extern VOID setDX(USHORT); +extern VOID setDH(UCHAR); +extern VOID setDL(UCHAR); +extern VOID setESP(ULONG); +extern VOID setSP(USHORT); +extern VOID setEBP(ULONG); +extern VOID setBP(USHORT); +extern VOID setESI(ULONG); +extern VOID setSI(USHORT); +extern VOID setEDI(ULONG); +extern VOID setDI(USHORT); +extern VOID setEIP(ULONG); +extern VOID setIP(USHORT); +extern VOID setCS(USHORT); +extern VOID setSS(USHORT); +extern VOID setDS(USHORT); +extern VOID setES(USHORT); +extern VOID setFS(USHORT); +extern VOID setGS(USHORT); +extern VOID setCF(ULONG); +extern VOID setPF(ULONG); +extern VOID setAF(ULONG); +extern VOID setZF(ULONG); +extern VOID setSF(ULONG); +extern VOID setIF(ULONG); +extern VOID setDF(ULONG); +extern VOID setOF(ULONG); +extern VOID setMSW(USHORT); diff --git a/private/mvdm/inc/mvdm.h b/private/mvdm/inc/mvdm.h new file mode 100644 index 000000000..dce401502 --- /dev/null +++ b/private/mvdm/inc/mvdm.h @@ -0,0 +1,91 @@ +/*++ BUILD Version: 0001 + * + * MVDM v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * MVDM.H + * Constants, macros, and types common to all of MVDM + * + * History: + * Created 14-May-1991 by Jeff Parsons (jeffpar) +--*/ + + +/* Common constants, not defined in NT/WIN32 + */ +#define K 1024L + + +/* Common types, not defined in NT/WIN32 + */ +#ifdef H2INC +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef unsigned long DWORD; +typedef long LONG; +typedef char CHAR; +typedef short SHORT; +typedef unsigned short USHORT; +typedef unsigned long ULONG; +typedef char *PSZ; +typedef void *PVOID; +typedef ULONG *PULONG; +typedef WORD ATOM; +#endif + +// typedef int INT; +// typedef DWORD UINT; +typedef short FAR *LPSHORT; +typedef char SZ[]; +typedef char FAR *LPSZ; +typedef PBYTE *PPBYTE; +typedef PWORD *PPWORD; +typedef PDWORD *PPDWORD; +// typedef UINT *PUINT; + + +// unaligned typedefs + +typedef WORD UNALIGNED *PWORD16; +typedef SHORT UNALIGNED *PSHORT16; +typedef DWORD UNALIGNED *PDWORD16; + +#define WORDOF16(i,n) (((PWORD16)&(i))[n]) +#define LOW16(l) WORDOF16(l,0) +#define HIW16(l) WORDOF16(l,1) + +/* Common macros, not defined in NT/WIN32 + */ +#define BYTEOF(i,n) (((PBYTE)&(i))[n]) +#define LOB(i) BYTEOF(i,0) +#define HIB(i) BYTEOF(i,1) +#define WORDOF(i,n) (((PWORD)&(i))[n]) +#define LOW(l) WORDOF(l,0) +#define HIW(l) WORDOF(l,1) +#define INTOF(i,n) (((PINT)&(i))[n]) +#define UINTOF(i,n) (((PUINT)&(i))[n]) +#ifndef MAKEWORD +#define MAKEWORD(l,h) ((WORD)((BYTE)(l)|((BYTE)(h)<<8))) +#endif +#define MAKEDWORD(l0,h0,l1,h1) ((DWORD)MAKEWORD(l0,h0)|((DWORD)MAKEWORD(l1,h1)<<16)) +#define GETBYTE(p) *((PBYTE)p)++ +#ifdef i386 +#define FETCHWORD(s) ((WORD)(s)) +#define FETCHDWORD(s) ((DWORD)(s)) +#define STOREWORD(d,s) (WORD)d=(WORD)s +#define STOREDWORD(d,s) (DWORD)d=(DWORD)s +#else +#define FETCHWORD(s) (*(UNALIGNED WORD *)&(s)) +#define FETCHDWORD(s) (*(UNALIGNED DWORD *)&(s)) +#define STOREWORD(d,s) *(UNALIGNED WORD *)&(d)=(WORD)s +#define STOREDWORD(d,s) *(UNALIGNED DWORD *)&(d)=(DWORD)s +#endif +#define FETCHSHORT(s) ((SHORT)(FETCHWORD(s))) +#define FETCHLONG(s) ((LONG)(FETCHDWORD(s))) +#define STORESHORT(d,s) STOREWORD(d,s) +#define STORELONG(d,s) STOREDWORD(d,s) + +#define NUMEL(a) ((sizeof a)/(sizeof a[0])) +#define OFFSETOF(t,f) ((INT)&(((t *)0)->f)) + diff --git a/private/mvdm/inc/netb.h b/private/mvdm/inc/netb.h new file mode 100644 index 000000000..f96b57a7e --- /dev/null +++ b/private/mvdm/inc/netb.h @@ -0,0 +1,97 @@ + +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + vrnetb.h + +Abstract: + + Contains prototypes and definitions for Vdm netbios support routines + +Author: + + Colin Watson (colinw) 09-Dec-1991 + +Revision History: + + 09-Dec-1991 colinw + Created + +--*/ + +// +// Internal version of the ncb layout for mvdm. +// + +#include <packon.h> + +// +// Use packing to ensure that the cu union is not forced to word alignment. +// All elements of this structure are naturally aligned. +// + +typedef struct _NCBW { + UCHAR ncb_command; /* command code */ + volatile UCHAR ncb_retcode; /* return code */ + UCHAR ncb_lsn; /* local session number */ + UCHAR ncb_num; /* number of our network name */ + PUCHAR ncb_buffer; /* address of message buffer */ + WORD ncb_length; /* size of message buffer */ + union { + UCHAR ncb_callname[NCBNAMSZ];/* blank-padded name of remote */ + struct _CHAIN_SEND { + WORD ncb_length2; + PUCHAR ncb_buffer2; + } ncb_chain; + } cu; + UCHAR ncb_name[NCBNAMSZ]; /* our blank-padded netname */ + UCHAR ncb_rto; /* rcv timeout/retry count */ + UCHAR ncb_sto; /* send timeout/sys timeout */ + void (*ncb_post)( struct _NCB * ); /* POST routine address */ + UCHAR ncb_lana_num; /* lana (adapter) number */ + volatile UCHAR ncb_cmd_cplt; /* 0xff => commmand pending */ + + // Make driver specific use of the reserved area of the NCB. + WORD ncb_reserved; /* return to natural alignment */ + union { + LIST_ENTRY ncb_next; /* queued to worker thread */ + IO_STATUS_BLOCK ncb_iosb; /* used for Nt I/O interface */ + } u; + + HANDLE ncb_event; /* HANDLE to Win32 event */ + + // Extra workspace utilized by the mvdm component. + + WORD ncb_es; /* 16 bit address of the real NCB */ + WORD ncb_bx; + + PNCB ncb_original_ncb; /* 32 bit address of the real NCB */ + DWORD ProtectModeNcb; /* TRUE if NCB originated in PM */ + + } NCBW, *PNCBW; + +#include <packoff.h> + +VOID +VrNetbios5c( + VOID + ); + + +VOID +VrNetbios5cInterrupt( + VOID + ); + +VOID +VrNetbios5cInitialize( + VOID + ); + +BOOLEAN +IsPmNcbAtQueueHead( + VOID + ); diff --git a/private/mvdm/inc/oemuni.h b/private/mvdm/inc/oemuni.h new file mode 100644 index 000000000..0e95db379 --- /dev/null +++ b/private/mvdm/inc/oemuni.h @@ -0,0 +1,240 @@ +/* + * OemUnicode win32 thunk prototypes + * + * 14-Jan-1993 Jonle, created + * + * Should be identical to ansi form with "Oem" appended + * instead of "A" + */ + +HANDLE +WINAPI +CreateFileOem( + LPCSTR lpFileName, + DWORD dwDesiredAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes, + HANDLE hTemplateFile + ); + +BOOL +APIENTRY +SetFileAttributesOem( + LPSTR lpFileName, + DWORD dwFileAttributes + ); + +DWORD +APIENTRY +GetFileAttributesOem( + LPSTR lpFileName + ); + +BOOL +APIENTRY +DeleteFileOem( + LPSTR lpFileName + ); + +BOOL +APIENTRY +MoveFileOem( + LPSTR lpExistingFileName, + LPSTR lpNewFileName + ); + +BOOL +APIENTRY +MoveFileExOem( + LPSTR lpExistingFileName, + LPSTR lpNewFileName, + DWORD fdwFlags + ); + +HANDLE +APIENTRY +FindFirstFileOem( + LPSTR lpFileName, + LPWIN32_FIND_DATAA lpFindFileData + ); + +BOOL +APIENTRY +FindNextFileOem( + HANDLE hFindFile, + LPWIN32_FIND_DATAA lpFindFileData + ); + +DWORD +APIENTRY +GetFullPathNameOem( + LPCSTR lpFileName, + DWORD nBufferLength, + LPSTR lpBuffer, + LPSTR *lpFilePart + ); + +DWORD +APIENTRY +GetCurrentDirectoryOem( + DWORD nBufferLength, + LPSTR lpBuffer + ); + +BOOL +APIENTRY +SetCurrentDirectoryOem( + LPSTR lpPathName + ); + +BOOL +APIENTRY +CreateDirectoryOem( + LPSTR lpPathName, + LPSECURITY_ATTRIBUTES lpSecurityAttributes + ); + +BOOL +APIENTRY +RemoveDirectoryOem( + LPSTR lpPathName + ); + +UINT +APIENTRY +GetSystemDirectoryOem( + LPSTR lpBuffer, + UINT uSize + ); + +UINT +APIENTRY +GetWindowsDirectoryOem( + LPSTR lpBuffer, + UINT uSize + ); + +UINT +APIENTRY +GetDriveTypeOem( + LPSTR lpRootPathName + ); + +DWORD +APIENTRY +SearchPathOem ( + LPCSTR lpPath, + LPCSTR lpFileName, + LPCSTR lpExtension, + DWORD nBufferLength, + LPSTR lpBuffer, + LPSTR *lpFilePart + ); + +DWORD +APIENTRY +GetTempPathOem( + DWORD nBufferLength, + LPSTR lpBuffer + ); + +UINT +APIENTRY +GetTempFileNameOem( + LPCSTR lpPathName, + LPCSTR lpPrefixString, + UINT uUnique, + LPSTR lpTempFileName + ); + +BOOL +APIENTRY +GetDiskFreeSpaceOem( + LPSTR lpRootPathName, + LPDWORD lpSectorsPerCluster, + LPDWORD lpBytesPerSector, + LPDWORD lpNumberOfFreeClusters, + LPDWORD lpTotalNumberOfClusters + ); + +BOOL +APIENTRY +GetVolumeInformationOem( + LPSTR lpRootPathName, + LPSTR lpVolumeNameBuffer, + DWORD nVolumeNameSize, + LPDWORD lpVolumeSerialNumber, + LPDWORD lpMaximumComponentLength, + LPDWORD lpFileSystemFlags, + LPSTR lpFileSystemNameBuffer, + DWORD nFileSystemNameSize + ); + +BOOL +WINAPI +CreateProcessOem( + LPCSTR lpApplicationName, + LPCSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPSTR lpCurrentDirectory, + LPSTARTUPINFOA lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation + ); + +DWORD +WINAPI +GetEnvironmentVariableOem( + LPSTR lpName, + LPSTR lpBuffer, + DWORD nSize + ); + +BOOL +WINAPI +SetEnvironmentVariableOem( + LPSTR lpName, + LPSTR lpValue + ); + +DWORD +WINAPI +ExpandEnvironmentStringsOem( + LPSTR lpSrc, + LPSTR lpDst, + DWORD cchDst + ); + + + +VOID +APIENTRY +OutputDebugStringOem( + LPCSTR lpOutputString + ); + +BOOL +WINAPI +GetComputerNameOem ( + LPSTR lpComputerName, + LPDWORD BufferSize + ); + +BOOL +WINAPI +RemoveFontResourceOem( + LPSTR lpFileName + ); + +UINT +WINAPI +GetShortPathNameOem( + LPSTR lpSrc, + LPSTR lpDst, + DWORD cchDst + ); diff --git a/private/mvdm/inc/rdrexp.h b/private/mvdm/inc/rdrexp.h new file mode 100644 index 000000000..fca12ba4b --- /dev/null +++ b/private/mvdm/inc/rdrexp.h @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + rdrexp.h + +Abstract: + + Definition of Vdm Redir BOP dispatcher + +Author: + + Richard L Firth (rfirth) 13-Sep-1991 + +Revision History: + + 13-Sep-1991 rfirth + Created + +--*/ + + + +BOOL +VrDispatch( + IN ULONG SvcCode + ); diff --git a/private/mvdm/inc/rdrsvc.h b/private/mvdm/inc/rdrsvc.h new file mode 100644 index 000000000..cf53c940e --- /dev/null +++ b/private/mvdm/inc/rdrsvc.h @@ -0,0 +1,94 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + rdrsvc.h + +Abstract: + + Contains BOP codes for Vdm Redir (Vr) BOP dispatcher + +Author: + + Richard L Firth (rfirth) 13-Sep-1991 + +Revision History: + + 13-Sep-1991 rfirth + Created + +--*/ + + + +/* ASM +include bop.inc + +SVC macro SvcNum + BOP BOP_REDIR + db SvcNum +endm + +*/ + + + +// +// Note: the order has no bearing on the order of the 5f dispatch table or +// vice versa. However, the order must be contiguous +// + +#define SVC_RDRINITIALIZE 0x00 // redir loaded +#define SVC_RDRUNINITIALIZE 0x01 // redir unloaded +#define SVC_RDRQNMPIPEINFO 0x02 // DosQNmPipeInfo +#define SVC_RDRQNMPHANDSTATE 0x03 // DosQNmpHandState +#define SVC_RDRSETNMPHANDSTATE 0x04 // DosSetNmpHandState +#define SVC_RDRPEEKNMPIPE 0x05 // DosPeekNmPipe +#define SVC_RDRTRANSACTNMPIPE 0x06 // DosTransactNmPipe +#define SVC_RDRCALLNMPIPE 0x07 // DosCallNmPipe +#define SVC_RDRWAITNMPIPE 0x08 // DosWaitNmPipe +#define SVC_RDRDELETEMAILSLOT 0x09 // DosDeleteMailslot +#define SVC_RDRGETMAILSLOTINFO 0x0a // DosMailslotInfo +#define SVC_RDRMAKEMAILSLOT 0x0b // DosMakeMailslot +#define SVC_RDRPEEKMAILSLOT 0x0c // DosPeekMailslot +#define SVC_RDRREADMAILSLOT 0x0d // DosReadMailslot +#define SVC_RDRWRITEMAILSLOT 0x0e // DosWriteMailslot +#define SVC_RDRTERMINATE 0x0f // NetResetEnvironment for mailslots +#define SVC_RDRTRANSACTAPI 0x10 // NetTransactAPI +#define SVC_RDRIREMOTEAPI 0x11 // NetIRemoteAPI +#define SVC_RDRNULLTRANSACTAPI 0x12 // NetTransactAPI +#define SVC_RDRSERVERENUM 0x13 // NetServerEnum (remoted) +#define SVC_RDRUSEADD 0x14 // NetUseAdd (local) +#define SVC_RDRUSEDEL 0x15 // NetUseDel (local) +#define SVC_RDRUSEENUM 0x16 // NetUseEnum (local) +#define SVC_RDRUSEGETINFO 0x17 // NetUseGetInfo (local) +#define SVC_RDRWKSTAGETINFO 0x18 // NetWkstaGetInfo (local) +#define SVC_RDRWKSTASETINFO 0x19 // NetWkstaSetInfo (local) +#define SVC_RDRMESSAGEBUFFERSEND 0x1a // NetMessageBufferSend (local) +#define SVC_RDRGETCDNAMES 0x1b // NetGetEnumInfo.CDNames +#define SVC_RDRGETCOMPUTERNAME 0x1c // NetGetEnumInfo.ComputerName +#define SVC_RDRGETUSERNAME 0x1d // NetGetEnumInfo.UserName +#define SVC_RDRGETDOMAINNAME 0x1e // NetGetEnumInfo.DomainName +#define SVC_RDRGETLOGONSERVER 0x1f // NetGetEnumInfo.LogonServer +#define SVC_RDRHANDLEGETINFO 0x20 // NetHandleGetInfo +#define SVC_RDRHANDLESETINFO 0x21 // NetHandleSetInfo +#define SVC_RDRGETDCNAME 0x22 // NetGetDCName +#define SVC_RDRREADASYNCNMPIPE 0x23 // DosReadAsyncNmPipe +#define SVC_RDRWRITEASYNCNMPIPE 0x24 // DosWriteAsyncNmPipe +#define SVC_NETBIOS5C 0x25 // Netbios request handler +#define SVC_NETBIOS5CINTERRUPT 0x26 // Netbios/Dlc post routine request +#define SVC_DLC_5C 0x27 // Dlc request handler +#define SVC_VDM_WINDOW_INIT 0x28 // Inits memory window +#define SVC_RDRRETURN_MODE 0x29 // returns pause/continue state +#define SVC_RDRSET_MODE 0x2a // sets pause/continue state +#define SVC_RDRGET_ASG_LIST 0x2b // old NetUseGetInfo +#define SVC_RDRDEFINE_MACRO 0x2c // old NetUseAdd +#define SVC_RDRBREAK_MACRO 0x2d // old NetUseDel +#define SVC_RDRSERVICECONTROL 0x2e // NetServiceControl +#define SVC_RDRINTACK 0x2f // VrDismissInterrupt +#define SVC_RDRINTACK2 0x30 // VrDismissInterrupt2 +#define SVC_NETBIOSCHECK 0x31 // VrCheckPmNetbiosAnr + +#define MAX_REDIR_SVC SVC_NETBIOSCHECK diff --git a/private/mvdm/inc/sharewow.h b/private/mvdm/inc/sharewow.h new file mode 100644 index 000000000..2ddff8e09 --- /dev/null +++ b/private/mvdm/inc/sharewow.h @@ -0,0 +1,135 @@ + +// Some nice shared memory macros +// +// Changed by DaveHart 25-Feb-96 so that the shared memory +// is kept open and mapped for the duration of the process. +// At the same time added needed synchronization. +// + +#define LOCKSHAREWOW() LockWowSharedMemory() +#define UNLOCKSHAREWOW() ReleaseMutex(hSharedWOWMutex) + +#define MAX_SHARED_OBJECTS 200 + +typedef struct _SHAREDTASKMEM { + BOOL fInitialized; + DWORD dwFirstProcess; // Offset into shared memory where 1st shared process struct begins +} SHAREDTASKMEM, *LPSHAREDTASKMEM; + +typedef struct _SHAREDPROCESS { + DWORD dwType; + DWORD dwProcessId; + DWORD dwAttributes; // WOW_SYSTEM for shared WOW + DWORD dwNextProcess; // Offset into shared memory where next shared process struct begins + DWORD dwFirstTask; // Offset into shared memory where 1st task for this process begins + LPTHREAD_START_ROUTINE pfnW32HungAppNotifyThread; // For VDMTerminateTaskWOW +} SHAREDPROCESS, *LPSHAREDPROCESS; + +typedef struct _SHAREDTASK { + DWORD dwType; + DWORD dwThreadId; + WORD hTask16; + WORD hMod16; + DWORD dwNextTask; // Offset into shared memory where next task for this process begins + CHAR szModName[9]; // null terminated + CHAR szFilePath[128]; // null terminated +} SHAREDTASK, *LPSHAREDTASK; + +typedef union _SHAREDMEMOBJECT { + SHAREDPROCESS sp; + SHAREDTASK st; + DWORD dwType; +} SHAREDMEMOBJECT, *LPSHAREDMEMOBJECT; + +#define SMO_AVAILABLE 0 +#define SMO_PROCESS 1 +#define SMO_TASK 2 + +#ifndef SHAREWOW_MAIN +extern HANDLE hSharedWOWMem; +extern LPSHAREDTASKMEM lpSharedWOWMem; +extern CHAR szWowSharedMemName[]; +extern HANDLE hSharedWOWMutex; +LPSHAREDTASKMEM LockWowSharedMemory(VOID); +#else +HANDLE hSharedWOWMem = NULL; +LPSHAREDTASKMEM lpSharedWOWMem = NULL; +CHAR szWowSharedMemName[] = "msvdmdbg.wow"; +CHAR szWowSharedMutexName[] = "msvdmdbg.mtx"; +HANDLE hSharedWOWMutex = NULL; + +LPSHAREDTASKMEM LockWowSharedMemory(VOID) +{ + DWORD dwWaitResult; + LPSHAREDTASKMEM RetVal = NULL; + SECURITY_DESCRIPTOR sd; + SECURITY_ATTRIBUTES sa; + + InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION); + SetSecurityDescriptorDacl(&sd, TRUE, NULL, FALSE); // NULL DACL == wide open + + RtlZeroMemory(&sa, sizeof sa); + sa.nLength = sizeof sa; + sa.lpSecurityDescriptor = &sd; + + if (! lpSharedWOWMem ) { + + if (! hSharedWOWMutex) { + hSharedWOWMutex = CreateMutex(&sa, FALSE, szWowSharedMutexName); // will open if exists + if (! hSharedWOWMutex) { + goto Fail; + } + } + + if (! hSharedWOWMem) { + + hSharedWOWMem = CreateFileMapping( // will open if it exists + (HANDLE)-1, + &sa, + PAGE_READWRITE, + 0, + sizeof(SHAREDTASKMEM) + + (MAX_SHARED_OBJECTS * + sizeof(SHAREDMEMOBJECT)), + szWowSharedMemName); + + if (! hSharedWOWMem) { + goto Fail; + } + } + + lpSharedWOWMem = MapViewOfFile(hSharedWOWMem, FILE_MAP_WRITE, 0, 0, 0); + if (! lpSharedWOWMem) { + goto Fail; + } + } + + dwWaitResult = WaitForSingleObject(hSharedWOWMutex, INFINITE); + + if (dwWaitResult != WAIT_OBJECT_0 && dwWaitResult != WAIT_ABANDONED) { + goto Fail; + } + + RetVal = lpSharedWOWMem; + goto Succeed; + +Fail: + if (! RetVal) { + if (hSharedWOWMutex) { + CloseHandle(hSharedWOWMutex); + hSharedWOWMutex = NULL; + } + if (lpSharedWOWMem) { + UnmapViewOfFile(lpSharedWOWMem); + lpSharedWOWMem = NULL; + } + if (hSharedWOWMem) { + CloseHandle(hSharedWOWMem); + hSharedWOWMem = NULL; + } + } + +Succeed: + return RetVal; +} +#endif diff --git a/private/mvdm/inc/softpc.h b/private/mvdm/inc/softpc.h new file mode 100644 index 000000000..d6ae4f7cc --- /dev/null +++ b/private/mvdm/inc/softpc.h @@ -0,0 +1,651 @@ +/*++ BUILD Version: 0001 + +Copyright (c) 1990 Microsoft Corporation + +Module Name: + + SOFTPC.H + +Abstract: + + High-level include file for components interfacing to SoftPC + +Author: + + Dave Hastings (daveh) 25-Apr-1991 + +Revision History: + Sudeep Bharati 23-Aug-1991 Added SOFTPC_BLD + Matt Felton 8-FEB-1992 Added getIntelRegistersPointer + Jonle 18-Sep-1992 Add popup for unsupported functionality + Jonle 21-Nov-1992 Add Standard Resource Error Dialog Box + GetPIFConfigFiles + +--*/ + + +/********** COMMON STUFF FOR MIPS AND V86 *************/ + +/* XLATOFF */ +#ifdef i386 +#include "v86def.h" +#endif + + +/* XLATON */ +extern VOID nt_block_event_thread(ULONG); +extern VOID nt_resume_event_thread(VOID); +/* notification of PDB(Process Data Block, A.K.A PSP) termination */ +extern VOID HostTerminatePDB(USHORT pdb); +/* disk subsystem reset notification. These functions will close all + * outstanding opened handles for DASD(Direct AcceS Disk) */ +extern VOID HostFloppyReset(VOID); +extern VOID HostFdiskReset(VOID); + + +// unsupported services dialog box +extern VOID host_direct_access_error(ULONG); + +extern VOID host_lpt_flush_initialize(VOID); + +#define NOSUPPORT_FLOPPY 0 +#define NOSUPPORT_HARDDISK 1 +#define NOSUPPORT_DRIVER 2 +#define NOSUPPORT_OLDPIF 3 +#define NOSUPPORT_ILLBOP 4 +#define NOSUPPORT_NOLIM 5 +#define NOSUPPORT_MOUSEDRVR 6 + +// standard error dialog box using resources +void RcErrorDialogBox(USHORT wId, CHAR *msg1, CHAR *msg2); + + +/* + * RcMessageBox\EditBox stuff + */ +#define RMB_ABORT 1 +#define RMB_RETRY 2 +#define RMB_IGNORE 4 +#define RMB_ICON_INFO 8 +#define RMB_ICON_BANG 16 +#define RMB_ICON_STOP 32 +#define RMB_ICON_WHAT 64 +#define RMB_EDIT 128 +#define RMB_FLAGS_MASK 0x0000FFFF +#define RMB_EDITBUFFERSIZE_MASK 0xFFFF0000 +// hiword of dwOptions is reserved for RMB_EDIT text buffer size + +int RcMessageBox(USHORT wId, CHAR *msg1, CHAR *msg2, ULONG dwOptions); + + +// sudeepb 02-May-1993 these following defines are actually defined +// in host\inc\error.h and host\inc\nt_uis.h. this stuff needs +// major cleanup after product 1.0. + +#define EG_MALLOC_FAILURE 7 +#define EG_PIF_BAD_FORMAT 18 +#define EG_PIF_STARTDIR_ERR 19 +#define EG_PIF_STARTFILE_ERR 20 +#define EG_PIF_CMDLINE_ERR 21 +#define EG_PIF_ASK_CMDLINE 22 +#define EG_ENVIRONMENT_ERR 23 +#define EG_BAD_FAULT 27 +#define EG_DOS_PROG_EXTENSION 28 + +#define ED_BADSYSFILE 336 +#define ED_INITMEMERR 337 +#define ED_INITTMPFILE 338 + + +// +// SysErrorBox stuff -- duplicated in usersrv.h *and* kernel.inc +// +#define SEB_OK 1 /* Button with "OK". */ +#define SEB_CANCEL 2 /* Button with "Cancel" */ +#define SEB_YES 3 /* Button with "&Yes" */ +#define SEB_NO 4 /* Button with "&No" */ +#define SEB_RETRY 5 /* Button with "&Retry" */ +#define SEB_ABORT 6 /* Button with "&Abort" */ +#define SEB_IGNORE 7 /* Button with "&Ignore" */ +#define SEB_CLOSE 8 /* Button with "&Close" */ + +#define SEB_DEFBUTTON 0x8000 /* Mask to make this button default */ + +ULONG WOWSysErrorBox( + LPSTR szTitle, + LPSTR szMessage, + USHORT wBtn1, + USHORT wBtn2, + USHORT wBtn3 + ); + +// Called by WOW to force VdmAllocateVirtualMemory to alloc blocks of +// memory with ever increasing linear address's. +VOID SetWOWforceIncrAlloc( + BOOL iEnable + ); + +// call out to softpc to get config.sys\autoexec.bat file names +VOID GetPIFConfigFiles(BOOL bConfig, char *pchFileName); + +// exported interfaces +extern VOID TerminateVDM (VOID); +extern ULONG DosSessionId; + +// VDD idle callouts +void WaitIfIdle(void); +void WakeUpNow(void); + + +// +// Constants +// +#define MSW_PE 0x1 + +/* XLATOFF */ +#define ISPESET (UCHAR) (getMSW() & MSW_PE ? 1 : 0) +/* XLATON */ + +// +// Macros +// + +#define EXPORT + +// Flag Register constants + +#define FLG_CARRY 0x00000001 +#define FLG_CARRY_BIT 0x00000000 +#define FLG_PARITY 0x00000004 +#define FLG_PARITY_BIT 0x00000003 +#define FLG_AUXILIARY 0x00000010 +#define FLG_AUXILIARY_BIT 0x00000005 +#define FLG_ZERO 0x00000040 +#define FLG_ZERO_BIT 0x00000006 +#define FLG_SIGN 0x00000080 +#define FLG_SIGN_BIT 0x00000007 +#define FLG_TRAP 0x00000100 + +#define FLG_INTERRUPT 0x00000200 +#define FLG_INTERRUPT_BIT 0x00000009 +#define FLG_DIRECTION 0x00000400 +#define FLG_DIRECTION_BIT 0x0000000A +#define FLG_OVERFLOW 0x00000800 +#define FLG_OVERFLOW_BIT 0x0000000B + +EXPORT +VOID +host_cpu_init( + VOID + ); + +//EXPORT +//VOID +//sas_init( +// IN sys_addr Size +// ); + +EXPORT +VOID +host_simulate( + VOID + ); + +HANDLE +host_CreateThread( + LPSECURITY_ATTRIBUTES lpThreadAttributes, + DWORD dwStackSize, + LPTHREAD_START_ROUTINE lpStartAddress, + LPVOID lpParameter, + DWORD dwCreationFlags, + LPDWORD lpThreadId + ); + +VOID +cpu_createthread( + HANDLE hThread + ); + +VOID +host_ExitThread( + DWORD dwExitCode + ); + + +EXPORT VOID host_com_close(int PortId); +EXPORT int SuspendTimerThread(VOID); +EXPORT int ResumeTimerThread(VOID); + +void *ch_malloc(unsigned int NumBytes); + + +UCHAR *Sim32pGetVDMPointer(ULONG addr, UCHAR pm); +#define Sim32GetVDMPointer(Addr,Size,Mode) Sim32pGetVDMPointer(Addr,Mode) + +#ifdef i386 + +/********** FOR V86 BUILD *************/ + +BOOL +ThreadSetDebugContext( + PULONG pDebugRegisters + ); + + +// external data + +extern ULONG IntelBase; // used by memory access macros +extern X86CONTEXT IntelRegisters; // used by register access macros +extern ULONG VdmDebugLevel; // used to control debugging +extern ULONG IntelMSW; // used by getMSW/setMSW macs. +extern ULONG VdmFeatureBits; + + +// Register access macros + +#ifdef LINKED_INTO_MONITOR + +#include <vdmtib.h> + +#define getEAX() (VdmTib.VdmContext.Eax) +#define getAX() ((USHORT)(VdmTib.VdmContext.Eax)) +#define getAL() ((BYTE)(VdmTib.VdmContext.Eax)) +#define getAH() ((BYTE)(VdmTib.VdmContext.Eax >> 8)) +#define getEBX() (VdmTib.VdmContext.Ebx) +#define getBX() ((USHORT)(VdmTib.VdmContext.Ebx)) +#define getBL() ((BYTE)(VdmTib.VdmContext.Ebx)) +#define getBH() ((BYTE)(VdmTib.VdmContext.Ebx >> 8)) +#define getECX() (VdmTib.VdmContext.Ecx) +#define getCX() ((USHORT)(VdmTib.VdmContext.Ecx)) +#define getCL() ((BYTE)(VdmTib.VdmContext.Ecx)) +#define getCH() ((BYTE)(VdmTib.VdmContext.Ecx >> 8)) +#define getEDX() (VdmTib.VdmContext.Edx) +#define getDX() ((USHORT)(VdmTib.VdmContext.Edx)) +#define getDL() ((BYTE)(VdmTib.VdmContext.Edx)) +#define getDH() ((BYTE)(VdmTib.VdmContext.Edx >> 8)) +#define getESP() (VdmTib.VdmContext.Esp) +#define getSP() ((USHORT)VdmTib.VdmContext.Esp) +#define getEBP() (VdmTib.VdmContext.Ebp) +#define getBP() ((USHORT)VdmTib.VdmContext.Ebp) +#define getESI() (VdmTib.VdmContext.Esi) +#define getSI() ((USHORT)VdmTib.VdmContext.Esi) +#define getEDI() (VdmTib.VdmContext.Edi) +#define getDI() ((USHORT)VdmTib.VdmContext.Edi) +#define getEIP() (VdmTib.VdmContext.Eip) +#define getIP() ((USHORT)VdmTib.VdmContext.Eip) +#define getCS() ((USHORT)VdmTib.VdmContext.SegCs) +#define getSS() ((USHORT)VdmTib.VdmContext.SegSs) +#define getDS() ((USHORT)VdmTib.VdmContext.SegDs) +#define getES() ((USHORT)VdmTib.VdmContext.SegEs) +#define getFS() ((USHORT)VdmTib.VdmContext.SegFs) +#define getGS() ((USHORT)VdmTib.VdmContext.SegGs) +#define getCF() ((VdmTib.VdmContext.EFlags & FLG_CARRY) ? 1 : 0) +#define getPF() ((VdmTib.VdmContext.EFlags & FLG_PARITY) ? 1 : 0) +#define getAF() ((VdmTib.VdmContext.EFlags & FLG_AUXILIARY) ? 1 : 0) +#define getZF() ((VdmTib.VdmContext.EFlags & FLG_ZERO) ? 1 : 0) +#define getSF() ((VdmTib.VdmContext.EFlags & FLG_SIGN) ? 1 : 0) +#define getTF() ((VdmTib.VdmContext.EFlags & FLG_TRAP) ? 1 : 0) +#define getIF() ((VdmTib.VdmContext.EFlags & FLG_INTERRUPT) ? 1 : 0) +#define getDF() ((VdmTib.VdmContext.EFlags & FLG_DIRECTION) ? 1 : 0) +#define getOF() ((VdmTib.VdmContext.EFlags & FLG_OVERFLOW) ? 1 : 0) +#define getMSW() (IntelMSW) +#define getSTATUS() (USHORT)(VdmTib.VdmContext.EFlags) + +#define setEAX(val) { VdmTib.VdmContext.Eax = val;} + +#define setAX(val) { VdmTib.VdmContext.Eax = (VdmTib.VdmContext.Eax & 0xFFFF0000) | ((ULONG)val & 0x0000FFFF);} + +#define setAH(val) { VdmTib.VdmContext.Eax = (VdmTib.VdmContext.Eax & 0xFFFF00FF) | ((ULONG)(val << 8) & 0x0000FF00);} + +#define setAL(val) { VdmTib.VdmContext.Eax = (VdmTib.VdmContext.Eax & 0xFFFFFF00) | ((ULONG)val & 0x000000FF);} + +#define setEBX(val) { VdmTib.VdmContext.Ebx = val ;} + +#define setBX(val) { VdmTib.VdmContext.Ebx = (VdmTib.VdmContext.Ebx & 0xFFFF0000) | ((ULONG)val & 0x0000FFFF);} + +#define setBH(val) { VdmTib.VdmContext.Ebx = (VdmTib.VdmContext.Ebx & 0xFFFF00FF) | ((ULONG)(val << 8) & 0x0000FF00);} + +#define setBL(val) { VdmTib.VdmContext.Ebx = (VdmTib.VdmContext.Ebx & 0xFFFFFF00) | ((ULONG)val & 0x000000FF);} + +#define setECX(val) { VdmTib.VdmContext.Ecx = val ;} + +#define setCX(val) { VdmTib.VdmContext.Ecx = (VdmTib.VdmContext.Ecx & 0xFFFF0000) | ((ULONG)val & 0x0000FFFF);} + +#define setCH(val) { VdmTib.VdmContext.Ecx = (VdmTib.VdmContext.Ecx & 0xFFFF00FF) | ((ULONG)(val << 8) & 0x0000FF00);} + +#define setCL(val) { VdmTib.VdmContext.Ecx = (VdmTib.VdmContext.Ecx & 0xFFFFFF00) | ((ULONG)val & 0x000000FF);} + +#define setEDX(val) { VdmTib.VdmContext.Edx = val ;} + +#define setDX(val) { VdmTib.VdmContext.Edx = (VdmTib.VdmContext.Edx & 0xFFFF0000) | ((ULONG)val & 0x0000FFFF);} + +#define setDH(val) { VdmTib.VdmContext.Edx = (VdmTib.VdmContext.Edx & 0xFFFF00FF) | ((ULONG)(val << 8) & 0x0000FF00);} + +#define setDL(val) { VdmTib.VdmContext.Edx = (VdmTib.VdmContext.Edx & 0xFFFFFF00) | ((ULONG)val & 0x000000FF);} + +#define setESP(val) { VdmTib.VdmContext.Esp = val ;} + +#define setSP(val) { VdmTib.VdmContext.Esp = (VdmTib.VdmContext.Esp & 0xFFFF0000) | ((ULONG)val & 0x0000FFFF);} + +#define setEBP(val) { VdmTib.VdmContext.Ebp = val;} + +#define setBP(val) { VdmTib.VdmContext.Ebp = (VdmTib.VdmContext.Ebp & 0xFFFF0000) | ((ULONG)val & 0x0000FFFF);} + +#define setESI(val) { VdmTib.VdmContext.Esi = val ;} + +#define setSI(val) { VdmTib.VdmContext.Esi = (VdmTib.VdmContext.Esi & 0xFFFF0000) | ((ULONG)val & 0x0000FFFF);} +#define setEDI(val) { VdmTib.VdmContext.Edi = val ;} + +#define setDI(val) { VdmTib.VdmContext.Edi = (VdmTib.VdmContext.Edi & 0xFFFF0000) | ((ULONG)val & 0x0000FFFF);} + +#define setEIP(val) { VdmTib.VdmContext.Eip = val ;} + +#define setIP(val) { VdmTib.VdmContext.Eip = (VdmTib.VdmContext.Eip & 0xFFFF0000) | ((ULONG)val & 0x0000FFFF);} + +#define setCS(val) { VdmTib.VdmContext.SegCs = (ULONG) val & 0x0000FFFF ;} + +#define setSS(val) { VdmTib.VdmContext.SegSs = (ULONG) val & 0x0000FFFF ;} + +#define setDS(val) { VdmTib.VdmContext.SegDs = (ULONG) val & 0x0000FFFF ;} + +#define setES(val) { VdmTib.VdmContext.SegEs = (ULONG) val & 0x0000FFFF ;} + +#define setFS(val) { VdmTib.VdmContext.SegFs = (ULONG) val & 0x0000FFFF ;} + +#define setGS(val) { VdmTib.VdmContext.SegGs = (ULONG) val & 0x0000FFFF ;} + +#define setCF(val) { VdmTib.VdmContext.EFlags = (VdmTib.VdmContext.EFlags & ~FLG_CARRY) | (((ULONG)val << FLG_CARRY_BIT) & FLG_CARRY);} + +#define setPF(val) { VdmTib.VdmContext.EFlags = (VdmTib.VdmContext.EFlags & ~FLG_PARITY) | (((ULONG)val << FLG_PARITY_BIT) & FLG_PARITY);} + +#define setAF(val) { VdmTib.VdmContext.EFlags = (VdmTib.VdmContext.EFlags & ~FLG_AUXILIARY) | (((ULONG)val << FLG_AUXILIARY_BIT) & FLG_AUXILIARY);} + +#define setZF(val) { VdmTib.VdmContext.EFlags = (VdmTib.VdmContext.EFlags & ~FLG_ZERO) | (((ULONG)val << FLG_ZERO_BIT) & FLG_ZERO);} + +#define setSF(val) { VdmTib.VdmContext.EFlags = (VdmTib.VdmContext.EFlags & ~FLG_SIGN) | (((ULONG)val << FLG_SIGN_BIT) & FLG_SIGN);} + +#define setIF(val) { VdmTib.VdmContext.EFlags = (VdmTib.VdmContext.EFlags & ~FLG_INTERRUPT) | (((ULONG)val << FLG_INTERRUPT_BIT) & FLG_INTERRUPT);} + +#define setDF(val) { VdmTib.VdmContext.EFlags = (VdmTib.VdmContext.EFlags & ~FLG_DIRECTION) | (((ULONG)val << FLG_DIRECTION_BIT) & FLG_DIRECTION);} + +#define setOF(val) { VdmTib.VdmContext.EFlags = (VdmTib.VdmContext.EFlags & ~FLG_OVERFLOW) | (((ULONG)val << FLG_OVERFLOW_BIT) & FLG_OVERFLOW);} + +#define setMSW(val) { IntelMSW = val ;} + +#define setSTATUS(val) { VdmTib.VdmContext.EFlags = (VdmTib.VdmContext.EFlags & 0xFFFF0000) | val;} + +#else // not linked into monitor + +extern ULONG getEAX(VOID); +extern USHORT getAX(VOID); +extern UCHAR getAL(VOID); +extern UCHAR getAH(VOID); +extern ULONG getEBX(VOID); +extern USHORT getBX(VOID); +extern UCHAR getBL(VOID); +extern UCHAR getBH(VOID); +extern ULONG getECX(VOID); +extern USHORT getCX(VOID); +extern UCHAR getCL(VOID); +extern UCHAR getCH(VOID); +extern ULONG getEDX(VOID); +extern USHORT getDX(VOID); +extern UCHAR getDL(VOID); +extern UCHAR getDH(VOID); +extern ULONG getESP(VOID); +extern USHORT getSP(VOID); +extern ULONG getEBP(VOID); +extern USHORT getBP(VOID); +extern ULONG getESI(VOID); +extern USHORT getSI(VOID); +extern ULONG getEDI(VOID); +extern USHORT getDI(VOID); +extern ULONG getEIP(VOID); +extern USHORT getIP(VOID); +extern USHORT getCS(VOID); +extern USHORT getSS(VOID); +extern USHORT getDS(VOID); +extern USHORT getES(VOID); +extern USHORT getFS(VOID); +extern USHORT getGS(VOID); +extern ULONG getCF(VOID); +extern ULONG getPF(VOID); +extern ULONG getAF(VOID); +extern ULONG getZF(VOID); +extern ULONG getSF(VOID); +extern ULONG getIF(VOID); +extern ULONG getDF(VOID); +extern ULONG getOF(VOID); +extern USHORT getMSW(VOID); +extern USHORT getSTATUS(VOID); + +extern VOID setEAX(ULONG); +extern VOID setAX(USHORT); +extern VOID setAH(UCHAR); +extern VOID setAL(UCHAR); +extern VOID setEBX(ULONG); +extern VOID setBX(USHORT); +extern VOID setBH(UCHAR); +extern VOID setBL(UCHAR); +extern VOID setECX(ULONG); +extern VOID setCX(USHORT); +extern VOID setCH(UCHAR); +extern VOID setCL(UCHAR); +extern VOID setEDX(ULONG); +extern VOID setDX(USHORT); +extern VOID setDH(UCHAR); +extern VOID setDL(UCHAR); +extern VOID setESP(ULONG); +extern VOID setSP(USHORT); +extern VOID setEBP(ULONG); +extern VOID setBP(USHORT); +extern VOID setESI(ULONG); +extern VOID setSI(USHORT); +extern VOID setEDI(ULONG); +extern VOID setDI(USHORT); +extern VOID setEIP(ULONG); +extern VOID setIP(USHORT); +extern VOID setCS(USHORT); +extern VOID setSS(USHORT); +extern VOID setDS(USHORT); +extern VOID setES(USHORT); +extern VOID setFS(USHORT); +extern VOID setGS(USHORT); +extern VOID setCF(ULONG); +extern VOID setPF(ULONG); +extern VOID setAF(ULONG); +extern VOID setZF(ULONG); +extern VOID setSF(ULONG); +extern VOID setIF(ULONG); +extern VOID setDF(ULONG); +extern VOID setOF(ULONG); +extern VOID setMSW(USHORT); +extern VOID setSTATUS(USHORT); +#endif + +// +// Sim32 macros +// + +// no action is required for this macro. +#define Sim32FlushVDMPointer( address, size, buffer, mode ) TRUE + +// no action is required for this macro. +#define Sim32FreeVDMPointer( address, size, buffer, mode) TRUE + +#define Sim32GetVDMMemory( address, size, buffer, mode) (memcpy( \ + buffer, Sim32pGetVDMPointer(address, mode), size), TRUE) + +#define Sim32SetVDMMemory( address, size, buffer, mode) (memcpy( \ + Sim32pGetVDMPointer(address, mode), buffer, size), TRUE) + +// Address conversion macros + +#define RMOFF(address) (WORD)((ULONG)address & 0x0000FFFF) +#define RMSEG(address) (WORD)(((ULONG)address - ((ULONG)address & 0x0000FFFF)) >> 4) +#define RMSEGOFFTOLIN(seg, off) (PVOID)(IntelBase + ((ULONG)(seg) << 4) + (ULONG)(off)) + +// Debugging Macros + +#define VDprint(value, arg) { if (value <= (VdmDebugLevel & VDP_LEVEL_MASK)) {\ + DbgPrint arg ; }} + +#define VDbreak(value) { if (value <= (VDB_LEVEL_MASK & VdmDebugLevel)) {\ + DbgBreakPoint(); }} + +#define VDP_LEVEL_MASK 0x0F +#define VDP_LEVEL_NONE 0x0 +#define VDP_LEVEL_ERROR 0x2 +#define VDP_LEVEL_WARNING 0x4 +#define VDP_LEVEL_INFO 0x8 + +#define VDB_LEVEL_MASK 0xF0 +#define VDB_LEVEL_NONE 0x00 +#define VDB_LEVEL_ERROR 0x20 +#define VDB_LEVEL_WARNING 0x40 +#define VDB_LEVEL_INFO 0x80 + +// +// Function prototypes +// + +ULONG +DbgPrint( + PCH Format, + ... + ); + +char *nt_fgets(char *buffer, int len, void *input_stream); +char *nt_gets(char *buffer); + + +#define GetVDMAddr(usSeg,usOff) (((ULONG)usSeg << 4) + usOff) + +PX86CONTEXT getIntelRegistersPointer(VOID); + +#else + +/*********************** FOR MIPS BUILD ***************************/ + + +#define GetVDMAddr(usSeg,usOff) Sim32pGetVDMPointer((ULONG)(((ULONG)usSeg << 16) | usOff),FALSE) + +#define RMSEGOFFTOLIN(seg, off) (PVOID)(((ULONG)(seg) << 4) + (ULONG)(off)) + +extern BOOL Sim32FlushVDMPointer (ULONG, USHORT, PBYTE , BOOL); +extern BOOL Sim32FreeVDMPointer (ULONG, USHORT, PBYTE , BOOL); +extern BOOL Sim32GetVDMMemory (ULONG, USHORT, PBYTE , BOOL); +extern BOOL Sim32SetVDMMemory (ULONG, USHORT, PBYTE , BOOL); +extern VOID sas_overwrite_memory(PBYTE, ULONG); + +extern UCHAR getAL(VOID); +extern UCHAR getCL(VOID); +extern UCHAR getDL(VOID); +extern UCHAR getBL(VOID); +extern UCHAR getAH(VOID); +extern UCHAR getCH(VOID); +extern UCHAR getDH(VOID); +extern UCHAR getBH(VOID); + +extern VOID setAL(UCHAR val); +extern VOID setCL(UCHAR val); +extern VOID setDL(UCHAR val); +extern VOID setBL(UCHAR val); +extern VOID setAH(UCHAR val); +extern VOID setCH(UCHAR val); +extern VOID setDH(UCHAR val); +extern VOID setBH(UCHAR val); + +extern USHORT getAX(VOID); +extern USHORT getCX(VOID); +extern USHORT getDX(VOID); +extern USHORT getBX(VOID); +extern USHORT getSP(VOID); +extern USHORT getBP(VOID); +extern USHORT getSI(VOID); +extern USHORT getDI(VOID); +extern USHORT getIP(VOID); + +extern VOID setAX(USHORT val); +extern VOID setCX(USHORT val); +extern VOID setDX(USHORT val); +extern VOID setBX(USHORT val); +extern VOID setSP(USHORT val); +extern VOID setBP(USHORT val); +extern VOID setSI(USHORT val); +extern VOID setDI(USHORT val); +extern VOID setIP(USHORT val); + +extern ULONG getEAX(VOID); +extern ULONG getECX(VOID); +extern ULONG getEDX(VOID); +extern ULONG getEBX(VOID); +extern ULONG getESP(VOID); +extern ULONG getEBP(VOID); +extern ULONG getESI(VOID); +extern ULONG getEDI(VOID); +extern ULONG getEIP(VOID); + +extern VOID setEAX(ULONG val); +extern VOID setECX(ULONG val); +extern VOID setEDX(ULONG val); +extern VOID setEBX(ULONG val); +extern VOID setESP(ULONG val); +extern VOID setEBP(ULONG val); +extern VOID setESI(ULONG val); +extern VOID setEDI(ULONG val); +extern VOID setEIP(ULONG val); + +extern USHORT getES(VOID); +extern USHORT getCS(VOID); +extern USHORT getSS(VOID); +extern USHORT getDS(VOID); +extern USHORT getFS(VOID); +extern USHORT getGS(VOID); + +extern VOID setES(USHORT val); +extern VOID setCS(USHORT val); +extern VOID setSS(USHORT val); +extern VOID setDS(USHORT val); +extern VOID setFS(USHORT val); +extern VOID setGS(USHORT val); + +extern ULONG getAF(VOID); +extern ULONG getCF(VOID); +extern ULONG getDF(VOID); +extern ULONG getIF(VOID); +extern ULONG getOF(VOID); +extern ULONG getPF(VOID); +extern ULONG getSF(VOID); +extern ULONG getTF(VOID); +extern ULONG getZF(VOID); +extern ULONG getIOPL(VOID); +extern ULONG getNT(VOID); +extern USHORT getSTATUS(VOID); +extern ULONG getEFLAGS(VOID); +extern USHORT getMSW(VOID); + +extern VOID setAF(ULONG val); +extern VOID setCF(ULONG val); +extern VOID setDF(ULONG val); +extern VOID setIF(ULONG val); +extern VOID setOF(ULONG val); +extern VOID setPF(ULONG val); +extern VOID setSF(ULONG val); +extern VOID setTF(ULONG val); +extern VOID setZF(ULONG val); +extern VOID setIOPL(ULONG val); +extern VOID setNT(ULONG val); +extern VOID setSTATUS(USHORT val); +extern VOID setEFLAGS(ULONG val); +extern VOID setMSW(USHORT val); + +extern ULONG getCR0(VOID); +extern VOID setCR0(ULONG val); +extern ULONG getSS_AR(VOID); +extern ULONG getSS_BASE(VOID); +extern VOID setSS_BASE_LIMIT_AR(ULONG base, ULONG limit, ULONG ar); +extern VOID setCPL(ULONG val); + + +#endif diff --git a/private/mvdm/inc/suballoc.h b/private/mvdm/inc/suballoc.h new file mode 100644 index 000000000..92db161af --- /dev/null +++ b/private/mvdm/inc/suballoc.h @@ -0,0 +1,111 @@ +/*++ + +Copyright (c) 1992 Microsoft Corporation + +Module Name: + + suballoc.h + +Abstract: + + This is the public include file for the suballocation + package. + +Author: + + Dave Hastings (daveh) creation-date 25-Jan-1994 + +Revision History: + + +--*/ + +// +// Constants +// + +// +// Minimum granularity for the commit routine +// this is done as a constant rather than a parameter +// to make defining data structures easier +// +#ifdef i386 +#define COMMIT_GRANULARITY 4096 +#else +#define COMMIT_GRANULARITY 65536 +#endif + +// +// Types +// +// +// Routine for committing a specific region of of the address +// space. Although the return type is NTSTATUS, the only value +// that is checked is 0 (for STATUS_SUCCESS). If STATUS_SUCCESS +// is returned, it is assumed that the function worked. If not, +// it is assumed that it failed. No special meaning is attached to +// particular non-zero values. +// +typedef +NTSTATUS +(*PSACOMMITROUTINE)( + ULONG BaseAddress, + ULONG Size + ); + +// +// Routine for moving memory around in the address space. +// Note: This routine MUST correctly handle overlapping +// source and destination +// +typedef +VOID +(*PSAMEMORYMOVEROUTINE)( + ULONG Destination, + ULONG Source, + ULONG Size + ); + +// +// Public prototypes +// +PVOID +SAInitialize( + ULONG BaseAddress, + ULONG Size, + PSACOMMITROUTINE CommitRoutine, + PSACOMMITROUTINE DecommitRoutine, + PSAMEMORYMOVEROUTINE MemoryMoveRoutine + ); + +BOOL +SAQueryFree( + PVOID SubAllocation, + PULONG FreeBytes, + PULONG LargestFreeBlock + ); + +BOOL +SAAllocate( + PVOID SubAllocation, + ULONG Size, + PULONG Address + ); + +BOOL +SAFree( + PVOID SubAllocation, + ULONG Size, + ULONG Address + ); + +BOOL +SAReallocate( + PVOID SubAllocation, + ULONG OriginalSize, + ULONG OriginalAddress, + ULONG NewSize, + PULONG NewAddress + ); + + diff --git a/private/mvdm/inc/tdb16.h b/private/mvdm/inc/tdb16.h new file mode 100644 index 000000000..d841f8719 --- /dev/null +++ b/private/mvdm/inc/tdb16.h @@ -0,0 +1,107 @@ +/*++ BUILD Version: 0001 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * TDB.H + * 16-bit Kernel Task Data Block + * + * History: + * Created 11-Feb-1992 by Matt Felton (mattfe) - from 16 bit tdb.inc + * 7-apr-1992 mattfe updated to be win 3.1 compatible + * +--*/ + +/* + * NewExeHdr struct offsets. WOW32 uses these for getting expected winversion + * directly from the exehdr. + * + */ + +#define NE_LOWINVER_OFFSET 0x3e +#define NE_HIWINVER_OFFSET 0x0c +#define FLAG_NE_PROPFONT 0x2000 + +/* + * Task Data Block - 16 Bit Kernel Data Structure + * + * Contains all 16 bit task specific data. + * + */ + +#define numTaskInts 7 +#define THUNKELEM 8 // (62*8) = 512-16 (low arena overhead) +#define THUNKSIZE 8 + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +typedef struct TDB { /* tdb16 */ + + WORD TDB_next ; // next task in dispatch queue + WORD TDB_taskSP ; // Saved SS:SP for this task + WORD TDB_taskSS ; // + WORD TDB_nEvents ; // Task event counter + BYTE TDB_priority ; // Task priority (0 is highest) + BYTE TDB_thread_ordinal ; // ordinal number of this thread + WORD TDB_thread_next ; // next thread + WORD TDB_thread_tdb ; // the real TDB for this task + WORD TDB_thread_list ; // list of allocated thread structures + WORD TDB_thread_free ; // free list of availble thread structures + WORD TDB_thread_count ; // total count of tread structures + WORD TDB_FCW ; // Floating point control word + BYTE TDB_flags ; // Task flags + BYTE TDB_filler ; // keep word aligned + WORD TDB_ErrMode ; // Error mode for this task + WORD TDB_ExpWinVer ; // Expected Windows version for this task + WORD TDB_Module ; // Task module handle to free in killtask + WORD TDB_pModule ; // Pointer to the module database. + WORD TDB_Queue ; // Task Event Queue pointer + WORD TDB_Parent ; // TDB of the task that started this up + WORD TDB_SigAction ; // Action for app task signal + DWORD TDB_ASignalProc ; // App's Task Signal procedure address + DWORD TDB_USignalProc ; // User's Task Signal procedure address + DWORD TDB_GNotifyProc ; // Task global discard notify proc. + DWORD TDB_INTVECS[numTaskInts] ; // Task specfic harare interrupts + WORD TDB_CompatFlags ; // Compatibility flags + WORD TDB_CompatFlags2 ; // Upper 16 bits + WORD TDB_CompatHandle ; // for dBase bug + WORD TDB_WOWCompatFlagsEx ; // More WOW Compatibility flags + WORD TDB_WOWCompatFlagsEx2 ; // Upper 16 bits + BYTE TDB_Free[3] ; // Filler to keep TDB size unchanged + BYTE TDB_cLibrary ; // tracks add/del of ALL libs in system EMS + DWORD TDB_PHT ; // (HANDLE:OFFSET) to private handle table + WORD TDB_PDB ; // MSDOS Process Data Block (PDB) + DWORD TDB_DTA ; // MSDOS Disk Transfer Address + BYTE TDB_Drive ; // MSDOS current drive + BYTE TDB_Directory[65] ; // *** not used starting with win95 + WORD TDB_Validity ; // initial AX to be passed to a task + WORD TDB_Yield_to ; // DirectedYield arg stored here + WORD TDB_LibInitSeg ; // segment address of libraries to init + WORD TDB_LibInitOff ; // MakeProcInstance thunks live here. + WORD TDB_MPI_Sel ; // Code selector for thunks + WORD TDB_MPI_Thunks[((THUNKELEM*THUNKSIZE)/2)]; // + BYTE TDB_ModName[8] ; // Name of Module. + WORD TDB_sig ; // Signature word to detect bogus code + DWORD TDB_ThreadID ; // 32-Bit Thread ID for this Task (use TDB_Filler Above) + DWORD TDB_hThread ; // 32-bit Thread Handle for this task + WORD TDB_WOWCompatFlags; // WOW Compatibility flags + WORD TDB_WOWCompatFlags2; // WOW Compatibility flags + DWORD TDB_vpfnAbortProc; // printer AbortProc + BYTE TDB_LFNDirectory[260]; // Long directory name + +} TDB; +typedef TDB UNALIGNED *PTDB; + +// This bit is defined for the TDB_Drive field +#define TDB_DIR_VALID 0x80 +#define TDB_SIGNATURE 0x4454 + + +// NOTE TDB_ThreadID MUST be DWORD aligned or else it will fail on MIPS + +/* XLATOFF */ +#pragma pack() +/* XLATON */ diff --git a/private/mvdm/inc/v86def.h b/private/mvdm/inc/v86def.h new file mode 100644 index 000000000..3b31b497c --- /dev/null +++ b/private/mvdm/inc/v86def.h @@ -0,0 +1,29 @@ +/*++ BUILD Version: 0001 + +Copyright (c) 1990 Microsoft Corporation + +Module Name: + + V86PC.H + +Abstract: + + This file contains macros, function prototypes, and externs for the + v86-mode NT version of SoftPC v3.0. + +Author: + + Dave Hastings (daveh) 4-11-91 + +Revision History: + + Jeff Parsons (jeffpar) 14-May-1991 + Added X86CONTEXT, which is identical to CONTEXT when running on an + x86 platform. + +--*/ + + +// Define X86CONTEXT structure + +typedef CONTEXT X86CONTEXT, *PX86CONTEXT; diff --git a/private/mvdm/inc/vdmredir.h b/private/mvdm/inc/vdmredir.h new file mode 100644 index 000000000..f10a83d4e --- /dev/null +++ b/private/mvdm/inc/vdmredir.h @@ -0,0 +1,439 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + vdmredir.h + +Abstract: + + Contains common defines, structures, macros, etc. for VdmRedir. This file + contains macros to read and write the 3 basic data structures from/to VDM + memory. We *must* use these macros because the MIPS processor does not like + unaligned data: a DWORD must be read/written on a DWORD boundary (low two + bits in address = 00), a WORD must be read/written on a WORD boundary (low + two bits in address = X0) and a BYTE can be read/written to any address (low + two bits in address = XX). It is illegal to access a WORD at an address + whose LSB is not 0, and a DWORD at an address whose 2 least significant bits + are not both 0. Dos programs don't care much about alignment (smart ones do + because there is a performance penalty for unaligned data on x86, but it + still works). So we have to assume the worst case for MIPS and break down + the read/writes of WORDs and DWORDs in VDM memory into BYTE read/writes + + In order to improve efficiency of load/store to potentially unaligned + addresses, the following data pointer types are made available from this + include file: + + ULPBYTE - unaligned byte pointer (same as LPBYTE) + ULPWORD - unaligned word pointer + ULPDWORD - unaligned dword pointer + + NB. Dependent upon mvdm.h + +Author: + + Richard L Firth (rfirth) 16-Sep-1991 + +Revision History: + + 16-Sep-1991 rfirth + Created + +--*/ + +#ifndef _VDMREDIR_ +#define _VDMREDIR_ + +#include <softpc.h> + +// +// PRIVATE - make a routine/data type inaccessible outside current module, but +// only if not DEBUG version +// + +#if DBG +#define PRIVATE +#else +#define PRIVATE static +#endif + +// +// unaligned data pointer types. These produce exactly the same code as memory +// accesses through 'aligned' pointers on x86, but generate code specific to +// unaligned read/writes on MIPS (& other RISCs) +// + +#ifdef UNALIGNED_VDM_POINTERS +typedef BYTE UNALIGNED * ULPBYTE; +typedef WORD UNALIGNED * ULPWORD; +typedef DWORD UNALIGNED * ULPDWORD; +#else +typedef LPBYTE ULPBYTE; +typedef LPWORD ULPWORD; +typedef LPDWORD ULPDWORD; +#endif + +// +// misc. defines +// + +#define BITS_IN_A_BYTE 8 +#define LOCAL_DEVICE_PREFIX "\\\\." + +// +// Define network interrupt to be on Irql 14. +// If NETWORK_ICA changes to ICA_MASTER then vrnetb.c should only execute 1 eoi +// If either change then NETWORK_INTERRUPT in int5c.inc must also change. +// + +#define NETWORK_ICA ICA_SLAVE +#define NETWORK_LINE 6 + +// +// helper macros +// + +// +// MAKE_DWORD - converts 2 16-bit words into a 32-bit double word +// +#define MAKE_DWORD(h, l) ((DWORD)(((DWORD)((WORD)(h)) << 16) | (DWORD)((WORD)(l)))) + +// +// DWORD_FROM_WORDS - converts two 16-bit words into a 32-bit dword +// +#define DWORD_FROM_WORDS(h, l) MAKE_DWORD((h), (l)) + +// +// HANDLE_FROM_WORDS - converts a pair of 16-bit words into a 32-bit handle +// +#define HANDLE_FROM_WORDS(h, l) ((HANDLE)(MAKE_DWORD((h), (l)))) + +// +// POINTER_FROM_WORDS - returns a flat 32-bit VOID pointer (in the VDM) OR the +// NULL macro, given the 16-bit real-mode segment & offset. On x86 this will +// return 0 if we pass in 0:0 because all GetVDMAddr does is seg << 4 + off. +// The MIPS version adds this to the start of the virtual DOS memory. The +// problem arises when we have a NULL pointer, and want to keep it NULL - we +// convert it to non-NULL on not x86 +// +//#define POINTER_FROM_WORDS(seg, off) ((LPVOID)GetVDMAddr((seg), (off))) +//#define POINTER_FROM_WORDS(seg, off) (((((DWORD)(seg)) << 16) | (off)) ? ((LPVOID)GetVDMAddr((seg), (off))) : ((LPVOID)0)) + +#define POINTER_FROM_WORDS(seg, off) _inlinePointerFromWords((WORD)(seg), (WORD)(off)) + +// +// LPSTR_FROM_WORDS - returns a 32-bit pointer to an ASCIZ string given the +// 16-bit real-mode segment & offset +// +#define LPSTR_FROM_WORDS(seg, off) ((LPSTR)POINTER_FROM_WORDS((seg), (off))) + +// +// LPBYTE_FROM_WORDS - returns a 32-bit byte pointer given the 16-bit +// real-mode segment & offset +// +#define LPBYTE_FROM_WORDS(seg, off) ((LPBYTE)POINTER_FROM_WORDS((seg), (off))) + +// +// READ_FAR_POINTER - read the pair of words in VDM memory, currently pointed at +// by a 32-bit flat pointer and convert them to a 32-bit flat pointer +// +#define READ_FAR_POINTER(addr) ((LPVOID)(POINTER_FROM_WORDS(GET_SELECTOR(addr), GET_OFFSET(addr)))) + +// +// READ_BYTE - retrieve a single byte from VDM memory. Both x86 and MIPS can +// handle reading a single byte without pain +// +#define READ_BYTE(addr) (*((LPBYTE)(addr))) + +// +// READ_WORD - read a single 16-bit little-endian word from VDM memory. x86 can +// handle unaligned data, MIPS (&other RISCs) must be broken down into individual +// BYTE reads & the WORD pieced together by shifting & oring. If we are using +// UNALIGNED pointers then the RISC processor can handle non-aligned data +// +#ifdef i386 +#define READ_WORD(addr) (*((LPWORD)(addr))) +#else +#ifdef UNALIGNED_VDM_POINTERS +#define READ_WORD(addr) (*((ULPWORD)(addr))) +#else +#define READ_WORD(addr) (((WORD)READ_BYTE(addr)) | (((WORD)READ_BYTE((LPBYTE)(addr)+1)) << 8)) +#endif // UNALIGNED_VDM_POINTERS +#endif // i386 + +// +// READ_DWORD - read a 4-byte little-endian double word from VDM memory. x86 can +// handle unaligned data, MIPS (&other RISCs) must be broken down into individual +// BYTE reads & the DWORD pieced together by shifting & oring. If we are using +// UNALIGNED pointers then the RISC processor can handle non-aligned data +// +#ifdef i386 +#define READ_DWORD(addr) (*((LPDWORD)(addr))) +#else +#ifdef UNALIGNED_VDM_POINTERS +#define READ_DWORD(addr) (*((ULPDWORD)(addr))) +#else +#define READ_DWORD(addr) (((DWORD)READ_WORD(addr)) | (((DWORD)READ_WORD((LPWORD)(addr)+1)) << 16)) +#endif // UNALIGNED_VDM_POINTERS +#endif // i386 + +// +// WRITE_BYTE - write a single byte in VDM memory. Both x86 and MIPS (RISC) can +// write a single byte to a non-aligned address +// +#define WRITE_BYTE(addr, value) (*(LPBYTE)(addr) = (BYTE)(value)) + +// +// WRITE_WORD - write a 16-bit little-endian value into VDM memory. x86 can write +// WORD data to non-word-aligned address; MIPS (& other RISCs) cannot, so we +// break down the write into 2 byte writes. If we are using UNALIGNED pointers +// then the MIPS (&other RISCs) can generate code to handle this situation +// +#ifdef i386 +#define WRITE_WORD(addr, value) (*((LPWORD)(addr)) = (WORD)(value)) +#else +#ifdef UNALIGNED_VDM_POINTERS +#define WRITE_WORD(addr, value) (*((ULPWORD)(addr)) = (WORD)(value)) +#else +#define WRITE_WORD(addr, value) \ + {\ + ((LPBYTE)(addr))[0] = LOBYTE(value); \ + ((LPBYTE)(addr))[1] = HIBYTE(value); \ + } +#endif // UNALIGNED_VDM_POINTERS +#endif // i386 + +// +// WRITE_DWORD - write a 32-bit DWORD value into VDM memory. x86 can write +// DWORD data to non-dword-aligned address; MIPS (& other RISCs) cannot, so we +// break down the write into 4 byte writes. If we are using UNALIGNED pointers +// then the MIPS (&other RISCs) can generate code to handle this situation +// +#ifdef i386 +#define WRITE_DWORD(addr, value) (*((LPDWORD)(addr)) = (DWORD)(value)) +#else +#ifdef UNALIGNED_VDM_POINTERS +#define WRITE_DWORD(addr, value) (*((ULPDWORD)(addr)) = (DWORD)(value)) +#else +#define WRITE_DWORD(addr, value) \ + { \ + ((LPBYTE)(addr))[0] = LOBYTE(LOWORD((DWORD)(value))); \ + ((LPBYTE)(addr))[1] = HIBYTE(LOWORD((DWORD)(value))); \ + ((LPBYTE)(addr))[2] = LOBYTE(HIWORD((DWORD)(value))); \ + ((LPBYTE)(addr))[3] = HIBYTE(HIWORD((DWORD)(value))); \ + } +#endif // UNALIGNED_VDM_POINTERS +#endif // i386 + +// +// WRITE_FAR_POINTER - write a 16:16 pointer into VDM memory. This is the same +// as writing a DWORD +// +#define WRITE_FAR_POINTER(addr, ptr) WRITE_DWORD((addr), (DWORD)(ptr)) + +// +// GET_SELECTOR - retrieves the selector word from the intel 32-bit far pointer +// (DWORD) pointed at by <pointer> (remember: stored as offset, segment) +// +#define GET_SELECTOR(pointer) READ_WORD((LPWORD)(pointer)+1) + +// +// GET_SEGMENT - same as GET_SELECTOR +// +#define GET_SEGMENT(pointer) GET_SELECTOR(pointer) + +// +// GET_OFFSET - retrieves the offset word from an intel 32-bit far pointer +// (DWORD) pointed at by <pointer> (remember: stored as offset, segment) +// +#define GET_OFFSET(pointer) READ_WORD((LPWORD)(pointer)) + +// +// SET_SELECTOR - writes a word into the segment word of a real-mode far pointer +// (DWORD) pointed at by <pointer> (remember: stored as offset, segment) +// +#define SET_SELECTOR(pointer, word) WRITE_WORD(((LPWORD)(pointer)+1), (word)) + +// +// SET_SEGMENT - same as SET_SELECTOR +// +#define SET_SEGMENT(pointer, word) SET_SELECTOR(pointer, word) + +// +// SET_OFFSET - writes a word into the offset word of a real-mode far pointer +// (DWORD) pointed at by <pointer> (remember: stored as offset, segment) +// +#define SET_OFFSET(pointer, word) WRITE_WORD((LPWORD)(pointer), (word)) + +// +// POINTER_FROM_POINTER - read a segmented pointer in the VDM from an address +// pointed at by a flat 32-bit pointer. Convert the segmented pointer to a +// flat pointer. SAME AS READ_FAR_POINTER +// +#define POINTER_FROM_POINTER(pointer) POINTER_FROM_WORDS(GET_SELECTOR(pointer), GET_OFFSET(pointer)) + +// +// LPSTR_FROM_POINTER - perform a POINTER_FROM_POINTER, casting the result to +// a string pointer. SAME AS READ_FAR_POINTER +// +#define LPSTR_FROM_POINTER(pointer) ((LPSTR)POINTER_FROM_POINTER(pointer)) + +// +// LPBYTE_FROM_POINTER - perform a POINTER_FROM_POINTER, casting the result to +// a byte pointer. SAME AS READ_FAR_POINTER +// +#define LPBYTE_FROM_POINTER(pointer) ((LPBYTE)POINTER_FROM_POINTER(pointer)) + +// +// SET_ERROR - sets the caller's AX register in the VDM context descriptor to +// the value given and sets the caller's VDM carry flag +// +#define SET_ERROR(err) {setAX(err); setCF(1);} + +// +// SET_SUCCESS - sets the VDM caller's AX register to NERR_Success and clears +// the carry flag +// +#define SET_SUCCESS() {setAX(NERR_Success); setCF(0);} + +// +// SET_OK - an explicit version of SET_SUCCESS wherein NERR_Success would be +// an inappropriate error, although the right value +// +#define SET_OK(value) {setAX(value); setCF(0);} + + + +// +// Miscellaneous macros for working out sizes of things +// + +// +// ARRAY_ELEMENTS - gives the number of elements of a particular type in an +// array +// + +#define ARRAY_ELEMENTS(a) (sizeof(a)/sizeof((a)[0])) + +// +// LAST_ELEMENT - returns the index of the last element in array +// + +#define LAST_ELEMENT(a) (ARRAY_ELEMENTS(a)-1) + +// +// BITSIN - returns the number of bits in a data type or structure. This is +// predicated upon the number of bits in a byte being 8 and all data types +// being composed of a collection of bytes (safe assumption?) +// +#define BITSIN(thing) (sizeof(thing) * BITS_IN_A_BYTE) + +// +// Miscellaneous other macros +// + +// +// IS_ASCII_PATH_SEPARATOR - returns TRUE if ch is / or \. ch is a single +// byte (ASCII) character +// +#define IS_ASCII_PATH_SEPARATOR(ch) (((ch) == '/') || ((ch) == '\\')) + +// +// macros for setting CF and ZF flags for return from hardware interrupt +// callback +// + +#define SET_CALLBACK_NOTHING() {setZF(0); setCF(0);} +#define SET_CALLBACK_NAMEPIPE() {setZF(0); setCF(1);} +#define SET_CALLBACK_DLC() {setZF(1); setCF(0);} +#define SET_CALLBACK_NETBIOS() {setZF(1); setCF(1);} + +// +// DLC-specific macros etc. +// + +extern LPVDM_REDIR_DOS_WINDOW lpVdmWindow; + +// +// setPostRoutine - if dw is not 0 then we write the (DOS segmented) address of +// the post routine into the dwPostRoutine field of the VDM_REDIR_DOS_WINDOW +// structure passed to us at redir DLC initialization. We also set the flags +// to indicate to the redir's hardware interrupt routine there is a DLC post +// routine to run. If dw is 0 then we set the flags to indicate that there is +// no post routine processing +// +#define setPostRoutine( dw ) if (dw) {\ + (lpVdmWindow->dwPostRoutine = (DWORD)(dw));\ + SET_CALLBACK_DLC();\ + } else {\ + SET_CALLBACK_NOTHING();\ + } + +// +// VR_ASYNC_DISPOSITION - we maintain a serialized list of these structures. +// Used to dispose of VDM redir asynchronous completions in the order in which +// they occurred +// + +typedef struct _VR_ASYNC_DISPOSITION { + + // + // Next - maintains a singly-linked list of dispositions + // + + struct _VR_ASYNC_DISPOSITION* Next; + + // + // AsyncDispositionRoutine - pointer to VOID function taking no args which + // will dispose of the next asynchronous completion - Netbios, named pipe + // or DLC + // + + VOID (*AsyncDispositionRoutine)(VOID); +} VR_ASYNC_DISPOSITION, *PVR_ASYNC_DISPOSITION; + +// +// _inlinePointerFromWords - the POINTER_FROM_WORDS macro is inefficient if the +// arguments are calls to eg. getES(), getBX() - the calls are made twice if +// the pointer turns out to be non-zero. Use an inline function to achieve the +// same results, but only call function arguments once +// + +#ifdef i386 + +__inline LPVOID _inlinePointerFromWords(WORD seg, WORD off) { + + WORD _seg = seg; + WORD _off = off; + + return (_seg + _off) ? (LPVOID)GetVDMAddr(_seg, _off) : 0; +} + +#else +LPVOID _inlinePointerFromWords(WORD seg, WORD off); +#endif + +// +// CONVERT_ADDRESS - convert a segmented (real or protect-mode) address to a +// flat 32-bit address +// + +//#define CONVERT_ADDRESS(seg, off, size, mode) !((WORD)(seg) | (WORD)(off)) ? 0 : Sim32GetVDMPointer((((DWORD)seg) << 16) + (DWORD)(off), (size), (mode)) +#define CONVERT_ADDRESS(seg, off, size, mode) _inlineConvertAddress((WORD)(seg), (WORD)(off), (WORD)(size), (BOOLEAN)(mode)) + +#ifdef i386 + +__inline LPVOID _inlineConvertAddress(WORD Seg, WORD Off, WORD Size, BOOLEAN Pm) { + + WORD _seg = Seg; + WORD _off = Off; + + return (_seg | _off) ? Sim32GetVDMPointer(((DWORD)_seg << 16) + _off, Size, Pm) : 0; +} + +#else +extern LPVOID _inlineConvertAddress(WORD Seg, WORD Off, WORD Size, BOOLEAN Pm); +#endif + +#endif // _VDMREDIR_ diff --git a/private/mvdm/inc/vdmtb.inc b/private/mvdm/inc/vdmtb.inc new file mode 100644 index 000000000..371419641 --- /dev/null +++ b/private/mvdm/inc/vdmtb.inc @@ -0,0 +1,104 @@ +; +; Location in dos area where Vdm state is maintianed +; +FIXED_NTVDMSTATE_LINEAR equ 0714H +; +; Prefix flags for instruction emulation +; +PREFIX_ES equ 01H +PREFIX_CS equ 02H +PREFIX_SS equ 04H +PREFIX_DS equ 08H +PREFIX_FS equ 010H +PREFIX_GS equ 020H +PREFIX_OPER32 equ 040H +PREFIX_ADDR32 equ 080H +PREFIX_LOCK equ 0100H +PREFIX_REPNE equ 0200H +PREFIX_REP equ 0400H +PREFIX_SEG_ALL equ 03FH +NUM_OPCODE equ 0FFH +; +; VdmFlags +; +VDM_INTERRUPT_PENDING equ 03H +VDM_BREAK_EXCEPTIONS equ 08H +VDM_BREAK_DEBUGGER equ 010H +VDM_VIRTUAL_INTERRUPTS equ 0200H +VDM_VIRTUAL_AC equ 040000H +VDM_VIRTUAL_NT equ 04000H +MIPS_BIT_MASK equ 0400H +VDM_INT_HARDWARE equ 01H +VDM_INT_TIMER equ 02H +VDM_WOWBLOCKED equ 0100000H +VDM_IDLEACTIVITY equ 0200000H +; +; Interrupt handler flags +; +VDM_INT_INT_GATE equ 01H +VDM_INT_TRAP_GATE equ 00H +VDM_INT_32 equ 02H +VDM_INT_16 equ 00H +; +; EFlags values +; +EFLAGS_TF_MASK equ 0100H +EFLAGS_INTERRUPT_MASK equ 0200H +EFLAGS_IOPL_MASK equ 03000H +EFLAGS_NT_MASK equ 04000H +; +; Selector Flags +; +SEL_TYPE_READ equ 01H +SEL_TYPE_WRITE equ 02H +SEL_TYPE_EXECUTE equ 04H +SEL_TYPE_BIG equ 08H +SEL_TYPE_ED equ 010H +SEL_TYPE_2GIG equ 020H +; +; VdmEvent Enumerations +; +VdmIO equ 00H +VdmStringIO equ 01H +VdmMemAccess equ 02H +VdmIntAck equ 03H +VdmBop equ 04H +VdmError equ 05H +VdmIrq13 equ 06H +VdmMaxEvent equ 07H +; +; VdmTib offsets +; +VtMonitorContext equ 0A04H +VtVdmContext equ 0AD0H +VtInterruptHandlers equ 04H +VtFaultHandlers equ 0804H +VtEventInfo equ 0B9CH +VtEIEvent equ 0BA0H +VtEIInstSize equ 0BA4H +VtEIBopNumber equ 0BA8H +VtEiIntAckInfo equ 0BA8H +EiEvent equ 04H +EiInstructionSize equ 08H +EiBopNumber equ 0CH +EiIntAckInfo equ 0CH +; +; WOW TD offsets +; +WtdFastWowEsp equ 08H +; +; VdmInterrupHandler offsets +; +ViCsSelector equ 00H +ViEip equ 04H +ViFlags equ 02H +VDM_INTERRUPT_HANDLER_SIZE equ 08H +; +; VdmFaultHandler offsets +; +VfCsSelector equ 00H +VfEip equ 04H +VfSsSelector equ 02H +VfEsp equ 08H +VfFlags equ 0CH +VDM_FAULT_HANDLER_SIZE equ 010H diff --git a/private/mvdm/inc/vdmtib.h b/private/mvdm/inc/vdmtib.h new file mode 100644 index 000000000..6fa97712d --- /dev/null +++ b/private/mvdm/inc/vdmtib.h @@ -0,0 +1,36 @@ + +/*++ + +Copyright (c) 1992 Microsoft Corporation + +Module Name: + + vdmtib.h + +Abstract: + + This include file contains definitions, externs, and + includes necessary to access 16 bit registers in + the VdmTib + +Author: + + Dave Hastings (daveh) 12-Oct-1993 + +Revision History: + +--*/ + +#ifndef _VDMTIB_H_ +#define _VDMTIB_H_ + + +// +// Definition of the VdmTib +// +#include "\nt\private\inc\vdm.h" + + +extern VDM_TIB VdmTib; +#endif + diff --git a/private/mvdm/inc/vint.h b/private/mvdm/inc/vint.h new file mode 100644 index 000000000..460374aee --- /dev/null +++ b/private/mvdm/inc/vint.h @@ -0,0 +1,177 @@ +/*++ BUILD Version: 0001 + +Copyright (c) 1990 Microsoft Corporation + +Module Name: + + VINT.H + +Abstract: + + This module contains macro support for manipulating virtual + interrupt bit from v86 mode and 16bit protect mode. FCLI/FST/FIRET + result in exact behavior of these instructions on the chip without + trapping. + +Author: + + Sudeepb 08-Dec-1992 Created + +Revision History: + sudeepb 16-Mar-1993 added FIRET + +--*/ + +/* +See \nt\private\inc\vdm.h for a complete list +of the NTVDM state flag bit definitions + +INTERRUPT_PENDING_BIT - set if interrupts pending +VIRTUAL_INTERRUPT_BIT - This bit always correctly reflects the interrupt + disbale/enable state of the vDM while in 16bit land. + +MIPS_BIT_MASK - tells whether VDM is running on x86/mips +EXEC_BIT_MASK - tells if DOS is in int21/exec operation. +*/ + +#define INTERRUPT_PENDING_BIT 0x0003 +#define VIRTUAL_INTERRUPT_BIT 0x0200 + +#define MIPS_BIT_MASK 0x400 +#define EXEC_BIT_MASK 0x800 +#define RM_BIT_MASK 0x1000 +#define RI_BIT_MASK 0x2000 + +#define FIXED_NTVDMSTATE_SEGMENT 0x70 +#define FIXED_NTVDMSTATE_OFFSET 0x14 +#define FIXED_NTVDMSTATE_LINEAR ((FIXED_NTVDMSTATE_SEGMENT << 4) + FIXED_NTVDMSTATE_OFFSET) +#define FIXED_NTVDMSTATE_REL40 0x314 + +#define FIXED_NTVDMSTATE_SIZE 4 +#define NTIO_LOAD_SEGMENT 0x70 +#define NTIO_LOAD_OFFSET 0 +#define pNtVDMState ((PULONG)FIXED_NTVDMSTATE_LINEAR) + +#define VDM_TIMECHANGE 0x00400000 + +/* ASM +; FCLI macro should be used in v86mode/16bit preotect mode code to replace +; costly cli's. Please note that this macro could destroy the Overflow +; bit in the flag. + +FCLI macro + local a,b,c + push ds + push ax + mov ax,40h + mov ds,ax + lahf + test word ptr ds:FIXED_NTVDMSTATE_REL40, MIPS_BIT_MASK OR RI_BIT_MASK + jnz short b + lock and word ptr ds:FIXED_NTVDMSTATE_REL40,NOT VIRTUAL_INTERRUPT_BIT +a: + sahf + pop ax + pop ds + jmp short c +b: + cli + jmp short a +c: +endm + +; +; FSTI macro should be used in v86mode or 16bit protectmode code to replace +; costly sti's. Please note that this macro could destroy the Overflow bit +; in the flag. + +FSTI macro + local a,b,c + push ds + push ax + mov ax,40h + mov ds,ax + lahf + test word ptr ds:FIXED_NTVDMSTATE_REL40, INTERRUPT_PENDING_BIT + jnz short b + test word ptr ds:FIXED_NTVDMSTATE_REL40, MIPS_BIT_MASK OR RI_BIT_MASK + jnz short b + lock or word ptr ds:FIXED_NTVDMSTATE_REL40, VIRTUAL_INTERRUPT_BIT +a: + sahf + pop ax + pop ds + jmp short c +b: + sti + jmp short a +c: +endm + +FIRET MACRO + local a,b,d,e,f,g,i,j,k + push ds + push ax + +;; Do real IRET on MIPS or if interrupts are pending + + mov ax,40h + mov ds,ax + test word ptr ds:FIXED_NTVDMSTATE_REL40, MIPS_BIT_MASK OR RI_BIT_MASK + jnz short b + +;; running on x86 can assume 386 or above instructions + push bp + mov bp,sp + mov ax,[bp+10] ; get flags + pop bp + test ax,100h ; test if trap flag is set + jnz short b ; if so, do iret + + test ax,200h ; test if interrupt flag is set + jz short i ; ZR -> flag image has IF not set + lock or word ptr ds:FIXED_NTVDMSTATE_REL40, VIRTUAL_INTERRUPT_BIT + test word ptr ds:FIXED_NTVDMSTATE_REL40, INTERRUPT_PENDING_BIT + jnz short b +j: + xchg ah,al ; AH=low byte AL=high byte + cld + test al,4 ; check direction flag + jnz short d ; +e: + test al,8 ; check overflow flag + jnz short f ; go to f if flag image has OF set + jo short k ; go to k to reset OF +g: + sahf ; set low byte of flags from ah + pop ax + pop ds + retf 2 ; IRET and discard flags +i: + lock and word ptr ds:FIXED_NTVDMSTATE_REL40,NOT VIRTUAL_INTERRUPT_BIT + jmp short j +f: + jo short g ; all OK if OF bit set in real flag + ; set the overflow bit in real flag + push ax + mov al,127 + add al,2 ; will set OF + pop ax + jmp short g + +k: + ; reset the OF + push ax + xor al,al ; will reset OF + pop ax + jmp short g +d: + std + jmp short e +b: + pop ax + pop ds + iret +endm + + */ diff --git a/private/mvdm/inc/vrdefld.h b/private/mvdm/inc/vrdefld.h new file mode 100644 index 000000000..63758be38 --- /dev/null +++ b/private/mvdm/inc/vrdefld.h @@ -0,0 +1,32 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + vrdefld.h + +Abstract: + + Contains offsets in VDM redir code segment for deferred load address info + +Author: + + Richard L Firth (rfirth) 21-Oct-1992 + +Revision History: + +--*/ + +/* XLATOFF */ +#include <packon.h> +/* XLATON */ + +typedef struct _VDM_LOAD_INFO { /* */ + DWORD DlcWindowAddr; + BYTE VrInitialized; +} VDM_LOAD_INFO; + +/* XLATOFF */ +#include <packoff.h> +/* XLATON */ diff --git a/private/mvdm/inc/vrdlctab.h b/private/mvdm/inc/vrdlctab.h new file mode 100644 index 000000000..7d3b359c2 --- /dev/null +++ b/private/mvdm/inc/vrdlctab.h @@ -0,0 +1,146 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + vrdlctab.h + +Abstract: + + Contains structures which are shared between the VDM code and the DOS + redir code. Separated from VDMREDIR.H + +Author: + + Richard L Firth (rfirth) 13-May-1992 + +Revision History: + +--*/ + +// +// manifests +// + +#define DOS_DLC_STATUS_PERM_SLOTS 10 +#define DOS_DLC_STATUS_TEMP_SLOTS 5 +#define DOS_DLC_MAX_ADAPTERS 2 + +// +// EXTENDED_STATUS_PARMS - there is one of these per adapter +// + +/* XLATOFF */ +#pragma pack(1) +/* XLATON */ + +typedef struct _EXTENDED_STATUS_PARMS { /* */ + BYTE cbSize; + BYTE cbPageFrameSize; + WORD wAdapterType; + WORD wCurrentFrameSize; + WORD wMaxFrameSize; +} EXTENDED_STATUS_PARMS; + +typedef EXTENDED_STATUS_PARMS UNALIGNED * PEXTENDED_STATUS_PARMS; + +// +// DOS_DLC_STATUS - there is one of these for each of the permanent and temporary +// connections +// + +typedef struct _DOS_DLC_STATUS { /* */ + WORD usStationId; + WORD usDlcStatusCode; + BYTE uchFrmrData[5]; + BYTE uchAccessPriority; + BYTE uchRemoteNodeAddress[6]; + BYTE uchRemoteSap; + BYTE auchReserved[3]; +} DOS_DLC_STATUS; + +typedef DOS_DLC_STATUS UNALIGNED * PDOS_DLC_STATUS; + +// +// ADAPTER_STATUS_PARMS - In real DOS workstation, this is maintained by the +// adapter software, but is made available to applications through DIR.STATUS. +// Token Ring and Ethernet adapter have different adapter status parameters +// +// Note: some fields prefixed by Tr or Eth because the moronic x86 assembler +// can't handle the same field name in different structures +// + +typedef struct _TOKEN_RING_ADAPTER_STATUS_PARMS { /* */ + DWORD PhysicalAddress; + BYTE UpstreamNodeAddress[6]; + DWORD UpstreamPhysicalAddress; + BYTE LastPollAddress[6]; + WORD AuthorizedEnvironment; + WORD TransmitAccessPriority; + WORD SourceClassAuthorization; + WORD LastAttentionCode; + BYTE TrLastSourceAddress[6]; + WORD LastBeaconType; + WORD TrLastMajorVector; + WORD TrNetworkStatus; + WORD SoftError; + WORD FrontEndErrorCount; + WORD LocalRingNumber; + WORD MonitorErrorCode; + WORD BeaconTransmitType; + WORD BeaconReceiveType; + WORD TrFrameCorrelation; + BYTE BeaconingNaun[6]; + DWORD Reserved; + DWORD BeaconingPhysicalAddress; +} TOKEN_RING_ADAPTER_STATUS_PARMS; + +typedef TOKEN_RING_ADAPTER_STATUS_PARMS UNALIGNED * PTOKEN_RING_ADAPTER_STATUS_PARMS; + +typedef struct _ETHERNET_ADAPTER_STATUS_PARMS { /* */ + BYTE Reserved1[28]; + BYTE EthLastSourceAddress[6]; + BYTE Reserved2[2]; + WORD EthLastMajorVector; + WORD EthNetworkStatus; + WORD ErrorReportTimerValue; + WORD ErrorReportTimerTickCounter; + WORD LocalBusNumber; + BYTE Reserved3[6]; + WORD EthFrameCorrelation; + BYTE Reserved4[6]; + WORD NetworkUtilizationSamples; + WORD NetworkBusySamples; + BYTE Reserved5[4]; +} ETHERNET_ADAPTER_STATUS_PARMS; + +typedef ETHERNET_ADAPTER_STATUS_PARMS UNALIGNED * PETHERNET_ADAPTER_STATUS_PARMS; + +typedef union _ADAPTER_STATUS_PARMS { /* */ + TOKEN_RING_ADAPTER_STATUS_PARMS TokenRing; + ETHERNET_ADAPTER_STATUS_PARMS Ethernet; +} ADAPTER_STATUS_PARMS; + +typedef ADAPTER_STATUS_PARMS UNALIGNED * PADAPTER_STATUS_PARMS; + +// +// VDM_REDIR_DOS_WINDOW - this structure is used by the MVDM DLC code to return +// information to the DOS DLC program via the redir. This is used mainly in +// asynchronous call-backs (aka ANRs, post-routines or DLC appendages). We let +// the redir code know if there is an ANR by setting dwPostRoutine +// + +typedef struct _VDM_REDIR_DOS_WINDOW { /* */ + DWORD dwPostRoutine; + DWORD dwDlcTimerTick; + EXTENDED_STATUS_PARMS aExtendedStatus[DOS_DLC_MAX_ADAPTERS]; + ADAPTER_STATUS_PARMS AdapterStatusParms[DOS_DLC_MAX_ADAPTERS]; + DOS_DLC_STATUS aStatusTables[(DOS_DLC_STATUS_TEMP_SLOTS + DOS_DLC_STATUS_PERM_SLOTS)]; +} VDM_REDIR_DOS_WINDOW; + +typedef VDM_REDIR_DOS_WINDOW UNALIGNED * LPVDM_REDIR_DOS_WINDOW; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ diff --git a/private/mvdm/inc/vrinit.h b/private/mvdm/inc/vrinit.h new file mode 100644 index 000000000..56bfc3ac2 --- /dev/null +++ b/private/mvdm/inc/vrinit.h @@ -0,0 +1,67 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + vrinit.h + +Abstract: + + Contains function prototypes for Vdm Redir init routines + +Author: + + Richard L Firth (rfirth) 13-Sep-1991 + +Revision History: + + 13-Sep-1991 rfirth + Created + +--*/ + +BOOLEAN +VrInitialized( + VOID + ); + +BOOLEAN +VrInitialize( + VOID + ); + +VOID +VrUninitialize( + VOID + ); + +VOID +VrRaiseInterrupt( + VOID + ); + +VOID +VrDismissInterrupt( + VOID + ); + +VOID +VrQueueCompletionHandler( + IN VOID (*AsyncDispositionRoutine)(VOID) + ); + +VOID +VrHandleAsyncCompletion( + VOID + ); + +VOID +VrCheckPmNetbiosAnr( + VOID + ); + +VOID +VrEoiAndDismissInterrupt( + VOID + ); diff --git a/private/mvdm/inc/vrmisc.h b/private/mvdm/inc/vrmisc.h new file mode 100644 index 000000000..56a5c1179 --- /dev/null +++ b/private/mvdm/inc/vrmisc.h @@ -0,0 +1,34 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + vrmisc.h + +Abstract: + + Contains function prototypes for Vdm Redir miscellaneous routines + +Author: + + Richard L Firth (rfirth) 01-Oct-1991 + +Revision History: + + 01-Oct-1991 rfirth + Created + +--*/ + + + +VOID +VrTerminateDosProcess( + VOID + ); + +VOID +VrUnsupportedFunction( + VOID + ); diff --git a/private/mvdm/inc/vrmslot.h b/private/mvdm/inc/vrmslot.h new file mode 100644 index 000000000..a1405d328 --- /dev/null +++ b/private/mvdm/inc/vrmslot.h @@ -0,0 +1,143 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + vrmslot.h + +Abstract: + + Prototypes, definitions and structures for VdmRedir mailslot handlers + +Author: + + Richard L Firth (rfirth) 16-Sep-1991 + +Revision History: + + 16-Sep-1991 rfirth + Created + +--*/ + + + +// +// VDM Mailslot support routines. Prototypes +// + +VOID +VrDeleteMailslot( + VOID + ); + +VOID +VrGetMailslotInfo( + VOID + ); + +VOID +VrMakeMailslot( + VOID + ); + +VOID +VrPeekMailslot( + VOID + ); + +VOID +VrReadMailslot( + VOID + ); + +VOID +VrWriteMailslot( + VOID + ); + +VOID +VrTerminateMailslots( + IN WORD DosPdb + ); + + + +// +// typedefs +// + +// +// SELECTOR - in the absence of a standard SELECTOR type, 16-bit selector, +// doubles as SEGMENT (as in ADDRESS16) +// + +typedef unsigned short SELECTOR; + +// +// ADDRESS16 - an Intel architecture-specific 16:16 address, consisting of a +// 16-bit offset in the low word and a 16-bit segment (real mode) or selector +// (protect mode) in the high word. Both elements are little-endian +// Again, this exists in absence of Intel-specific DWORD structure which has +// correct endian-ness and views address as composed of two parts +// + +typedef struct { + unsigned short Offset; + SELECTOR Selector; +} ADDRESS16; + + + +// +// structures +// + +// +// VR_MAILSLOT_INFO - the Dos mailslot subsystem needs some info which we do +// not keep, so we put it in this structure. The structure is linked into a +// list of active mailslot structures for every successful CreateMailslot +// call. The extra info we need is: +// +// DosPdb - the PDB (or PSP) of the Dos application. Used for +// consistency checks and removing mailslots when the +// app dies +// Handle16 - the handle returned to the Dos app. We have to invent +// this +// BufferAddress - the Dos app tells us where its buffer is then wants +// us to confirm the address in a DosMailslotInfo call +// Selector - the Dos app needs a protect mode selector when +// running under Windows 3.0 enhanced mode +// MessageSize - maximum message size which can be read. Not the same +// thing as mailslot size +// +// We also need some information for our own internal wrangling: +// +// NameLength - the length of the significant part of the mailslot +// name (after \MAILSLOT\). We compare this before +// doing a strcmp() on names +// Name - the significant part of the mailslot name. When a +// mailslot is opened, we store the name after \MAILSLOT\ +// because DosMailslotWrite uses the symbolic name, even +// when writing locally; we need a handle, so we have +// to map the name to open mailslot handle. +// +// This structure is allocated from the heap and the Name field will actually +// be large enough to hold the entire string. I put Name[2] because the Mips +// compiler doesn't know about Name[] (Microsoft C compiler extension). 2 at +// least keeps things even. Maybe it should be 4. Maybe it doesn't matter +// + +typedef struct _VR_MAILSLOT_INFO *PVR_MAILSLOT_INFO; +typedef struct _VR_MAILSLOT_INFO { + PVR_MAILSLOT_INFO Next; // linked list + WORD DosPdb; // for consistency etc + WORD Handle16; // Dos handle + HANDLE Handle32; // Win32 handle (proper) + ADDRESS16 BufferAddress; // Dos app's message buffer + SELECTOR Selector; // Win 3's buffer selector + DWORD MessageSize; // max. message size + DWORD NameLength; // length of name following: + CHAR Name[2]; // of mailslot, (after \\.\MAILSLOT\) +} VR_MAILSLOT_INFO; diff --git a/private/mvdm/inc/vrnetapi.h b/private/mvdm/inc/vrnetapi.h new file mode 100644 index 000000000..8ef547a26 --- /dev/null +++ b/private/mvdm/inc/vrnetapi.h @@ -0,0 +1,150 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + vrnetapi.h + +Abstract: + + Contains prototypes and definitions for Vdm Redir lanman support routines + +Author: + + Richard L Firth (rfirth) 21-Oct-1991 + +Revision History: + + 21-Oct-1991 rfirth + Created + +--*/ + +// +// the top bit of the api number (word) is used by the dosnet library to +// indicate whether certain APIs should be remoted over a null session +// (according to the code in the dos redir) +// + +#define USE_NULL_SESSION_FLAG 0x8000 + + + +// +// prototypes +// + +VOID +VrNetRemoteApi( + VOID + ); + +VOID +VrNetTransactApi( + VOID + ); + +VOID +VrNetNullTransactApi( + VOID + ); + +VOID +VrNetServerEnum( + VOID + ); + +VOID +VrNetUseAdd( + VOID + ); + +VOID +VrNetUseDel( + VOID + ); + +VOID +VrNetUseEnum( + VOID + ); + +VOID +VrNetUseGetInfo( + VOID + ); + +VOID +VrNetWkstaGetInfo( + VOID + ); + +VOID +VrNetWkstaSetInfo( + VOID + ); + +VOID +VrNetMessageBufferSend( + VOID + ); + +VOID +VrGetCDNames( + VOID + ); + +VOID +VrGetComputerName( + VOID + ); + +VOID +VrGetUserName( + VOID + ); + +VOID +VrGetDomainName( + VOID + ); + +VOID +VrGetLogonServer( + VOID + ); + +VOID +VrNetGetDCName( + VOID + ); + +VOID +VrReturnAssignMode( + VOID + ); + +VOID +VrSetAssignMode( + VOID + ); + +VOID +VrGetAssignListEntry( + VOID + ); + +VOID +VrDefineMacro( + VOID + ); + +VOID +VrBreakMacro( + VOID + ); + +VOID VrNetServiceControl( + VOID + ); diff --git a/private/mvdm/inc/vrnmpipe.h b/private/mvdm/inc/vrnmpipe.h new file mode 100644 index 000000000..bc8854ce9 --- /dev/null +++ b/private/mvdm/inc/vrnmpipe.h @@ -0,0 +1,409 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + vrnmpipe.h + +Abstract: + + Prototypes, definitions and structures for VdmRedir named pipe handlers + +Author: + + Richard L Firth (rfirth) 10-Sep-1991 + +Revision History: + + 10-Sep-1991 RFirth + Created + +--*/ + +// +// manifests +// + +#define MAXIMUM_ASYNC_PIPES 32 + +// +// async named pipe request types +// + +#define ANP_READ 0x86 +#define ANP_READ2 0x90 +#define ANP_WRITE 0x8f +#define ANP_WRITE2 0x91 + +// +// VDM Named Pipe support routines. Prototypes +// + +VOID +VrGetNamedPipeInfo( + VOID + ); + +VOID +VrGetNamedPipeHandleState( + VOID + ); + +VOID +VrSetNamedPipeHandleState( + VOID + ); + +VOID +VrPeekNamedPipe( + VOID + ); + +VOID +VrTransactNamedPipe( + VOID + ); + +VOID +VrCallNamedPipe( + VOID + ); + +VOID +VrWaitNamedPipe( + VOID + ); + +VOID +VrNetHandleGetInfo( + VOID + ); + +VOID +VrNetHandleSetInfo( + VOID + ); + +VOID +VrReadWriteAsyncNmPipe( + VOID + ); + +BOOLEAN +VrNmPipeInterrupt( + VOID + ); + +VOID +VrTerminateNamedPipes( + IN WORD DosPdb + ); + +// +// VDM open/close and read/write intercept routines +// + +#ifdef VDMREDIR_DLL + +BOOL +VrAddOpenNamedPipeInfo( + IN HANDLE Handle, + IN LPSTR lpFileName + ); + +BOOL +VrRemoveOpenNamedPipeInfo( + IN HANDLE Handle + ); + +BOOL +VrReadNamedPipe( + IN HANDLE Handle, + IN LPBYTE Buffer, + IN DWORD Buflen, + OUT LPDWORD BytesRead, + OUT LPDWORD Error + ); + +BOOL +VrWriteNamedPipe( + IN HANDLE Handle, + IN LPBYTE Buffer, + IN DWORD Buflen, + OUT LPDWORD BytesWritten + ); + +VOID +VrCancelPipeIo( + IN DWORD Thread + ); + +#else + +BOOL +(*VrAddOpenNamedPipeInfo)( + IN HANDLE Handle, + IN LPSTR lpFileName + ); + +BOOL +(*VrRemoveOpenNamedPipeInfo)( + IN HANDLE Handle + ); + +BOOL +(*VrReadNamedPipe)( + IN HANDLE Handle, + IN LPBYTE Buffer, + IN DWORD Buflen, + OUT LPDWORD BytesRead, + OUT LPDWORD Error + ); + +BOOL +(*VrWriteNamedPipe)( + IN HANDLE Handle, + IN LPBYTE Buffer, + IN DWORD Buflen, + OUT LPDWORD BytesWritten + ); + +VOID +(*VrCancelPipeIo)( + IN DWORD Thread + ); + +#endif + +// +// VDM pipe name to NT pipe name helper routines +// + +#ifdef VDMREDIR_DLL + +BOOL +VrIsNamedPipeName( + IN LPSTR Name + ); + +BOOL +VrIsNamedPipeHandle( + IN HANDLE Handle + ); + +LPSTR +VrConvertLocalNtPipeName( + OUT LPSTR Buffer OPTIONAL, + IN LPSTR Name + ); + +#else + +BOOL +(*VrIsNamedPipeName)( + IN LPSTR Name + ); + +BOOL +(*VrIsNamedPipeHandle)( + IN HANDLE Handle + ); + +LPSTR +(*VrConvertLocalNtPipeName)( + OUT LPSTR Buffer OPTIONAL, + IN LPSTR Name + ); + +#endif + +// +// structures +// + +//typedef struct { +// PDOSNMPINFO Next; // pointer to next info structure in list +// WORD DosPdb; +// WORD Handle16; +// HANDLE Handle32; // handle returned from CreateFile call +// DWORD NameLength; // length of ASCIZ pipe name +// LPSTR Name; // ASCIZ pipe name +// DWORD Instances; // current instances +//} DOSNMPINFO, *PDOSNMPINFO; + +// +// OPEN_NAMED_PIPE_INFO - this structure contains information recorded when a +// named pipe is opened on behalf of the VDM. DosQNmPipeInfo wants the name +// of the pipe +// + +typedef struct _OPEN_NAMED_PIPE_INFO* POPEN_NAMED_PIPE_INFO; +typedef struct _OPEN_NAMED_PIPE_INFO { + POPEN_NAMED_PIPE_INFO Next; // linked list + HANDLE Handle; // open named pipe handle + DWORD NameLength; // including terminating 0 + WORD DosPdb; // the process which owns this named pipe + CHAR Name[2]; // full pipe name +} OPEN_NAMED_PIPE_INFO; + +// +// DOS_ASYNC_NAMED_PIPE_INFO - in this structure we keep all the information +// required to complete an asynchronous named pipe operation +// + +typedef struct _DOS_ASYNC_NAMED_PIPE_INFO { + struct _DOS_ASYNC_NAMED_PIPE_INFO* Next; // linked list + OVERLAPPED Overlapped; // contains 32-bit event handle + BOOL Type2; // TRUE if request is Read2 or Write2 + BOOL Completed; // TRUE if this request has completed + HANDLE Handle; // 32-bit named pipe handle + DWORD Buffer; // 16:16 address of buffer + DWORD BytesTransferred; // actual number of bytes read/written + LPWORD pBytesTransferred; // flat-32 pointer to returned read/write count in VDM + LPWORD pErrorCode; // flat-32 pointer to returned error code in VDM + DWORD ANR; // 16:16 address of ANR + DWORD Semaphore; // 16:16 address of 'semaphore' in VDM +#if DBG + DWORD RequestType; +#endif +} DOS_ASYNC_NAMED_PIPE_INFO, *PDOS_ASYNC_NAMED_PIPE_INFO; + +// +// DOS_CALL_NAMED_PIPE_STRUCT - this structure is created and handed to the DOS +// CallNmPipe routine because there is too much information to get into a 286's +// registers. This structure should be in apistruc.h, but it aint +// + +//#include <packon.h> +#pragma pack(1) +typedef struct { + DWORD Timeout; // Time to wait for pipe to become available + LPWORD lpBytesRead; // pointer to returned bytes read + WORD nOutBufferLen; // size of send data + LPBYTE lpOutBuffer; // pointer to send data + WORD nInBufferLen; // size of receive buffer + LPBYTE lpInBuffer; // pointer to receive buffer + LPSTR lpPipeName; // pointer to pipe name +} DOS_CALL_NAMED_PIPE_STRUCT, *PDOS_CALL_NAMED_PIPE_STRUCT; +//#include <packoff.h> +#pragma pack() + +// +// DOS_ASYNC_NAMED_PIPE_STRUCT - as with the above, this structure is used +// to pass all the info to DosReadAsyncNmPipe which won't fit into registers. +// Used for read and write operations. Should be defined in apistruc.h +// + +//#include <packon.h> +#pragma pack(1) +typedef struct { + LPWORD lpBytesRead; // pointer to returned bytes read/written + WORD BufferLength; // size of caller's buffer + LPBYTE lpBuffer; // pointer to caller's buffer + LPWORD lpErrorCode; // pointer to returned error code + LPVOID lpANR; // pointer to Asynchronous Notification Routine + WORD PipeHandle; // named pipe handle + LPBYTE lpSemaphore; // pointer to caller's 'semaphore' +} DOS_ASYNC_NAMED_PIPE_STRUCT, *PDOS_ASYNC_NAMED_PIPE_STRUCT; +//#include <packoff.h> +#pragma pack() + +// +// The following selectively copied from BSEDOS.H and other Lanman include +// files +// + +/*** Data structures and equates used with named pipes ***/ + +//#include <packon.h> +#pragma pack(1) +typedef struct _PIPEINFO { /* nmpinf */ + USHORT cbOut; + USHORT cbIn; + BYTE cbMaxInst; + BYTE cbCurInst; + BYTE cbName; + CHAR szName[1]; +} PIPEINFO; +//#include <packoff.h> +#pragma pack() +typedef PIPEINFO FAR *PPIPEINFO; + +/* defined bits in pipe mode */ +#define NP_NBLK 0x8000 /* non-blocking read/write */ +#define NP_SERVER 0x4000 /* set if server end */ +#define NP_WMESG 0x0400 /* write messages */ +#define NP_RMESG 0x0100 /* read as messages */ +#define NP_ICOUNT 0x00FF /* instance count field */ + + +/* Named pipes may be in one of several states depending on the actions + * that have been taken on it by the server end and client end. The + * following state/action table summarizes the valid state transitions: + * + * Current state Action Next state + * + * <none> server DosMakeNmPipe DISCONNECTED + * DISCONNECTED server connect LISTENING + * LISTENING client open CONNECTED + * CONNECTED server disconn DISCONNECTED + * CONNECTED client close CLOSING + * CLOSING server disconn DISCONNECTED + * CONNECTED server close CLOSING + * <any other> server close <pipe deallocated> + * + * If a server disconnects his end of the pipe, the client end will enter a + * special state in which any future operations (except close) on the file + * descriptor associated with the pipe will return an error. + */ + +/* + * Values for named pipe state + */ + +#define NP_DISCONNECTED 1 /* after pipe creation or Disconnect */ +#define NP_LISTENING 2 /* after DosNmPipeConnect */ +#define NP_CONNECTED 3 /* after Client open */ +#define NP_CLOSING 4 /* after Client or Server close */ + +/* DosMakeNmPipe open modes */ + +#define NP_ACCESS_INBOUND 0x0000 +#define NP_ACCESS_OUTBOUND 0x0001 +#define NP_ACCESS_DUPLEX 0x0002 +#define NP_INHERIT 0x0000 +#define NP_NOINHERIT 0x0080 +#define NP_WRITEBEHIND 0x0000 +#define NP_NOWRITEBEHIND 0x4000 + +/* DosMakeNmPipe and DosQNmPHandState state */ + +#define NP_READMODE_BYTE 0x0000 +#define NP_READMODE_MESSAGE 0x0100 +#define NP_TYPE_BYTE 0x0000 +#define NP_TYPE_MESSAGE 0x0400 +#define NP_END_CLIENT 0x0000 +#define NP_END_SERVER 0x4000 +#define NP_WAIT 0x0000 +#define NP_NOWAIT 0x8000 +#define NP_UNLIMITED_INSTANCES 0x00FF + +typedef struct _AVAILDATA { /* PeekNMPipe Bytes Available record */ + USHORT cbpipe; /* bytes left in the pipe */ + USHORT cbmessage; /* bytes left in current message */ +} AVAILDATA; +typedef AVAILDATA FAR *PAVAILDATA; + +// +// handle info level 1 - this is different to the structure in lmchdev.h +// + +//#include <packon.h> +#pragma pack(1) +typedef struct _VDM_HANDLE_INFO_1 { + ULONG CharTime; + USHORT CharCount; +} VDM_HANDLE_INFO_1, *LPVDM_HANDLE_INFO_1; +#pragma pack() +//#include <packoff.h> diff --git a/private/mvdm/inc/vrremote.h b/private/mvdm/inc/vrremote.h new file mode 100644 index 000000000..224507ef3 --- /dev/null +++ b/private/mvdm/inc/vrremote.h @@ -0,0 +1,101 @@ +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + vrremote.h + +Abstract: + + Prototypes for vrremote module + +Author: + + Richard L Firth (rfirth) 28-Oct-1991 + +Revision History: + + 29-Oct-1991 rfirth + Created + +--*/ + +NET_API_STATUS +VrTransaction( + IN LPSTR ServerName, + IN LPBYTE SendParmBuffer, + IN DWORD SendParmBufLen, + IN LPBYTE SendDataBuffer, + IN DWORD SendDataBufLen, + OUT LPBYTE ReceiveParmBuffer, + IN DWORD ReceiveParmBufLen, + IN LPBYTE ReceiveDataBuffer, + IN OUT LPDWORD ReceiveDataBufLen, + IN BOOL NullSessionFlag + ); + +NET_API_STATUS +VrRemoteApi( + IN DWORD ApiNumber, + IN LPBYTE ServerNamePointer, + IN LPSTR ParameterDescriptor, + IN LPSTR DataDescriptor, + IN LPSTR AuxDescriptor OPTIONAL, + IN BOOL NullSessionFlag + ); + +// +// private routine prototypes +// + +DWORD +VrpGetStructureSize( + IN LPSTR Descriptor, + IN LPDWORD AuxOffset + ); + +DWORD +VrpGetArrayLength( + IN LPSTR type_ptr, + IN LPSTR* type_ptr_addr + ); + +DWORD +VrpGetFieldSize( + IN LPSTR Descriptor, + IN LPSTR* pDescriptor + ); + +VOID +VrpConvertReceiveBuffer( + IN LPBYTE ReceiveBuffer, + IN WORD BufferSelector, + IN WORD BufferOffset, + IN WORD ConverterWord, + IN DWORD NumberStructs, + IN LPSTR DataDescriptor, + IN LPSTR AuxDescriptor + ); + +VOID +VrpConvertVdmPointer( + IN ULPWORD TargetPointer, + IN WORD BufferSegment, + IN WORD BufferOffset, + IN WORD ConverterWord + ); + +NET_API_STATUS +VrpPackSendBuffer( + IN OUT LPBYTE* SendBufferPtr, + IN OUT LPDWORD SendBufLenPtr, + OUT LPBOOL BufferAllocFlagPtr, + IN OUT LPSTR DataDescriptor, + IN LPSTR AuxDescriptor, + IN DWORD StructureSize, + IN DWORD AuxOffset, + IN DWORD AuxSize, + IN BOOL SetInfoFlag, + IN BOOL OkToModifyDescriptor + ); diff --git a/private/mvdm/inc/wow.h b/private/mvdm/inc/wow.h new file mode 100644 index 000000000..aab29dd0d --- /dev/null +++ b/private/mvdm/inc/wow.h @@ -0,0 +1,1701 @@ +/*++ BUILD Version: 0002 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOW.H + * Constants, macros, etc common to WOW16/WOW32 + * + * History: + * Created 25-Jan-1991 by Jeff Parsons (jeffpar) + * Added SHELL defines 14-April-92 Chandan Chauhan (ChandanC) + * and Win 31 parameter validation support. + * Modified 12-May-1992 by Mike Tricker (MikeTri) Added MultiMedia declarations + * and callback support + * +--*/ + + +#define WIN31 + +#include <mvdm.h> +#include <bop.h> +#ifndef NOEXTERNS +#include <softpc.h> +#endif +#include <wownt32.h> + +#ifdef i386 +#ifndef DEBUG // should be DEBUG_OR_WOWPROFILE, but + // that won't work for assembler as things are. + +// +// Flag to control enable/disable W32TryCall function. +// + +#define NO_W32TRYCALL 1 +#endif +#endif + +/* WOW constants + */ +#define MAX_VDMFILENAME 144 // must be >= 144 (see GetTempFileName) +#define GRAINYTIC_RES 0x3f // will truncate to lower multiple of 64 + + +/* Logging/debugging macros + */ +/* XLATOFF */ +#define GRAINYTICS(dwordtickcount) ((dwordtickcount) & (~GRAINYTIC_RES)) +#define IFLOG(l) if (l==iLogLevel && (iLogLevel&1) || l<=iLogLevel && !(iLogLevel&1) || l == 0) + +#define OPENLOG() (hfLog != (HANDLE)-1?hfLog:(hfLog=CreateFile("log",GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,0,NULL))) +#define APPENDLOG() if (hfLog == (HANDLE)-1) {hfLog=CreateFile("log",GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,0,NULL) ; SetFilePointer (hfLog,0,NULL,FILE_END); } +#define CLOSELOG() if (hfLog != (HANDLE)-1) {CloseHandle(hfLog); hfLog=(HANDLE)-1;} + +#undef LOG +#ifdef NOLOG +#define LOG(l,args) +#define SETREQLOG(l) +#else +#define SETREQLOG(l) iReqLogLevel = (l) +#define LOG(l,args) {SETREQLOG(l) ; logprintf args;} +#endif +#define MODNAME(module) + +#ifdef DEBUG +#define STATIC +#define INT3() _asm int 3 +#define IFDEBUG(f) if (f) +#define ELSEDEBUG else +#define LOGDEBUG(l,args) LOG(l,args) +#else +#define STATIC static +#define INT3() +#define IFDEBUG(f) +#define ELSEDEBUG +#define LOGDEBUG(l,args) +#endif +/* XLATON */ + + +/* 16-bit Windows constants + */ +#define CW_USEDEFAULT16 ((SHORT)0x8000) + + +/* 16-bit Windows types + */ +typedef WORD HAND16; +typedef WORD HTASK16; +typedef WORD HINST16; +typedef WORD HMOD16; +typedef WORD HRES16; +typedef WORD HRESI16; +typedef WORD HRESD16; +typedef WORD HWND16; +typedef WORD HMENU16; +typedef WORD HDC16; +typedef WORD HRGN16; +typedef WORD HICON16; +typedef WORD HCUR16; +typedef WORD HBRSH16; +typedef WORD HPAL16; +typedef WORD HBM16; +typedef WORD HFONT16; +typedef WORD HMEM16; +typedef DWORD HHOOK16; + +typedef WORD HMMIO16; // for MultiMedia - MikeTri 12-May-1992 +typedef WORD HMIDIIN16; +typedef WORD HMIDIOUT16; +typedef WORD HWAVEIN16; +typedef WORD HWAVEOUT16; +typedef WORD HDRVR16; +typedef DWORD HPSTR16; + +typedef SHORT INT16; +typedef SHORT BOOL16; + +/* 16-bit pointer types (VP == VDM Ptr) + */ +typedef DWORD VPVOID; // VDM address (seg:off) +typedef VPVOID VPBYTE; // +typedef VPVOID VPWORD; // +typedef VPVOID VPDWORD; // +typedef VPVOID VPSHORT; // +typedef VPVOID VPLONG; // +typedef VPVOID VPSTR; // should use VPSZ or VPBYTE instead, as approp. +typedef VPVOID VPSZ; // +typedef VPVOID VPPROC; // +typedef VPVOID VPWNDPROC; // +typedef VPVOID VPINT16; // +typedef VPVOID VPBOOL16; // +typedef VPVOID *PVPVOID; // pointer to VDM address + +typedef VPVOID VPCSTR; // MultiMedia Extensions - MikeTri 12-May-1992 +typedef VPVOID VPMMIOPROC16; +typedef VPVOID VPHMIDIIN16; +typedef VPVOID VPHMIDIOUT16; +typedef VPVOID VPPATCHARRAY16; +typedef VPVOID VPKEYARRAY16; +typedef VPVOID VPHWAVEIN16; +typedef VPVOID VPHWAVEOUT16; +typedef VPVOID VPTIMECALLBACK16; +typedef VPVOID VPTASKCALLBACK16; + +/* XLATOFF */ +#pragma pack(1) +/* XLATON */ + +/* Window proc/dialog box callback function parameter format + */ +typedef struct _PARMWP { /* wp */ + LONG lParam; // + WORD wParam; // + WORD wMsg; // + WORD hwnd; // + WORD hInst; // hInstance of window that we are returning to +} PARMWP; + + +/* EnumPropsProc callback function parameter format + */ +typedef struct _PARMEPP { /* epp */ + HAND16 hData; + VPVOID vpString; + HWND16 hwnd; +} PARMEPP; + + +/* EnumWindows/EnumChildWindows/EnumTaskWindows callback function parameter format + */ +typedef struct _PARMEWP { /* ewp */ + LONG lParam; // app-defined data + HWND16 hwnd; // 16-bit window handle +} PARMEWP; + + +/* EnumFonts callback function parameter format + */ +typedef struct _PARMEFP { /* efp */ + VPVOID vpData; // app-defined data + SHORT nFontType; // + VPVOID vpTextMetric; // pointer to TEXTMETRIC16 + VPVOID vpLogFont; // pointer to LOGFONT16 +} PARMEFP; + + +/* EnumObj callback function parameter format + */ +typedef struct _PARMEOP { /* eop */ + VPVOID vpData; // app-defined data + VPVOID vpLogObject; +} PARMEOP; + + +/* EnumMetaFile callback function parameter format + */ +typedef struct _PARMEMP { /* emp */ + VPVOID vpData; // app-defined data + SHORT nObjects; // # objects + VPVOID vpMetaRecord; // pointer to METARECORD16 + VPVOID vpHandleTable; // pointer to HANDLETABLE16 + HDC16 hdc; // hdc +} PARMEMP; + +/* Hook Callback function parameter format + */ +typedef struct _PARMHKP { /* hkp */ + VPVOID lParam; + SHORT wParam; + SHORT nCode; // action code +} PARMHKP; + +/* Subclass Callback function parameter format + */ +typedef struct _PARMSCP { /* scp */ + SHORT iOrdinal; // oridnal number; +} PARMSCP; + +/* LineDDA Callback function parameter format + */ +typedef struct _PARMDDA { /* dda */ + VPVOID vpData; + SHORT y; + SHORT x; +} PARMDDA; + +/* Graystring callback function parameter format + */ +typedef struct _PARMGST { /* gst */ + SHORT n; + DWORD data; + HDC16 hdc; +} PARMGST; + + +typedef struct _PARMDIR { /* cdir */ + SHORT wDrive; + VPSZ vpDir; // directory name +} PARMDIR; + +typedef struct _PARMSAP { /* sap */ + SHORT code; // + HAND16 hPr; +} PARMSAP; + + +/* WordBreakProc callback function parameter format + */ +typedef struct _PARMWBP { /* wbp */ + SHORT action; + SHORT cbEditText; + SHORT ichCurrentWord; + VPVOID lpszEditText; +} PARMWBP; + + +/*++ + + MultiMedia callback definitions added, and also to _PARM16 - MikeTri + +--*/ + +/* midiInOpen (MidiInFunc) Callback function parameter format + */ + +typedef struct _PARMMIF { /* mif */ + DWORD dwParam2; + DWORD dwParam1; + DWORD dwInstance; + WORD wMsg; + HMIDIIN16 hMidiIn; +} PARMMIF; + +/* midiOutOpen (MidiOutFunc) Callback function parameter format + */ + +typedef struct _PARMMOF { /* mof */ + DWORD dwParam2; + DWORD dwParam1; + DWORD dwInstance; + WORD wMsg; + HMIDIOUT16 hMidiOut; +} PARMMOF; + +/* mmioInstallIOProc (IOProc) Callback function parameter format + */ + +typedef struct _PARMIOP { /* iop */ + LONG lParam2; + LONG lParam1; + WORD wMsg; + VPVOID lpmmioinfo; +} PARMIOP; + +/* timeSetEvent (TimeFunc) Callback function parameter format + */ + +typedef struct _PARMTIF { /* tif */ + DWORD dw2; + DWORD dw1; + DWORD dwUser; + WORD wMsg; + WORD wID; +} PARMTIF; + +/* waveInOpen (WaveInFunc) Callback function parameter format + */ + +typedef struct _PARMWIF { /* wif */ + DWORD dwParam2; + DWORD dwParam1; + DWORD dwInstance; + WORD wMsg; + HWAVEIN16 hWaveIn; +} PARMWIF; + +/* waveOutOpen (WaveOutFunc) Callback function parameter format + */ + +typedef struct _PARMWOF { /* wof */ + DWORD dwParam2; + DWORD dwParam1; + DWORD dwInstance; + WORD wMsg; + HWAVEOUT16 hWaveOut; +} PARMWOF; + +/* WOWCallback16 function parameter format + */ + +typedef struct _PARMWCB16 { /* wcb16 */ + WORD wArgs[8]; +} PARMWCB16; + +/* PARM16 is the union of all the callback parameter structures + */ +typedef union _PARM16 { /* parm16 */ + PARMWP WndProc; // for window procs + PARMEWP EnumWndProc; // for window enum functions + PARMEFP EnumFontProc; // for font enum functions + PARMEOP EnumObjProc; // for obj enum functions + PARMEMP EnumMetaProc; // for metafile enum functions + PARMEPP EnumPropsProc; // for properties + PARMHKP HookProc; // for Hooks + PARMSCP SubClassProc; // for subclass thunks + PARMDDA LineDDAProc; // for LineDDA + PARMGST GrayStringProc; // for GrayString + PARMDIR CurDir; + PARMSAP SetAbortProc; // for SetAbortProc + PARMMIF MidiInFunc; // for midiInOpen functions - MikeTri 27-Mar-1992 + PARMMOF MidiOutFunc; // for midiOutOpen functions + PARMIOP IOProc; // for mmioInstallIOProc functions + PARMTIF TimeFunc; // for timeSetEvent functions + PARMWIF WaveInFunc; // for waveInOpen functions + PARMWOF WaveOutFunc; // for waveOutOpen functions + PARMWBP WordBreakProc; // for WordBreakProc + PARMWCB16 WOWCallback16; // for WOWCallback16 +} PARM16, *PPARM16; + + +/* VDMFRAME is built by wow16cal.asm in the kernel, and is utilized + * by all the WOW32 thunks + */ +typedef struct _VDMFRAME { /* vf */ + WORD wTDB; // 16-bit kernel handle for calling task + WORD wRetID; // internal call-back function ID Do NOT Move + WORD wLocalBP; // + WORD wDI; // + WORD wSI; // + WORD wAX; // + WORD wDX; // keep DX right after AX!!! + WORD wAppDS; // app DS at time of call + WORD wGS; + WORD wFS; + WORD wCX; // REMOVE LATER + WORD wES; // REMOVE LATER + WORD wBX; // REMOVE LATER + WORD wBP; // BP Chain +1 + VPVOID wThunkCSIP; // far return address to thunk + DWORD wCallID; // internal WOW16 module/function ID + WORD cbArgs; // byte count of args pushed + VPVOID vpCSIP; // far return address to app + BYTE bArgs; // start of arguments from app +} VDMFRAME; +typedef VDMFRAME UNALIGNED *PVDMFRAME; + +/* CBVDMFRAME is built by callback16 in wow32.dll and in wow16cal.asm + * the definition of VDMFRAME and CBACKVDMFRAME must be in sync + */ + +typedef struct _CBVDMFRAME { /* cvf */ + WORD wTDB; // must match VDMFRAME + WORD wRetID; // must match VDMFRAME + WORD wLocalBP; // must match VDMFRAME + PARM16 Parm16; // space for window/enum proc parameters + VPVOID vpfnProc; // address of window/enum proc + DWORD vpStack; // orginal ss:sp. used in callback16 + WORD wAX; // + WORD wDX; // keep DX right after AX!!! + WORD wGenUse1; // extra words for general use. for convenience + WORD wGenUse2; // extra words for general use. for convenience +} CBVDMFRAME; +typedef CBVDMFRAME UNALIGNED *PCBVDMFRAME; + +typedef struct _POINT16 { /* pt16 */ + SHORT x; + SHORT y; +} POINT16; +typedef POINT16 UNALIGNED *PPOINT16; +typedef VPVOID VPPOINT16; + + + +typedef struct _RASTERIZER_STATUS16 { /* rs16 */ + INT16 nSize; + INT16 wFlags; + INT16 nLanguageID; +} RASTERIZER_STATUS16; +typedef RASTERIZER_STATUS16 UNALIGNED *PRASTERIZER_STATUS16; +typedef VPVOID VPRASTERIZER_STATUS16; + +typedef struct _GLYPHMETRICS16 { /*glyph16 */ + WORD gmBlackBoxX; + WORD gmBlackBoxY; + POINT16 gmptGlyphOrigin; + INT16 gmCellIncX; + INT16 gmCellIncY; +} GLYPHMETRICS16; +typedef GLYPHMETRICS16 UNALIGNED *PGLYPHMETRICS16; +typedef VPVOID VPGLYPHMETRICS16; + +typedef struct _ABC16 { /* abc16 */ + INT16 abcA; + WORD abcB; + INT16 abcC; +} ABC16; +typedef ABC16 UNALIGNED *PABC16; +typedef VPVOID VPABC16; + +typedef struct _FIXED16 { /* fxd16 */ + WORD fract; + INT16 value; +} FIXED16; +typedef FIXED16 UNALIGNED *PFIXED16; +typedef VPVOID VPFIXED16; + +typedef struct _MAT216 { /* mat216 */ + FIXED16 eM11; + FIXED16 eM12; + FIXED16 eM21; + FIXED16 eM22; +} MAT216; +typedef MAT216 UNALIGNED *PMAT216; +typedef VPVOID VPMAT216; + + +/* 16-bit API structures, and their pointers + */ +typedef struct _RECT16 { /* rc16 */ + SHORT left; + SHORT top; + SHORT right; + SHORT bottom; +} RECT16; +typedef RECT16 UNALIGNED *PRECT16; +typedef VPVOID VPRECT16; + +typedef struct _KERNINGPAIR16 { /* k16 */ + WORD wFirst; + WORD wSecond; + INT16 iKernAmount; +} KERNINGPAIR16; +typedef KERNINGPAIR16 UNALIGNED *PKERNINGPAIR16; +typedef VPVOID VPKERNINGPAIR16; + + + + +typedef struct _MSG16 { /* msg16 */ + HWND16 hwnd; + WORD message; + WORD wParam; + LONG lParam; + DWORD time; + POINT16 pt; +} MSG16; +typedef MSG16 UNALIGNED *PMSG16; +typedef VPVOID VPMSG16; + +typedef struct _PAINTSTRUCT16 { /* ps16 */ + HDC16 hdc; + BOOL16 fErase; + RECT16 rcPaint; + BOOL16 fRestore; + BOOL16 fIncUpdate; + BYTE rgbReserved[16]; +} PAINTSTRUCT16; +typedef PAINTSTRUCT16 UNALIGNED *PPAINTSTRUCT16; +typedef VPVOID VPPAINTSTRUCT16; + +typedef struct _WNDCLASS16 { /* wc16 */ + WORD style; + VPWNDPROC vpfnWndProc; + SHORT cbClsExtra; + SHORT cbWndExtra; + HAND16 hInstance; + HICON16 hIcon; + HCUR16 hCursor; + HBRSH16 hbrBackground; + VPSZ vpszMenuName; + VPSZ vpszClassName; +} WNDCLASS16; +typedef WNDCLASS16 UNALIGNED *PWNDCLASS16; +typedef VPVOID VPWNDCLASS16; + +typedef struct _PALETTEENTRY16 { /* pe16 */ + BYTE peRed; + BYTE peGreen; + BYTE peBlue; + BYTE peFlags; +} PALETTEENTRY16; +typedef PALETTEENTRY16 UNALIGNED *PPALETTEENTRY16; +typedef VPVOID VPPALETTEENTRY16; + +typedef struct _RGBTRIPLE16 { /* rgbt16 */ + BYTE rgbtBlue; + BYTE rgbtGreen; + BYTE rgbtRed; +} RGBTRIPLE16; + +typedef struct _BITMAPCOREHEADER16 { /* bmch16 */ + DWORD bcSize; + WORD bcWidth; + WORD bcHeight; + WORD bcPlanes; + WORD bcBitCount; +} BITMAPCOREHEADER16; +typedef BITMAPCOREHEADER16 UNALIGNED *PBITMAPCOREHEADER16; + +typedef struct _BITMAPCOREINFO16 { /* bmci16 */ + BITMAPCOREHEADER16 bmciHeader; + RGBTRIPLE16 bmciColors[1]; +} BITMAPCOREINFO16; +typedef BITMAPCOREINFO16 UNALIGNED *PBITMAPCOREINFO16; + + +typedef struct _CLIENTCREATESTRUCT16 { /* ccs16 */ + HMENU16 hWindowMenu; + WORD idFirstChild; +} CLIENTCREATESTRUCT16; +typedef CLIENTCREATESTRUCT16 UNALIGNED *PCLIENTCREATESTRUCT16; + + + +typedef struct _LOGPALETTE16 { /* logpal16 */ + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY16 palPalEntry[1]; +} LOGPALETTE16; +typedef LOGPALETTE16 UNALIGNED *PLOGPALETTE16; +typedef VPVOID VPLOGPALETTE16; + +typedef SHORT CATCHBUF16[9]; /* cb16 */ +typedef VPSHORT VPCATCHBUF16; + +typedef struct _OFSTRUCT16 { /* of16 */ + BYTE cBytes; + BYTE fFixedDisk; + WORD nErrCode; + BYTE reserved[4]; + BYTE szPathName[128]; +} OFSTRUCT16; +typedef OFSTRUCT16 UNALIGNED *POFSTRUCT16; +typedef VPVOID VPOFSTRUCT16; + +typedef struct _DCB16 { /* dcb16 */ + BYTE Id; // Internal Device ID + WORD BaudRate; // Baudrate at which runing + BYTE ByteSize; // Number of bits/byte, 4-8 + BYTE Parity; // 0-4=None,Odd,Even,Mark,Space + BYTE StopBits; // 0,1,2 = 1, 1.5, 2 + WORD RlsTimeout; // Timeout for RLSD to be set + WORD CtsTimeout; // Timeout for CTS to be set + WORD DsrTimeout; // Timeout for DSR to be set + WORD wFlags; // Bitfield flags + /*+++ These are the bitfield definitions in wFlags above -- + BYTE fBinary: 1; // Binary Mode (skip EOF check + BYTE fRtsDisable:1; // Don't assert RTS at init time + BYTE fParity: 1; // Enable parity checking + BYTE fOutxCtsFlow:1; // CTS handshaking on output + BYTE fOutxDsrFlow:1; // DSR handshaking on output + BYTE fDummy: 2; // Reserved + BYTE fDtrDisable:1; // Don't assert DTR at init time + + BYTE fOutX: 1; // Enable output X-ON/X-OFF + BYTE fInX: 1; // Enable input X-ON/X-OFF + BYTE fPeChar: 1; // Enable Parity Err Replacement + BYTE fNull: 1; // Enable Null stripping + BYTE fChEvt: 1; // Enable Rx character event. + BYTE fDtrflow: 1; // DTR handshake on input + BYTE fRtsflow: 1; // RTS handshake on input + BYTE fDummy2: 1; // + ---*/ + CHAR XonChar; // Tx and Rx X-ON character + CHAR XoffChar; // Tx and Rx X-OFF character + WORD XonLim; // Transmit X-ON threshold + WORD XoffLim; // Transmit X-OFF threshold + CHAR PeChar; // Parity error replacement char + CHAR EofChar; // End of Input character + CHAR EvtChar; // Recieved Event character + WORD TxDelay; // Amount of time between chars +} DCB16; +typedef DCB16 UNALIGNED *PDCB16; +typedef VPVOID VPDCB16; + +typedef struct _COMSTAT16 { /* cs16 */ + BYTE status; + /*+++ These are bitfield definitions defined in status above -- + BYTE fCtsHold: 1; // transmit is on CTS hold + BYTE fDsrHold: 1; // transmit is on DSR hold + BYTE fRlsdHold: 1; // transmit is on RLSD hold + BYTE fXoffHold: 1; // received handshake + BYTE fXoffSent: 1; // issued handshake + BYTE fEof: 1; // end of file character found + BYTE fTxim: 1; // character being transmitted + ---*/ + WORD cbInQue; // count of characters in Rx Queue + WORD cbOutQue; // count of characters in Tx Queue +} COMSTAT16; +typedef COMSTAT16 UNALIGNED *PCOMSTAT16; +typedef VPVOID VPCOMSTAT16; + +typedef struct _BITMAP16 { /* bm16 */ + SHORT bmType; + SHORT bmWidth; + SHORT bmHeight; + SHORT bmWidthBytes; + BYTE bmPlanes; + BYTE bmBitsPixel; + VPBYTE bmBits; +} BITMAP16; +typedef BITMAP16 UNALIGNED *PBITMAP16; +typedef VPVOID VPBITMAP16; + +typedef struct _LOGBRUSH16 { /* lb16 */ + WORD lbStyle; + DWORD lbColor; + SHORT lbHatch; +} LOGBRUSH16; +typedef LOGBRUSH16 UNALIGNED *PLOGBRUSH16; +typedef VPVOID VPLOGBRUSH16; + +/* ASM +LF_FACESIZE equ 32 + */ +typedef struct _LOGFONT16 { /* lf16 */ + SHORT lfHeight; + SHORT lfWidth; + SHORT lfEscapement; + SHORT lfOrientation; + SHORT lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + BYTE lfFaceName[LF_FACESIZE]; +} LOGFONT16; +typedef LOGFONT16 UNALIGNED *PLOGFONT16; +typedef VPVOID VPLOGFONT16; + +/* ASM +LF_FULLFACESIZE equ 64 + */ +/* Structure passed to FONTENUMPROC */ +typedef struct _ENUMLOGFONT16 { /* elp16 */ + LOGFONT16 elfLogFont; + char elfFullName[LF_FULLFACESIZE]; + char elfStyle[LF_FACESIZE]; +} ENUMLOGFONT16; +typedef ENUMLOGFONT16 UNALIGNED *PENUMLOGFONT16; +typedef VPVOID VPENUMLOGFONT16; + +typedef struct _LOGPEN16 { /* lp16 */ + WORD lopnStyle; + POINT16 lopnWidth; + DWORD lopnColor; +} LOGPEN16; +typedef LOGPEN16 UNALIGNED *PLOGPEN16; +typedef VPVOID VPLOGPEN16; + +typedef RGBQUAD RGBQUAD16; +typedef RGBQUAD16 UNALIGNED *PRGBQUAD16; +typedef VPVOID VPRGBQUAD16; + +typedef BITMAPINFOHEADER BITMAPINFOHEADER16; +typedef BITMAPINFOHEADER16 UNALIGNED *PBITMAPINFOHEADER16; +typedef VPVOID VPBITMAPINFOHEADER16; + +typedef BITMAPINFO BITMAPINFO16; +typedef BITMAPINFO16 UNALIGNED *PBITMAPINFO16; +typedef VPVOID VPBITMAPINFO16; + +typedef struct _TEXTMETRIC16 { /* tm16 */ + SHORT tmHeight; + SHORT tmAscent; + SHORT tmDescent; + SHORT tmInternalLeading; + SHORT tmExternalLeading; + SHORT tmAveCharWidth; + SHORT tmMaxCharWidth; + SHORT tmWeight; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + SHORT tmOverhang; + SHORT tmDigitizedAspectX; + SHORT tmDigitizedAspectY; +} TEXTMETRIC16; +typedef TEXTMETRIC16 UNALIGNED *PTEXTMETRIC16; +typedef VPVOID VPTEXTMETRIC16; + +typedef struct _NEWTEXTMETRIC16 { /* ntm16 */ + SHORT tmHeight; + SHORT tmAscent; + SHORT tmDescent; + SHORT tmInternalLeading; + SHORT tmExternalLeading; + SHORT tmAveCharWidth; + SHORT tmMaxCharWidth; + SHORT tmWeight; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + SHORT tmOverhang; + SHORT tmDigitizedAspectX; + SHORT tmDigitizedAspectY; + DWORD ntmFlags; + WORD ntmSizeEM; + WORD ntmCellHeight; + WORD ntmAvgWidth; +} NEWTEXTMETRIC16; +typedef NEWTEXTMETRIC16 UNALIGNED *PNEWTEXTMETRIC16; +typedef VPVOID VPNEWTEXTMETRIC16; + +typedef struct _PANOSE16 { /* pan16 */ + BYTE bFamilyType; + BYTE bSerifStyle; + BYTE bWeight; + BYTE bProportion; + BYTE bContrast; + BYTE bStrokeVariation; + BYTE bArmStyle; + BYTE bLetterform; + BYTE bMidline; + BYTE bXHeight; +} PANOSE16; +typedef PANOSE16 UNALIGNED *PPANOSE16; + +typedef struct _OUTLINETEXTMETRIC16 { /* otm16 */ + WORD otmSize; + TEXTMETRIC16 otmTextMetrics; + BYTE otmFiller; + PANOSE16 otmPanoseNumber; + WORD otmfsSelection; + WORD otmfsType; + SHORT otmsCharSlopeRise; + SHORT otmsCharSlopeRun; + SHORT otmItalicAngle; + WORD otmEMSquare; + SHORT otmAscent; + SHORT otmDescent; + WORD otmLineGap; + WORD otmsCapEmHeight; + WORD otmsXHeight; + RECT16 otmrcFontBox; + SHORT otmMacAscent; + SHORT otmMacDescent; + WORD otmMacLineGap; + WORD otmusMinimumPPEM; + POINT16 otmptSubscriptSize; + POINT16 otmptSubscriptOffset; + POINT16 otmptSuperscriptSize; + POINT16 otmptSuperscriptOffset; + WORD otmsStrikeoutSize; + SHORT otmsStrikeoutPosition; + SHORT otmsUnderscorePosition; + SHORT otmsUnderscoreSize; + WORD otmpFamilyName; + WORD otmpFaceName; + WORD otmpStyleName; + WORD otmpFullName; +} OUTLINETEXTMETRIC16; +typedef OUTLINETEXTMETRIC16 UNALIGNED *POUTLINETEXTMETRIC16; +typedef VPVOID VPOUTLINETEXTMETRIC16; + +typedef struct _HANDLETABLE16 { /* ht16 */ + HAND16 objectHandle[1]; +} HANDLETABLE16; +typedef HANDLETABLE16 UNALIGNED *PHANDLETABLE16; +typedef VPVOID VPHANDLETABLE16; + +typedef struct _METARECORD16 { /* mr16 */ + DWORD rdSize; + WORD rdFunction; + WORD rdParm[1]; +} METARECORD16; +typedef METARECORD16 UNALIGNED *PMETARECORD16; +typedef VPVOID VPMETARECORD16; + +typedef struct _DEVMODE16 { /* dm16 */ + CHAR dmDeviceName[32]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + SHORT dmOrientation; + SHORT dmPaperSize; + SHORT dmPaperLength; + SHORT dmPaperWidth; + SHORT dmScale; + SHORT dmCopies; + SHORT dmDefaultSource; + SHORT dmPrintQuality; + SHORT dmColor; + SHORT dmDuplex; +} DEVMODE16; +typedef DEVMODE16 UNALIGNED *PDEVMODE16; +typedef VPVOID VPDEVMODE16; + +typedef struct _DEVMODE31 { /* dm31 */ + CHAR dmDeviceName[32]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + SHORT dmOrientation; + SHORT dmPaperSize; + SHORT dmPaperLength; + SHORT dmPaperWidth; + SHORT dmScale; + SHORT dmCopies; + SHORT dmDefaultSource; + SHORT dmPrintQuality; + SHORT dmColor; + SHORT dmDuplex; + SHORT dmYResolution; + SHORT dmTTOption; +} DEVMODE31; +typedef DEVMODE31 UNALIGNED *PDEVMODE31; +typedef VPVOID VPDEVMODE31; + +typedef struct _CREATESTRUCT16 { /* cws16 */ + VPBYTE vpCreateParams; + HAND16 hInstance; + HMENU16 hMenu; + HWND16 hwndParent; + SHORT cy; + SHORT cx; + SHORT y; + SHORT x; + DWORD dwStyle; + VPSZ vpszWindow; + VPSZ vpszClass; + DWORD dwExStyle; +} CREATESTRUCT16; +typedef CREATESTRUCT16 UNALIGNED *PCREATESTRUCT16; +typedef VPVOID VPCREATESTRUCT16; + +typedef struct _DRAWITEMSTRUCT16 { /* dis16 */ + WORD CtlType; + WORD CtlID; + WORD itemID; + WORD itemAction; + WORD itemState; + HWND16 hwndItem; + HDC16 hDC; + RECT16 rcItem; + DWORD itemData; +} DRAWITEMSTRUCT16; +typedef DRAWITEMSTRUCT16 UNALIGNED *PDRAWITEMSTRUCT16; +typedef VPVOID VPDRAWITEMSTRUCT16; + +typedef struct _MEASUREITEMSTRUCT16 { /* mis16 */ + WORD CtlType; + WORD CtlID; + WORD itemID; + WORD itemWidth; + WORD itemHeight; + DWORD itemData; +} MEASUREITEMSTRUCT16; +typedef MEASUREITEMSTRUCT16 UNALIGNED *PMEASUREITEMSTRUCT16; +typedef VPVOID VPMEASUREITEMSTRUCT16; + +typedef struct _DELETEITEMSTRUCT16 { /* des16 */ + WORD CtlType; + WORD CtlID; + WORD itemID; + HWND16 hwndItem; + DWORD itemData; +} DELETEITEMSTRUCT16; +typedef DELETEITEMSTRUCT16 UNALIGNED *PDELETEITEMSTRUCT16; +typedef VPVOID VPDELETEITEMSTRUCT16; + +typedef struct _COMPAREITEMSTRUCT16 { /* cis16 */ + WORD CtlType; + WORD CtlID; + HWND16 hwndItem; + WORD itemID1; + DWORD itemData1; + WORD itemID2; + DWORD itemData2; +} COMPAREITEMSTRUCT16; +typedef COMPAREITEMSTRUCT16 UNALIGNED *PCOMPAREITEMSTRUCT16; +typedef VPVOID VPCOMPAREITEMSTRUCT16; + +typedef struct _MDICREATESTRUCT16 { /* mcs16 */ + VPSZ vpszClass; + VPSZ vpszTitle; + HTASK16 hOwner; + SHORT x; + SHORT y; + SHORT cx; + SHORT cy; + LONG style; + LONG lParam; // app-defined stuff +} MDICREATESTRUCT16; +typedef MDICREATESTRUCT16 UNALIGNED *PMDICREATESTRUCT16; +typedef VPVOID VPMDICREATESTRUCT16; + + +typedef struct _WINDOWPOS16 { /* wp16 */ + HAND16 hwnd; + HAND16 hwndInsertAfter; + SHORT x; + SHORT y; + SHORT cx; + SHORT cy; + WORD flags; +} WINDOWPOS16; +typedef WINDOWPOS16 UNALIGNED *PWINDOWPOS16; +typedef VPVOID VPWINDOWPOS16; + +typedef struct _NCCALCSIZE_PARAMS16 { /* nccsz16 */ + RECT16 rgrc[3]; + WINDOWPOS16 UNALIGNED FAR *lppos; +} NCCALCSIZE_PARAMS16; +typedef NCCALCSIZE_PARAMS16 UNALIGNED *PNCCALCSIZE_PARAMS16; +typedef VPVOID VPNCCALCSIZE_PARAMS16; + +/* + * Used by Hook Procs. + */ + +typedef struct _EVENTMSG16 { /* evmsg16 */ + WORD message; + WORD paramL; + WORD paramH; + DWORD time; +} EVENTMSG16; +typedef EVENTMSG16 UNALIGNED *PEVENTMSG16; +typedef VPVOID VPEVENTMSG16; + +typedef struct _DEBUGHOOKINFO16 { /*dbgi16 */ + HTASK16 hModuleHook; + DWORD reserved; + DWORD lParam; + WORD wParam; + SHORT code; +} DEBUGHOOKINFO16; +typedef DEBUGHOOKINFO16 UNALIGNED *PDEBUGHOOKINFO16; +typedef VPVOID VPDEBUGHOOKINFO16; + +typedef struct _MOUSEHOOKSTRUCT16 { /* mhs16 */ + POINT16 pt; + HWND16 hwnd; + WORD wHitTestCode; + DWORD dwExtraInfo; +} MOUSEHOOKSTRUCT16; +typedef MOUSEHOOKSTRUCT16 UNALIGNED *PMOUSEHOOKSTRUCT16; +typedef VPVOID VPMOUSEHOOKSTRUCT16; + +typedef struct _CWPSTRUCT16 { /* cwps16 */ + LONG lParam; // + WORD wParam; // + WORD message; // + WORD hwnd; // +} CWPSTRUCT16; +typedef CWPSTRUCT16 UNALIGNED *PCWPSTRUCT16; +typedef VPVOID VPCWPSTRUCT16; + +typedef struct _CBT_CREATEWND16 { /* cbtcw16 */ + VPCREATESTRUCT16 vpcs; + HWND16 hwndInsertAfter; +} CBT_CREATEWND16; +typedef CBT_CREATEWND16 UNALIGNED *PCBT_CREATEWND16; +typedef VPVOID VPCBT_CREATEWND16; + +typedef struct _CBTACTIVATESTRUCT16 { /* cbtas16 */ + BOOL16 fMouse; + HWND16 hWndActive; +} CBTACTIVATESTRUCT16; +typedef CBTACTIVATESTRUCT16 UNALIGNED *PCBTACTIVATESTRUCT16; +typedef VPVOID VPCBTACTIVATESTRUCT16; + + +/* 16-bit resource structures, and their pointers + * + * Note that some are the same as the 32-bit definition (eg, menus) + */ + +typedef MENUITEMTEMPLATEHEADER MENUITEMTEMPLATEHEADER16; +typedef MENUITEMTEMPLATE MENUITEMTEMPLATE16; +typedef MENUITEMTEMPLATEHEADER16 *PMENUITEMTEMPLATEHEADER16; +typedef MENUITEMTEMPLATE16 *PMENUITEMTEMPLATE16; + +typedef struct _DLGTEMPLATE16 { /* dt16 */ + DWORD style; // + BYTE cdit; // this is a WORD in WIN32 + WORD x; // + WORD y; // + WORD cx; // + WORD cy; // + // CHAR szMenuName[]; // potential pad byte in WIN32 + // CHAR szClassName[]; // potential pad byte in WIN32 + // CHAR szCaptionText[]; // potential pad byte in WIN32 +} DLGTEMPLATE16; +typedef DLGTEMPLATE16 UNALIGNED *PDLGTEMPLATE16; +typedef VPVOID VPDLGTEMPLATE16; + +typedef struct _FONTINFO16 { /* fi16 */ + SHORT cPoints; // present if DS_SETFONT in dt16.style + // CHAR szTypeFace[]; // potential pad byte in WIN32 +} FONTINFO16; +typedef FONTINFO16 UNALIGNED *PFONTINFO16; +typedef VPVOID VPFONTINFO16; + +typedef struct _DLGITEMTEMPLATE16 { /* dit16 */ + WORD x; // structure dword-aligned in WIN32 + WORD y; // + WORD cx; // + WORD cy; // + WORD id; // + DWORD style; // this was moved to the top in WIN32 + // CHAR szClass[]; // potential pad byte in WIN32 + // CHAR szText[]; // potential pad byte in WIN32 + // BYTE cbExtra; // + // BYTE abExtra[]; // +} DLGITEMTEMPLATE16; +typedef DLGITEMTEMPLATE16 UNALIGNED *PDLGITEMTEMPLATE16; +typedef VPVOID VPDLGITEMTEMPLATE16; + +typedef struct _RESDIRHEADER16 { /* hdir16 */ + WORD reserved; // + WORD rt; // + WORD cResources; // pad word in WIN32 (for size == 8) +} RESDIRHEADER16; +typedef RESDIRHEADER16 UNALIGNED *PRESDIRHEADER16; +typedef VPVOID VPRESDIRHEADER16; + +typedef struct _ICONDIR16 { /* idir16 */ + BYTE Width; // 16, 32, 64 + BYTE Height; // 16, 32, 64 + BYTE ColorCount; // 2, 8, 16 + BYTE reserved; // +} ICONDIR16; +typedef ICONDIR16 UNALIGNED *PICONDIR16; +typedef VPVOID VPICONDIR16; + +typedef struct _CURSORDIR16 { /* cdir16 */ + WORD Width; // + WORD Height; // +} CURSORDIR16; +typedef CURSORDIR16 UNALIGNED *PCURSORDIR16; +typedef VPVOID VPCURSORDIR16; + +/* XLATOFF */ +typedef struct _RESDIR16 { /* rdir16 */ + union { // + ICONDIR16 Icon; // + CURSORDIR16 Cursor; // + } ResInfo; // + WORD Planes; // + WORD BitCount; // + DWORD BytesInRes; // + WORD idIcon; // pad word in WIN32 (for size == 16) +} RESDIR16; +typedef RESDIR16 UNALIGNED *PRESDIR16; +typedef VPVOID VPRESDIR16; + +typedef struct _COPYDATASTRUCT16 { + DWORD dwData; + DWORD cbData; + PVOID lpData; +} COPYDATASTRUCT16; +typedef COPYDATASTRUCT16 UNALIGNED *PCOPYDATASTRUCT16; +typedef VPVOID VPCOPYDATASTRUCT16; + +typedef struct _DROPSTRUCT16 { + HWND16 hwndSource; + HWND16 hwndSink; + WORD wFmt; + DWORD dwData; + POINT16 ptDrop; + DWORD dwControlData; +} DROPSTRUCT16; +typedef DROPSTRUCT16 UNALIGNED *PDROPSTRUCT16; +typedef VPVOID VPDROPSTRUCT16; + +typedef struct _DROPFILESTRUCT16 { + WORD pFiles; + SHORT x; + SHORT y; + BOOL16 fNC; +} DROPFILESTRUCT16; +typedef DROPFILESTRUCT16 UNALIGNED *PDROPFILESTRUCT16; +typedef VPVOID VPDROPFILESTRUCT16; + + +typedef BITMAPINFOHEADER ICONRESOURCE; +typedef ICONRESOURCE *PICONRESOURCE; +typedef BITMAPINFOHEADER16 ICONRESOURCE16; +typedef ICONRESOURCE16 UNALIGNED *PICONRESOURCE16; +typedef VPVOID VPICONRESOURCE16; + +typedef struct _CURSORRESOURCE { /* cres */ + WORD xHotspot; + WORD yHotspot; + BITMAPINFOHEADER bmih; +} CURSORRESOURCE; +typedef CURSORRESOURCE UNALIGNED *PCURSORRESOURCE; + +typedef CURSORRESOURCE CURSORRESOURCE16; +typedef CURSORRESOURCE16 UNALIGNED *PCURSORRESOURCE16; +typedef VPVOID VPCURSORRESOURCE16; + +// This describes the header of the old 2.x cursor/icon resource format; +// the header should be followed by an AND mask and then an XOR mask, where: +// +// Bit value Bit value Bit value Bit value +// AND Mask 0 0 1 1 +// XOR Mask 0 1 0 1 +// --------------------------------------------------------- +// Result Black White Transparent Inverted +// +// Note that we wouldn't have to worry about this old resource format if apps +// like WinWord (which apparently weren't fully converted to 3.x) didn't use it! -JTP + +typedef struct _OLDCURSORICONRESOURCE16 { /* oci16 */ + BYTE bFigure; // 1: cursor, 2: bitmap, 3: icon + BYTE bIndependent; // 0: device-dependent, 1: independent + SHORT xHotspot; // + SHORT yHotspot; // + SHORT cx; // x-extent + SHORT cy; // y-extent + SHORT cbWidth; // bytes per row (rows are word-aligned) + SHORT clr; // # color planes (should always be 0) +} OLDCURSORICONRESOURCE16; +typedef OLDCURSORICONRESOURCE16 UNALIGNED *POLDCURSORICONRESOURCE16; +typedef VPVOID VPOLDCURSORICONRESOURCE16; +/* XLATON */ + +/* XLATOFF */ +#pragma pack() +/* XLATON */ + + +/* Undocumented(?) window messages + */ +#define WM_SETVISIBLE 0x0009 +#define WM_ALTTABACTIVE 0x0029 +#define WM_ISACTIVEICON 0x0035 +#define WM_QUERYPARKICON 0x0036 +#define WM_SYNCPAINT 0x0088 +#define WM_SYSTIMER 0x0118 +#define WM_LBTRACKPOINT 0x0131 +#define WM_ENTERMENULOOP 0x0211 +#define WM_EXITMENULOOP 0x0212 +#define WM_NEXTMENU 0x0213 +#define WM_DROPOBJECT 0x022A +#define WM_QUERYDROPOBJECT 0x022B +#define WM_BEGINDRAG 0x022C +#define WM_DRAGLOOP 0x022D +#define WM_DRAGSELECT 0x022E +#define WM_DRAGMOVE 0x022F +#define WM_ENTERSIZEMOVE 0x0231 +#define WM_EXITSIZEMOVE 0x0232 + + +/* Old window messages (changed from Win 3.x) + */ +#ifndef WM_USER +#define WM_USER 0x0400 +#endif + +#define OLDEM_GETSEL (WM_USER+0) +#define OLDEM_SETSEL (WM_USER+1) +#define OLDEM_GETRECT (WM_USER+2) +#define OLDEM_SETRECT (WM_USER+3) +#define OLDEM_SETRECTNP (WM_USER+4) +#define OLDEM_SCROLL (WM_USER+5) +#define OLDEM_LINESCROLL (WM_USER+6) +#define OLDEM_GETMODIFY (WM_USER+8) +#define OLDEM_SETMODIFY (WM_USER+9) +#define OLDEM_GETLINECOUNT (WM_USER+10) +#define OLDEM_LINEINDEX (WM_USER+11) +#define OLDEM_SETHANDLE (WM_USER+12) +#define OLDEM_GETHANDLE (WM_USER+13) +#define OLDEM_GETTHUMB (WM_USER+14) +#define OLDEM_LINELENGTH (WM_USER+17) +#define OLDEM_REPLACESEL (WM_USER+18) +#define OLDEM_SETFONT (WM_USER+19) +#define OLDEM_GETLINE (WM_USER+20) +#define OLDEM_LIMITTEXT (WM_USER+21) +#define OLDEM_CANUNDO (WM_USER+22) +#define OLDEM_UNDO (WM_USER+23) +#define OLDEM_FMTLINES (WM_USER+24) +#define OLDEM_LINEFROMCHAR (WM_USER+25) +#define OLDEM_SETWORDBREAK (WM_USER+26) +#define OLDEM_SETTABSTOPS (WM_USER+27) +#define OLDEM_SETPASSWORDCHAR (WM_USER+28) +#define OLDEM_EMPTYUNDOBUFFER (WM_USER+29) +#ifndef WIN31 +#define OLDEM_MSGMAX (WM_USER+30) +#else +#define OLDEM_GETFIRSTVISIBLELINE (WM_USER+30) +#define OLDEM_SETREADONLY (WM_USER+31) +#define OLDEM_SETWORDBREAKPROC (WM_USER+32) +#define OLDEM_GETWORDBREAKPROC (WM_USER+33) +#define OLDEM_GETPASSWORDCHAR (WM_USER+34) +#define OLDEM_MSGMAX (WM_USER+35) +#endif + +#define OLDBM_GETCHECK (WM_USER+0) +#define OLDBM_SETCHECK (WM_USER+1) +#define OLDBM_GETSTATE (WM_USER+2) +#define OLDBM_SETSTATE (WM_USER+3) +#define OLDBM_SETSTYLE (WM_USER+4) + +#define OLDCB_GETEDITSEL (WM_USER+0) +#define OLDCB_LIMITTEXT (WM_USER+1) +#define OLDCB_SETEDITSEL (WM_USER+2) +#define OLDCB_ADDSTRING (WM_USER+3) +#define OLDCB_DELETESTRING (WM_USER+4) +#define OLDCB_DIR (WM_USER+5) +#define OLDCB_GETCOUNT (WM_USER+6) +#define OLDCB_GETCURSEL (WM_USER+7) +#define OLDCB_GETLBTEXT (WM_USER+8) +#define OLDCB_GETLBTEXTLEN (WM_USER+9) +#define OLDCB_INSERTSTRING (WM_USER+10) +#define OLDCB_RESETCONTENT (WM_USER+11) +#define OLDCB_FINDSTRING (WM_USER+12) +#define OLDCB_SELECTSTRING (WM_USER+13) +#define OLDCB_SETCURSEL (WM_USER+14) +#define OLDCB_SHOWDROPDOWN (WM_USER+15) +#define OLDCB_GETITEMDATA (WM_USER+16) +#define OLDCB_SETITEMDATA (WM_USER+17) +#define OLDCB_GETDROPPEDCONTROLRECT (WM_USER+18) +#ifndef WIN31 +#define OLDCB_MSGMAX (WM_USER+19) +#else +#define OLDCB_SETITEMHEIGHT (WM_USER+19) +#define OLDCB_GETITEMHEIGHT (WM_USER+20) +#define OLDCB_SETEXTENDEDUI (WM_USER+21) +#define OLDCB_GETEXTENDEDUI (WM_USER+22) +#define OLDCB_GETDROPPEDSTATE (WM_USER+23) +#define OLDCB_FINDSTRINGEXACT (WM_USER+24) +#define OLDCB_MSGMAX (WM_USER+25) /* ;Internal */ +#define OLDCBEC_SETCOMBOFOCUS (WM_USER+26) /* ;Internal */ +#define OLDCBEC_KILLCOMBOFOCUS (WM_USER+27) /* ;Internal */ +#endif + +#define OLDLB_ADDSTRING (WM_USER+1) +#define OLDLB_INSERTSTRING (WM_USER+2) +#define OLDLB_DELETESTRING (WM_USER+3) +#define OLDLB_RESETCONTENT (WM_USER+5) +#define OLDLB_SETSEL (WM_USER+6) +#define OLDLB_SETCURSEL (WM_USER+7) +#define OLDLB_GETSEL (WM_USER+8) +#define OLDLB_GETCURSEL (WM_USER+9) +#define OLDLB_GETTEXT (WM_USER+10) +#define OLDLB_GETTEXTLEN (WM_USER+11) +#define OLDLB_GETCOUNT (WM_USER+12) +#define OLDLB_SELECTSTRING (WM_USER+13) +#define OLDLB_DIR (WM_USER+14) +#define OLDLB_GETTOPINDEX (WM_USER+15) +#define OLDLB_FINDSTRING (WM_USER+16) +#define OLDLB_GETSELCOUNT (WM_USER+17) +#define OLDLB_GETSELITEMS (WM_USER+18) +#define OLDLB_SETTABSTOPS (WM_USER+19) +#define OLDLB_GETHORIZONTALEXTENT (WM_USER+20) +#define OLDLB_SETHORIZONTALEXTENT (WM_USER+21) +#define OLDLB_SETCOLUMNWIDTH (WM_USER+22) +#define OLDLB_ADDFILE (WM_USER+23) /* ;Internal */ +#define OLDLB_SETTOPINDEX (WM_USER+24) +#define OLDLB_GETITEMRECT (WM_USER+25) +#define OLDLB_GETITEMDATA (WM_USER+26) +#define OLDLB_SETITEMDATA (WM_USER+27) +#define OLDLB_SELITEMRANGE (WM_USER+28) +#define OLDLB_SETANCHORINDEX (WM_USER+29) /* ;Internal */ +#define OLDLB_GETANCHORINDEX (WM_USER+30) /* ;Internal */ +#ifndef WIN31 +#define OLDLB_MSGMAX (WM_USER+33) +#else +#define OLDLB_SETCARETINDEX (WM_USER+31) +#define OLDLB_GETCARETINDEX (WM_USER+32) +#define OLDLB_SETITEMHEIGHT (WM_USER+33) +#define OLDLB_GETITEMHEIGHT (WM_USER+34) +#define OLDLB_FINDSTRINGEXACT (WM_USER+35) +#define OLDLBCB_CARETON (WM_USER+36) /* ;Internal */ +#define OLDLBCB_CARETOFF (WM_USER+37) /* ;Internal */ +#define OLDLB_MSGMAX (WM_USER+38) /* ;Internal */ +#endif + +#define OLDSBM_SETPOS (WM_USER+0) +#define OLDSBM_GETPOS (WM_USER+1) +#define OLDSBM_SETRANGE (WM_USER+2) +#define OLDSBM_GETRANGE (WM_USER+3) +#define OLDSBM_ENABLEARROWS (WM_USER+4) + +/* WOW Return IDs - Ordering must match wow16cal.asm table + */ +#define RET_RETURN 0 // return to app + +#define RET_DEBUGRETURN 1 // return to app after breakpoint + +#define RET_DEBUG 2 // execute breakpoint, return to WOW + +#define RET_WNDPROC 3 // IN:all + // OUT:DX:AX=wndproc return code + +#define RET_ENUMFONTPROC 4 // IN:all + // OUT:DX:AX=wndproc return code + +#define RET_ENUMWINDOWPROC 5 // IN:all + // OUT:DX:AX=wndproc return code + +#define RET_LOCALALLOC 6 // IN:wParam=wFlags, lParam=wBytes + // OUT:AX=hMem (zero if error) + +#define RET_LOCALREALLOC 7 // IN:wMsg=hMem, wParam=wFlags, lParam=wBytes + // OUT:AX=hMem (zero if error) + +#define RET_LOCALLOCK 8 // IN:wParam=hMem + // OUT:DX:AX=address (zero if error), CX=size + +#define RET_LOCALUNLOCK 9 // IN:wParam=hMem + // OUT:AX=TRUE (FALSE if error) + +#define RET_LOCALSIZE 10 // IN:wParam=hMem + // OUT:AX=size (zero if error) + +#define RET_LOCALFREE 11 // IN:wParam=hMem + // OUT:AX=TRUE (FALSE if error) + +#define RET_GLOBALALLOCLOCK 12 // IN:wParam=wFlags, lParam=dwBytes + // OUT:DX:AX=address (zero if error), BX=hMem + +#define RET_GLOBALLOCK 13 // IN:wParam=hMem + // OUT:DX:AX=address (zero if error), CX=size + +#define RET_GLOBALUNLOCK 14 // IN:wParam=hMem + // OUT:AX=TRUE (FALSE if error) + +#define RET_GLOBALUNLOCKFREE 15 // IN:lParam=address + // OUT:AX=TRUE (FALSE if error) + +#define RET_FINDRESOURCE 16 // IN:wParam=hTask, lParam=vpName, hwnd/wMsg=vpType + // OUT:AX=hResInfo (zero if not found) + +#define RET_LOADRESOURCE 17 // IN:wParam=hTask, lParam=hResInfo + // OUT:AX=hResData + +#define RET_FREERESOURCE 18 // IN:wParam=hResData + // OUT:AX=TRUE (zero if failed) + +#define RET_LOCKRESOURCE 19 // IN:wParam=hResData + // OUT:DX:AX=address (zero if error), CX=size + +#define RET_UNLOCKRESOURCE 20 // IN:wParam=hResData + // OUT:AX=TRUE (zero if resource still locked) + +#define RET_SIZEOFRESOURCE 21 // IN:wParam=hTask, lParam=hResInfo + // OUT:DX:AX=size (zero if error) + +#define RET_LOCKSEGMENT 22 // IN:wParam=wSeg + // OUT:AX=TRUE (FALSE if error) + +#define RET_UNLOCKSEGMENT 23 // IN:wParam=wSeg + // OUT:AX=TRUE (zero if segment still locked) + +#define RET_ENUMMETAFILEPROC 24 // IN:all + // OUT:DX:AX=wndproc return cod + +#define RET_TASKSTARTED 25 // None + +#define RET_HOOKPROC 26 // IN:all + // OUT:DX:AX=hookproc return code + +#define RET_SUBCLASSPROC 27 // IN:None + // OUT: DX:AX=thunkproc return code +#define RET_LINEDDAPROC 28 + +#define RET_GRAYSTRINGPROC 29 + +#define RET_FORCETASKEXIT 30 // IN:None + // OUT: Does not return + +#define RET_SETCURDIR 31 // IN:Current Dir + // OUT: ax +#define RET_ENUMOBJPROC 32 // IN:all + // OUT:DX:AX=wndproc return code + +#define RET_SETCURSORICONFLAG 33 // IN: none + +#define RET_SETABORTPROC 34 + +#define RET_ENUMPROPSPROC 35 + +#define RET_FORCESEGMENTFAULT 36 // Make a segment present + + // 37 FREE + // 38 FREE + // 39 FREE + // 40 FREE + // 41 FREE + +#define RET_GETEXEPTR 42 // Call KRNL286:GetExePtr + + // 43 FREE + +#define RET_FORCETASKFAULT 44 // Force a Fault +#define RET_GETEXPWINVER 45 // Call KRNL286:GetExpWinVer +#define RET_GETCURDIR 46 // + +#define RET_GETDOSPDB 47 // IN: nothing + // OUT: DX:AX = DOS Win_PDB +#define RET_GETDOSSFT 48 // IN: nothing + // OUT: DX:AX = DOS SFT (pFileTable) +#define RET_FOREGROUNDIDLE 49 // IN: nothing + // OUT: NOTHING +#define RET_WINSOCKBLOCKHOOK 50 // IN: nothing + // OUT: DX:AX = BOOL ret value +#define RET_WOWDDEFREEHANDLE 51 + +#define RET_CHANGESELECTOR 52 // IN: wParam = Segment + +#define RET_GETMODULEFILENAME 53 // IN: wParam = hInst, lParam = 16:16 Buffer + // wMsg = cbBuffer + // OUT: AX = length of returned modulename + +#define RET_SETWORDBREAKPROC 54 // + +#define RET_WINEXEC 55 + +#define RET_WOWCALLBACK16 56 // Used by public WOWCallback16 routine + +#define RET_GETDIBSIZE 57 + +#define RET_GETDIBFLAGS 58 + +#define RET_SETDIBSEL 59 + +#define RET_FREEDIBSEL 60 + +#define RET_MAX 60 + + + + +/* Module IDs + * + * Module IDs are OR'ed with API IDs to produce Call IDs + */ +#define MOD_MASK 0xF000 +#define FUN_MASK 0x0FFF + +#define MOD_KERNEL 0x0000 +#define MOD_DKERNEL 0X0000 // for parameter validation layer +#define MOD_USER 0x1000 // +#define MOD_DUSER 0x1000 // for parameter validation layer +#define MOD_GDI 0x2000 // +#define MOD_DGDI 0x2000 // for parameter validation layer +#define MOD_KEYBOARD 0x3000 +#define MOD_SOUND 0x4000 +#define MOD_SHELL 0x5000 // SHELL APIs +#define MOD_WINSOCK 0x6000 +#define MOD_TOOLHELP 0x7000 +#define MOD_MMEDIA 0x8000 +#define MOD_COMMDLG 0x9000 +#define MOD_LAST 0xA000 // Add New Module ID before this one + + +/* Special Function IDs + * + * This is used by WIN16 whenever we are returning from a window proc; + * see the various include files (wowkrn.h, wowgdi.h, etc) for all the other + * function IDs. + */ +#define FUN_RETURN 0 + +/* + * hiword of wcallID in VDMFRAME - + */ + +#define HI_WCALLID 0x0000 + +/* Macros for WOW16 DLLs + * + * Note for GDIThunk args is the metafile function number + * and val denotes if function has a DC + * + */ + +/* ASM +Thunk macro mod,func,callfirst,args,val,emptybuf + ifidni <args>,<abs> + public func + ifb <val> + func = 0 + else + func = val + endif + else + externFP WOW16Call + externA __MOD_KERNEL + externA __MOD_DKERNEL + externA __MOD_USER + externA __MOD_DUSER + externA __MOD_GDI + externA __MOD_DGDI + externA __MOD_KEYBOARD + externA __MOD_SOUND + externA __MOD_SHELL + externA __MOD_WINSOCK + externA __MOD_TOOLHELP + externA __MOD_MMEDIA + externA __MOD_COMMDLG + + + + ifidni <mod>,<USER> + cProc I&func,<PUBLIC,FAR,PASCAL,NODATA,WIN> + + cBegin <nogen> + else + ifidni <mod>,<GDI> + cProc I&func,<PUBLIC,FAR,PASCAL,NODATA,WIN> + + cBegin <nogen> + else + ifidni <mod>,<KERNEL> + cProc I&func,<PUBLIC,FAR,PASCAL,NODATA,WIN> + + cBegin <nogen> + else + cProc func,<PUBLIC,FAR,PASCAL,NODATA,WIN> + + cBegin <nogen> + endif + endif + endif + + ; Make the passed in buffer into an empty string by writing null + ; to the first position. Win 3.1 IGetWindowText does this, and + ; WinFax Pro depends on this behaviour. + ifnb <emptybuf> + push bp + mov bp, sp + mov bx, [bp+8] + mov es, [bp+0Ah] + mov byte ptr es:[bx], 0 + pop bp + endif + + ifdifi <callfirst>,<0> + call callfirst + endif + + ifnb <args> + push args + else + ifdef func&16 + push size func&16 + else + if1 + %out Warning: assuming null arg frame for &mod:&func + endif + push 0 + endif + endif + tmplabel_&func: + + + push word ptr HI_WCALLID + push __MOD_&mod + FUN_&func + call WOW16Call + + ; assert that this is constant size code. 5bytes for 'call wow16call' + ; and 3bytes each for the 'push ...'. We use this info in wow32 + ; to patchcodewithlpfnw32. + + .erre (($ - tmplabel_&func) EQ (05h + 03h + 03h)) + + cEnd <nogen> + endif +endm + +KernelThunk macro func,args,val + Thunk KERNEL,func,0,args,val +endm + +DKernelThunk macro func,args,val + Thunk DKERNEL,func,0,args,val +endm + +PKernelThunk macro func,callfirst,args,val + Thunk KERNEL,func,callfirst,args,val +endm + +UserThunk macro func,args,val + Thunk USER,func,0,args,val +endm + +DUserThunk macro func,args,val + Thunk DUSER,func,0,args,val +endm + +PUserThunk macro func,callfirst,args,val + Thunk USER,func,callfirst,args,val +endm + +PDUserThunk macro func,callfirst,args,val + Thunk DUSER,func,callfirst,args,val +endm + +EUserThunk macro func,args,val + Thunk USER,func,0,args,val,0 +endm + +GDIThunk macro func,args,val + Thunk GDI,func,0,args,val +endm + +DGDIThunk macro func,args,val + Thunk DGDI,func,0,args,val +endm + +PGDIThunk macro func,callfirst,args,val + Thunk GDI,func,callfirst,args,val +endm + +KbdThunk macro func,args,val + Thunk KEYBOARD,func,0,args,val +endm + +SoundThunk macro func,args,val + Thunk SOUND,func,0,args,val +endm + +SHELLThunk macro func,args,val + Thunk SHELL,func,0,args,val +endm + +MMediaThunk macro func,args,val + Thunk MMEDIA,func,0,args,val +endm + +WinsockThunk macro func,args,val + Thunk WINSOCK,func,0,args,val +endm + +ToolHelpThunk macro func,args,val + Thunk TOOLHELP,func,0,args,val +endm + +CommdlgThunk macro func,args,val + Thunk COMMDLG,func,SetWowCommDlg,args,val +endm + + */ diff --git a/private/mvdm/inc/wowclip.h b/private/mvdm/inc/wowclip.h new file mode 100644 index 000000000..0c7a01b10 --- /dev/null +++ b/private/mvdm/inc/wowclip.h @@ -0,0 +1,28 @@ +/*++ BUILD Version: 0001 + * + * MVDM v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWCLIP.H + * + * History: + * 09-22-92 Craig Jones (v-cjones) + * Created. +--*/ + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +typedef struct tagMETAFILEPICT16 { /* mfp16wow32 */ + WORD mm; + WORD xExt; + WORD yExt; + HMEM16 hMF; +} METAFILEPICT16; +typedef METAFILEPICT16 UNALIGNED *LPMETAFILEPICT16; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ diff --git a/private/mvdm/inc/wowcmdlg.h b/private/mvdm/inc/wowcmdlg.h new file mode 100644 index 000000000..144aafc52 --- /dev/null +++ b/private/mvdm/inc/wowcmdlg.h @@ -0,0 +1,198 @@ +/*++ BUILD Version: 0001 + * + * WOW v1.0 + * + * Copyright (c) 1993, Microsoft Corporation + * + * WOWCMDLG.H + * 16-bit Commdlg API argument structures + * + * History: + * John Vert (jvert) 30-Dec-1992 + * Created +--*/ + +//#include <windows.h> +//#include <winsock.h> + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +/*++ + * + * Commdlg data structures + * +--*/ + +typedef struct _FINDREPLACE16 { /* fr16 */ + DWORD lStructSize; + HWND16 hwndOwner; + HAND16 hInstance; + DWORD Flags; + VPSZ lpstrFindWhat; + VPSZ lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LONG lCustData; + VPPROC lpfnHook; + VPCSTR lpTemplateName; +} FINDREPLACE16; +typedef FINDREPLACE16 UNALIGNED *PFINDREPLACE16; +typedef VPVOID VPFINDREPLACE; + +typedef struct _OPENFILENAME16 { /* of16 */ + DWORD lStructSize; + HWND16 hwndOwner; + HAND16 hInstance; + VPCSTR lpstrFilter; + VPSZ lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + VPSZ lpstrFile; + DWORD nMaxFile; + VPSZ lpstrFileTitle; + DWORD nMaxFileTitle; + VPCSTR lpstrInitialDir; + VPCSTR lpstrTitle; + DWORD Flags; + USHORT nFileOffset; + USHORT nFileExtension; + VPCSTR lpstrDefExt; + LONG lCustData; + VPPROC lpfnHook; + VPCSTR lpTemplateName; +} OPENFILENAME16; +typedef OPENFILENAME16 UNALIGNED *POPENFILENAME16; +typedef VPVOID VPOPENFILENAME; + +typedef struct _CHOOSECOLORDATA16 { /* cc16 */ + DWORD lStructSize; + HWND16 hwndOwner; + HAND16 hInstance; + DWORD rgbResult; + VPDWORD lpCustColors; + DWORD Flags; + LONG lCustData; + VPPROC lpfnHook; + VPCSTR lpTemplateName; +} CHOOSECOLORDATA16; +typedef CHOOSECOLORDATA16 UNALIGNED *PCHOOSECOLORDATA16; +typedef VPVOID VPCHOOSECOLORDATA; + +typedef struct _CHOOSEFONTDATA16 { /* cf16 */ + DWORD lStructSize; + HWND16 hwndOwner; + HDC16 hDC; + VPLOGFONT16 lpLogFont; + SHORT iPointSize; + DWORD Flags; + DWORD rgbColors; + LONG lCustData; + VPPROC lpfnHook; + VPCSTR lpTemplateName; + HAND16 hInstance; + VPSZ lpszStyle; + WORD nFontType; + SHORT nSizeMin; + SHORT nSizeMax; +} CHOOSEFONTDATA16; +typedef CHOOSEFONTDATA16 UNALIGNED *PCHOOSEFONTDATA16; +typedef VPVOID VPCHOOSEFONTDATA; + +typedef struct _PRINTDLGDATA16 { /* pd16 */ + DWORD lStructSize; + HWND16 hwndOwner; + HAND16 hDevMode; + HAND16 hDevNames; + HDC16 hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HAND16 hInstance; + LONG lCustData; + VPPROC lpfnPrintHook; + VPPROC lpfnSetupHook; + VPCSTR lpPrintTemplateName; + VPCSTR lpSetupTemplateName; + HAND16 hPrintTemplate; + HAND16 hSetupTemplate; +} PRINTDLGDATA16; +typedef PRINTDLGDATA16 UNALIGNED *PPRINTDLGDATA16; +typedef VPVOID VPPRINTDLGDATA; + +typedef struct _DEVNAMES16 { /* dn16 */ + WORD wDriverOffset; + WORD wDeviceOffset; + WORD wOutputOffset; + WORD wDefault; +} DEVNAMES16; +typedef DEVNAMES16 UNALIGNED *PDEVNAMES16; +typedef VPVOID VPDEVNAMES; + +/*++ + * + * Commdlg API IDs (equal to ordinal numbers) + * +--*/ +#define FUN_GETOPENFILENAME 1 +#define FUN_GETSAVEFILENAME 2 +#define FUN_CHOOSECOLOR 5 +#define FUN_FINDTEXT 11 +#define FUN_REPLACETEXT 12 +#define FUN_CHOOSEFONT 15 +#define FUN_PRINTDLG 20 +#define FUN_WOWCOMMDLGEXTENDEDERROR 26 +#define FUN_GETFILETITLE 27 + + +/*++ + + Commdlg function prototypes - the seemingly unimportant number in the + comment on each function MUST match the ones in the list above!!! + + !! BE WARNED !! + +--*/ + +typedef struct _GETOPENFILENAME16 { /* cd1 */ + VPOPENFILENAME lpof; +} GETOPENFILENAME16; +typedef GETOPENFILENAME16 UNALIGNED *PGETOPENFILENAME16; + +typedef struct _GETSAVEFILENAME16 { /* cd2 */ + VPOPENFILENAME lpcf; +} GETSAVEFILENAME16; +typedef GETSAVEFILENAME16 UNALIGNED *PGETSAVEFILENAME16; + +typedef struct _CHOOSECOLOR16 { /* cd5 */ + VPCHOOSECOLORDATA lpcc; +} CHOOSECOLOR16; +typedef CHOOSECOLOR16 UNALIGNED *PCHOOSECOLOR16; + +typedef struct _FINDTEXT16 { /* cd11 */ + VPFINDREPLACE lpfr; +} FINDTEXT16; +typedef FINDTEXT16 UNALIGNED *PFINDTEXT16; + +typedef struct _REPLACETEXT16 { /* cd12 */ + VPFINDREPLACE lpfr; +} REPLACETEXT16; +typedef REPLACETEXT16 UNALIGNED *PREPLACETEXT16; + +typedef struct _CHOOSEFONT16 { /* cd15 */ + VPCHOOSEFONTDATA lpcf; +} CHOOSEFONT16; +typedef CHOOSEFONT16 UNALIGNED *PCHOOSEFONT16; + +typedef struct _PRINTDLG16 { /* cd20 */ + VPPRINTDLGDATA lppd; +} PRINTDLG16; +typedef PRINTDLG16 UNALIGNED *PPRINTDLG16; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ diff --git a/private/mvdm/inc/wowcmpat.h b/private/mvdm/inc/wowcmpat.h new file mode 100644 index 000000000..3862bc6ef --- /dev/null +++ b/private/mvdm/inc/wowcmpat.h @@ -0,0 +1,80 @@ +/*++ BUILD Version: 0001 + * + * MVDM v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWCMPAT.H + * WOW compatibility flags + * + * History: + * 11-June-1993 Neil Sandlin (neilsa) + * Created. +--*/ + +// +// WOW compatibility flags bit definitions. These flags +// are kept in CURRENTPTD->dwWOWCompatFlags. +// + +#define WOWCF_GRAINYTICS 0x80000000 // For apps that don't trust small GetTickCount deltas +#define WOWCF_FAKEJOURNALRECORDHOOK 0x40000000 // Used for MS Mail's MAILSPL +#define WOWCF_EDITCTRLWNDWORDS 0x20000000 // Used for Clip-Art Window Shopper SHOPPER +#define WOWCF_SYNCHRONOUSDOSAPP 0x10000000 // Used for BeyondMail installation +#define WOWCF_NOTDOSSPAWNABLE 0x08000000 // For apps that can't be spawned by dos as wowapps +#define WOWCF_RESETPAPER29ANDABOVE 0x04000000 // Used for WordPerfect DC_PAPERS +#define WOWCF_4PLANECONVERSION 0x02000000 // Used for PhotoShop 4pl-1bpp to 1pl-4bpp +#define WOWCF_MGX_ESCAPES 0x01000000 // Used for MicroGraphax Escapes +#define WOWCF_HIRES 0x00800000 // Used for HIRES display cards +#define WOWCF_SANITIZEDOTWRSFILES 0x00400000 // For WordPerfect printing on CONNECTED printers +#define WOWCF_SIMPLEREGION 0x00200000 // used to force simple region from GetClipBox +#define WOWCF_NOWAITFORINPUTIDLE 0x00100000 // InstallShield setup toolkit 3.00.077?.0 - 3.00.099.0 deadlock without this +#define WOWCF_DSBASEDSTRINGPOINTERS 0x00080000 // used for winworks2.0a so that it gets DS based string pointers +#define WOWCF_LIMIT_MEM_FREE_SPACE 0x00040000 // For apps that can't handle huge values returned by GetFreeSpace() (Automap Streets) +#define WOWCF_DONTRELEASECACHEDDC 0x00020000 // improv chart tool uses a released dc to get text extents, the dc is still usable on win3.1 +#define WOWCF_FORCETWIPSESCAPE 0x00010000 // PM5, force twips in Escape() of DOWNLOADFACE, GETFACENAME +#define WOWCF_LB_NONNULLLPARAM 0x00008000 // SuperProject: sets lParam of LB_GETTEXLEN message +#define WOWCF_FORCENOPOSTSCRIPT 0x00004000 // GetTechnology wont say PostScript. +#define WOWCF_SETNULLMESSAGE 0x00002000 // Winproj Tutorial: sets lpmsg->message = 0 in peekmessage +#define WOWCF_GWLINDEX2TO4 0x00001000 // PowerBuild30 uses index 2 on [S/G]etWindowLong for LISTBOXs, change it to 4 for NT. This is because, it is 16 bits on Win 31. and 32 bits on NT. +#define WOWCF_NEEDSTARTPAGE 0x00000800 // PhotoShop needs it +#define WOWCF_NEEDIGNORESTARTPAGE 0x00000400 // XPress needs it +#define WOWCF_NOPC_RECTANGLE 0x00000200 // QP draws bad if GetDeviceCaps(POLYGONALCAPS) sets PC_RECTANGLE +#define WOWCF_NOFIRSTSAVE 0x00000100 // Wordperfect needs it for meta files +#define WOWCF_ADD_MSTT 0x00000080 // FH4.0 needs to print on PS drivers +#define WOWCF_UNLOADNETFONTS 0x00000040 // Need to track an unload font loaded over net +#define WOWCF_GETDUMMYDC 0x00000020 // Corel Draw passes a NULL hDC to EnumMetaFile, we'll create a dummy to keep GDI32 happy. +#define WOWCF_DBASEHANDLEBUG 0x00000010 // Borland dBase handle bug +#define WOWCF_NOCBDIRTHUNK 0x00000008 // don't thunk CB_DIR lParam when sent to a subclassed window in PagePlus 3.0 +#define WOWCF_WMMDIACTIVATEBUG 0x00000004 // Corel Chart doesn't pass correct params for WM_MDIACTIVATE (see ThunkWMMsg16()) +#define WOWCF_UNIQUEHDCHWND 0x00000002 // For apps that assume that an hDC != hWnd +#define WOWCF_GWLCLRTOPMOST 0x00000001 // Lotus Approach needs the WS_EX_TOPMOST bit cleared on GWL of NETDDE AGENT window + + + +// Extra WOW compatibility flags bit definitions (WOWCFEX_). These flags +// are kept in CURRENTPTD->dwWOWCompatFlagsEx. +// + +#define WOWCFEX_SENDPOSTEDMSG 0x80000000 // Lotus MM Reader.exe has message synchronization problem -- used to convert PostMessage() calls to SendMessage() +#define WOWCFEX_BOGUSPOINTER 0x40000000 // QuarkExpress v3.31 passes a hard coded 7FFF:0000 as the pointer to a RECT struct in an EM_GETRECT message +#define WOWCFEX_GETVERSIONHACK 0x20000000 // Set for programs we *may* wish to return 3.95 from GetVersion for. WK32WowShouldWeSayWin95 restricts this further. +#define WOWCFEX_FIXDCFONT4MENUSIZE 0x10000000 // WP tutorial assumes that the font used to draw the menus is the same as the font selected into the hDc for the desktop window (hwnd == 0). This hack forces the use of the correct hDC. +#define WOWCFEX_RESTOREEXPLORER 0x08000000 // Symantec Q&A Install "restores" shell= by restoring saved copy of system.ini, fix it to explorer.exe +#define WOWCFEX_LONGWINEXECTAIL 0x04000000 // Intergraph Transcend setup uses too-long command tail with WinExec, don't fail if this flag is set. +#define WOWCFEX_FORCEINCDPMI 0x02000000 // Power Builder 4.0 needs to see DPMI alloc's with ever increasing linear address's. +#define WOWCFEX_SETCAPSTACK 0x01000000 // MS Works has unintialized variable. Hack stack to work around it. +#define WOWCFEX_NODIBSHERE 0x00800000 // PhotoShop 2.5 has bug getting DIB's from clipboard +#define WOWCFEX_PIXELMETRICS 0x00400000 // Freelance Tutorial, BorderWidth: winini metrics should be returned as pixels, not TWIPS +#define WOWCFEX_DEFWNDPROCNCCALCSIZE 0x00200000 // Pass WM_NCCALCSIZE to DefWindowProc for Mavis Beacon so USER 32 will set corect window flags. +#define WOWCFEX_DIBDRVIMAGESIZEZERO 0x00100000 // Return memory DC for dib.drv biSizeImage == 0 - Director 4.01 +#define WOWCFEX_GLOBALDELETEATOM 0x00080000 // For Envoy viewer that ships with Word perfect office +#define WOWCFEX_IGNORECLIENTSHUTDOWN 0x00040000 // TurboCAD picks up saved 32-bit FS (x3b) and passes it as msg to DefFrameProc +#define WOWCFEX_ZAPGPPSDEFBLANKS 0x00020000 // Peachtree Accounting depends on GetPrivateProfileString zapping trailing blanks in caller's lpszDefault. +#define WOWCFEX_FAKECLASSINFOFAIL 0x00010000 // A bug in PageMaker 50a depends on the GetClassInfo failing in Win3.1 where it succeeds on NT +#define WOWCFEX_SAMETASKFILESHARE 0x00008000 // Broderbund Living Books install opens "install.txt" DENY ALL, and then tries to open it again +#define WOWCFEX_SAYITSNOTTHERE 0x00004000 // CrossTalk 2.2 hangs if it finds Printer/Device entry in xtalk.ini +#define WOWCFEX_BROKENFLATPOINTER 0x00002000 // Adobe Premiere 4.0 has a bug in its aliasing code which can touch unallocated memory + +// Note: This was put at 0x00000001 because it was back ported to 3.51 SP5 +#define WOWCFEX_FORMFEEDHACK 0x00000001 // For apps that send a final form feed char to printer via Escape(PASSTHROUGH) diff --git a/private/mvdm/inc/wowcomm.h b/private/mvdm/inc/wowcomm.h new file mode 100644 index 000000000..0490fef91 --- /dev/null +++ b/private/mvdm/inc/wowcomm.h @@ -0,0 +1,95 @@ +/*++ BUILD Version: 0002 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWCOMM.H + * Constants, macros, etc common to WOW16/WOW32 + * + * History: + * Created 28-Apr-1993 by Craig Jones (v-cjones) + * +--*/ +#ifndef __WOWCOMM__ // has this been included before? +#define __WOWCOMM__ + +#ifndef UNALIGNED // this makes UNALIGNED visible only to 32-bit stuff +#define UNALIGNED // and invisible to 16-bit stuff +#endif + +/* XLATOFF */ +#pragma pack(1) +/* XLATON */ + +// COMDEB - Communications Device Equipment Block. (copied from ibmcom.inc) +// +// This is essentially a superset of the DCB used outside of this +// module. The DCB is contained within the DEB as the first fields. +// The fields which follow are data and status fields which +// are unique to this implementation. +// +// AltQInAddr and AltQOutAddr are alternate queue pointers which are used when +// in "supervisor" mode. Supervisor mode is a processor mode other than the +// one which Windows normally runs in. In standard mode Windows, supervisor +// mode is REAL mode. In enhanced mode Windows, supervisor mode is RING 0 +// protected mode. For more details see comments in IBMINT.ASM. + +// RS232 Data Equip Block +typedef struct _COMDEB16 { /* cdeb16 */ + BYTE ComDCB; // size of this struct + WORD ComErr; // Non-zero if I/O error + WORD Port; // Base I/O Address + WORD NotifyHandle; + WORD NotifyFlags; + WORD RecvTrigger; // char count threshold for calling + WORD SendTrigger; // char count threshold for calling + +// The following fields are specific to com ports only + WORD IRQhook; // ptr to IRQ_Hook_Struc + WORD NextDEB; // ptr to next DEB that is sharing IRQ + WORD XOffPoint; // Q count where XOff is sent + WORD EvtMask; // Mask of events to check for + WORD EvtWord; // Event flags + DWORD QInAddr; // Address of the queue + DWORD AltQInAddr; // Addr of queue in "supervisor" mode + WORD QInSize; // Length of queue in bytes + DWORD QOutAddr; // Address of the queue + DWORD AltQOutAddr; // Addr of queue in "supervisor" mode + WORD QOutSize; // Length of queue in bytes + WORD QInCount; // Number of bytes currently in queue + WORD QInGet; // Offset into queue to get bytes from + WORD QInPut; // Offset into queue to put bytes in + WORD QOutCount; // Number of bytes currently in queue + WORD QOutGet; // Offset into queue to get bytes from + WORD QOutPut; // Offset into queue to put bytes in + BYTE EFlags; // Extended flags + BYTE MSRShadow; // Modem Status Register Shadow + BYTE ErrorMask; // Default error-checking mask + BYTE RxMask; // Character mask + BYTE ImmedChar; // Char to be transmitted immediately + BYTE HSFlag; // Handshake flag + BYTE HHSLines; // 8250 DTR/RTS bits for handshaking + BYTE OutHHSLines; // Lines that must be high to output + BYTE MSRMask; // Mask of Modem Lines to check + BYTE MSRInfinite; // Mask of MSR lines that must be high + BYTE IntVecNum; // Interrupt vector number + BYTE LSRShadow; // Line Status Register shadow + WORD QOutMod; // Characters sent mod xOnLim ENQ/ETX [rkh] + DWORD VCD_data; + BYTE VCDflags; + BYTE MiscFlags; // still more flags +} COMDEB16; +typedef COMDEB16 UNALIGNED *PCOMDEB16; + +// In 3.0 MSRShadow had this relationship to EvtWord and major COM apps all +// use this offset of 35 to get to MSRShadow so that they can determine the +// current status of the Modem Status bits. We need to maintain this offset +// so that these apps will continue to run. + +/* XLATOFF */ +#pragma pack() +/* XLATON */ + +#endif // __WOWCOMM__ + diff --git a/private/mvdm/inc/wowddeml.h b/private/mvdm/inc/wowddeml.h new file mode 100644 index 000000000..2538ad4ac --- /dev/null +++ b/private/mvdm/inc/wowddeml.h @@ -0,0 +1,262 @@ +/*++ BUILD Version: 0001 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWDDEML.H + * 16-bit DDEML API argument structures + * + * History: + * Created 28-Dec-1992 by Chandan S. Chauhan (ChandanC) + * +--*/ + +/* DDEML API IDs + */ +#define FUN_DDEINITIALIZE 2 +#define FUN_DDEUNINITIALIZE 3 +#define FUN_DDECONNECTLIST 4 +#define FUN_DDEQUERYNEXTSERVER 5 +#define FUN_DDEDISCONNECTLIST 6 +#define FUN_DDECONNECT 7 +#define FUN_DDEDISCONNECT 8 +#define FUN_DDEQUERYCONVINFO 9 +#define FUN_DDESETUSERHANDLE 10 +#define FUN_DDECLIENTTRANSACTION 11 +#define FUN_DDEABANDONTRANSACTION 12 +#define FUN_DDEPOSTADVISE 13 +#define FUN_DDECREATEDATAHANDLE 14 +#define FUN_DDEADDDATA 15 +#define FUN_DDEGETDATA 16 +#define FUN_DDEACCESSDATA 17 +#define FUN_DDEUNACCESSDATA 18 +#define FUN_DDEFREEDATAHANDLE 19 +#define FUN_DDEGETLASTERROR 20 +#define FUN_DDECREATESTRINGHANDLE 21 +#define FUN_DDEFREESTRINGHANDLE 22 +#define FUN_DDEQUERYSTRING 23 +#define FUN_DDEKEEPSTRINGHANDLE 24 + +#define FUN_DDEENABLECALLBACK 26 +#define FUN_DDENAMESERVICE 27 + +#define FUN_CLIENTWNDPROC 28 ;Internal +#define FUN_SERVERWNDPROC 29 ;Internal +#define FUN_SUBFRAMEWNDPROC 30 ;Internal +#define FUN_DMGWNDPROC 31 ;Internal +#define FUN_CONVLISTWNDPROC 32 ;Internal +#define FUN_MONITORWNDPROC 33 ;Internal +#define FUN_DDESENDHOOKPROC 34 ;Internal +#define FUN_DDEPOSTHOOKPROC 35 ;Internal + +#define FUN_DDECMPSTRINGHANDLES 36 +#define FUN_DDERECONNECT 37 + +#define FUN_INITENUM 38 ;Internal +#define FUN_TERMDLGPROC 39 ;Internal +#define FUN_EmptyQTimerProc 40 ;Internal + + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +typedef struct _CONVCONTEXT16 { /* di2 */ + WORD cb; + WORD wFlags; + WORD wCountryID; + INT16 iCodePage; + DWORD dwLangID; + DWORD dwSecurity; +} CONVCONTEXT16; +typedef CONVCONTEXT16 UNALIGNED *PCONVCONTEXT16; +typedef VPVOID VPCONVCONTEXT16; + +typedef struct _DDEINITIALIZE16 { /* d2 */ + DWORD f4; + DWORD f3; + VPVOID f2; + VPVOID f1; +} DDEINITIALIZE16; +typedef DDEINITIALIZE16 UNALIGNED *PDDEINITIALIZE16; + +typedef struct _DDEUNINITIALIZE16 { /* d3 */ + DWORD f1; +} DDEUNINITIALIZE16; +typedef DDEUNINITIALIZE16 UNALIGNED *PDDEUNINITIALIZE16; + +typedef struct _DDECONNECTLIST16 { /* d4 */ + VPVOID f5; + DWORD f4; + DWORD f3; + DWORD f2; + DWORD f1; +} DDECONNECTLIST16; +typedef DDECONNECTLIST16 UNALIGNED *PDDECONNECTLIST16; + +typedef struct _DDEQUERYNEXTSERVER16 { /* d5 */ + DWORD f2; + DWORD f1; +} DDEQUERYNEXTSERVER16; +typedef DDEQUERYNEXTSERVER16 UNALIGNED *PDDEQUERYNEXTSERVER16; + +typedef struct _DDEDISCONNECTLIST16 { /* d6 */ + DWORD f1; +} DDEDISCONNECTLIST16; +typedef DDEDISCONNECTLIST16 UNALIGNED *PDDEDISCONNECTLIST16; + +typedef struct _DDECONNECT16 { /* d7 */ + VPVOID f4; + DWORD f3; + DWORD f2; + DWORD f1; +} DDECONNECT16; +typedef DDECONNECT16 UNALIGNED *PDDECONNECT16; + +typedef struct _DDEDISCONNECT16 { /* d8 */ + DWORD f1; +} DDEDISCONNECT16; +typedef DDEDISCONNECT16 UNALIGNED *PDDEDISCONNECT16; + +typedef struct _DDEQUERYCONVINFO16 { /* d9 */ + VPVOID f3; + DWORD f2; + DWORD f1; +} DDEQUERYCONVINFO16; +typedef DDEQUERYCONVINFO16 UNALIGNED *PDDEQUERYCONVINFO16; + +typedef struct _DDESETUSERHANDLE16 { /* d10 */ + DWORD f3; + DWORD f2; + DWORD f1; +} DDESETUSERHANDLE16; +typedef DDESETUSERHANDLE16 UNALIGNED *PDDESETUSERHANDLE16; + +typedef struct _DDECLIENTTRANSACTION16 { /* d11 */ + VPVOID f8; + DWORD f7; + WORD f6; + WORD f5; + DWORD f4; + DWORD f3; + DWORD f2; + VPVOID f1; +} DDECLIENTTRANSACTION16; +typedef DDECLIENTTRANSACTION16 UNALIGNED *PDDECLIENTTRANSACTION16; + +typedef struct _DDEABANDONTRANSACTION16 { /* d12 */ + DWORD f3; + DWORD f2; + DWORD f1; +} DDEABANDONTRANSACTION16; +typedef DDEABANDONTRANSACTION16 UNALIGNED *PDDEABANDONTRANSACTION16; + +typedef struct _DDEPOSTADVISE16 { /* d13 */ + DWORD f3; + DWORD f2; + DWORD f1; +} DDEPOSTADVISE16; +typedef DDEPOSTADVISE16 UNALIGNED *PDDEPOSTADVISE16; + +typedef struct _DDECREATEDATAHANDLE16 { /* d14 */ + WORD f7; + WORD f6; + DWORD f5; + DWORD f4; + DWORD f3; + VPVOID f2; + DWORD f1; +} DDECREATEDATAHANDLE16; +typedef DDECREATEDATAHANDLE16 UNALIGNED *PDDECREATEDATAHANDLE16; + +typedef struct _DDEADDDATA16 { /* d15 */ + DWORD f4; + DWORD f3; + VPVOID f2; + DWORD f1; +} DDEADDDATA16; +typedef DDEADDDATA16 UNALIGNED *PDDEADDDATA16; + +typedef struct _DDEGETDATA16 { /* d16 */ + DWORD f4; + DWORD f3; + VPVOID f2; + DWORD f1; +} DDEGETDATA16; +typedef DDEGETDATA16 UNALIGNED *PDDEGETDATA16; + +typedef struct _DDEACCESSDATA16 { /* d17 */ + VPVOID f2; + DWORD f1; +} DDEACCESSDATA16; +typedef DDEACCESSDATA16 UNALIGNED *PDDEACCESSDATA16; + +typedef struct _DDEUNACCESSDATA16 { /* d18 */ + DWORD f1; +} DDEUNACCESSDATA16; +typedef DDEUNACCESSDATA16 UNALIGNED *PDDEUNACCESSDATA16; + +typedef struct _DDEFREEDATAHANDLE16 { /* d19 */ + DWORD f1; +} DDEFREEDATAHANDLE16; +typedef DDEFREEDATAHANDLE16 UNALIGNED *PDDEFREEDATAHANDLE16; + +typedef struct _DDEGETLASTERROR16 { /* d20 */ + DWORD f1; +} DDEGETLASTERROR16; +typedef DDEGETLASTERROR16 UNALIGNED *PDDEGETLASTERROR16; + +typedef struct _DDECREATESTRINGHANDLE16 { /* d21 */ + INT16 f3; + VPVOID f2; + DWORD f1; +} DDECREATESTRINGHANDLE16; +typedef DDECREATESTRINGHANDLE16 UNALIGNED *PDDECREATESTRINGHANDLE16; + +typedef struct _DDEFREESTRINGHANDLE16 { /* d22 */ + DWORD f2; + DWORD f1; +} DDEFREESTRINGHANDLE16; +typedef DDEFREESTRINGHANDLE16 UNALIGNED *PDDEFREESTRINGHANDLE16; + +typedef struct _DDEQUERYSTRING16 { /* d23 */ + INT16 f5; + DWORD f4; + VPVOID f3; + DWORD f2; + DWORD f1; +} DDEQUERYSTRING16; +typedef DDEQUERYSTRING16 UNALIGNED *PDDEQUERYSTRING16; + +typedef struct _DDEKEEPSTRINGHANDLE16 { /* d24 */ + DWORD f2; + DWORD f1; +} DDEKEEPSTRINGHANDLE16; +typedef DDEKEEPSTRINGHANDLE16 UNALIGNED *PDDEKEEPSTRINGHANDLE16; + +typedef struct _DDEENABLECALLBACK16 { /* d26 */ + WORD f3; + DWORD f2; + DWORD f1; +} DDEENABLECALLBACK16; +typedef DDEENABLECALLBACK16 UNALIGNED *PDDEENABLECALLBACK16; + +typedef struct _DDENAMESERVICE16 { /* d27 */ + WORD f4; + DWORD f3; + DWORD f2; + DWORD f1; +} DDENAMESERVICE16; +typedef DDENAMESERVICE16 UNALIGNED *PDDENAMESERVICE16; + +typedef struct _DDECMPSTRINGHANDLES16 { /* d36 */ + DWORD f2; + DWORD f1; +} DDECMPSTRINGHANDLES16; +typedef DDECMPSTRINGHANDLES16 UNALIGNED *PDDECMPSTRINGHANDLES16; + +typedef struct _DDERECONNECT16 { /* d37 */ + DWORD f1; +} DDERECONNECT16; +typedef DDERECONNECT16 UNALIGNED *PDDERECONNECT16; diff --git a/private/mvdm/inc/wowexp.h b/private/mvdm/inc/wowexp.h new file mode 100644 index 000000000..be7b805ab --- /dev/null +++ b/private/mvdm/inc/wowexp.h @@ -0,0 +1,15 @@ +/*++ BUILD Version: 0001 + * + * MVDM v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWEXP.H + * WOW32 exports + * + * History: + * 10-May-1991 Jeff Parsons (jeffpar) + * Created. +--*/ + +extern VOID FAR PASCAL W32Dispatch(VOID); 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 + + diff --git a/private/mvdm/inc/wowgdi.h b/private/mvdm/inc/wowgdi.h new file mode 100644 index 000000000..a81fa770b --- /dev/null +++ b/private/mvdm/inc/wowgdi.h @@ -0,0 +1,1926 @@ +/*++ BUILD Version: 0001 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWGDI.H + * 16-bit GDI API argument structures + * + * History: + * Created 02-Feb-1991 by Jeff Parsons (jeffpar) + * Added Win 31 19-March-1992 Chandan S. Chauhan (ChandanC) + * +--*/ + + +/* GDI API IDs + */ +#define FUN_ADDFONTRESOURCE 119 // +#define FUN_ANIMATEPALETTE 367 // +#define FUN_ARC 23 // +#define FUN_BITBLT 34 // +#define FUN_BRUTE 213 // No proto +#define FUN_CHORD 348 // +#define FUN_CLOSEJOB 243 // No proto +#define FUN_CLOSEMETAFILE 126 // +#define FUN_COMBINERGN 47 // +#define FUN_COMPATIBLEBITMAP 157 // Internal +#define FUN_COPY 250 // Internal +#define FUN_COPYMETAFILE 151 // +#define FUN_CREATEBITMAP 48 // +#define FUN_CREATEBITMAPINDIRECT 49 // +#define FUN_CREATEBRUSHINDIRECT 50 // +#define FUN_CREATECOMPATIBLEBITMAP 51 // +#define FUN_CREATECOMPATIBLEDC 52 // +#define FUN_CREATEDC 53 // +#define FUN_CREATEDIBITMAP 442 // +#define FUN_CREATEDIBPATTERNBRUSH 445 // +#define FUN_CREATEDISCARDABLEBITMAP 156 // +#define FUN_CREATEELLIPTICRGN 54 // +#define FUN_CREATEELLIPTICRGNINDIRECT 55 // +#define FUN_CREATEFONT 56 // +#define FUN_CREATEFONTINDIRECT 57 // +#define FUN_CREATEHATCHBRUSH 58 // +#define FUN_CREATEIC 153 // +#define FUN_CREATEMETAFILE 125 // +#define FUN_CREATEPALETTE 360 // +#define FUN_CREATEPATTERNBRUSH 60 // +#define FUN_CREATEPEN 61 // +#define FUN_CREATEPENINDIRECT 62 // +#define FUN_CREATEPOLYGONRGN 63 // +#define FUN_CREATEPOLYPOLYGONRGN 451 // +#define FUN_CREATEPQ 230 // No proto +#define FUN_CREATEREALBITMAP 408 // Internal +#define FUN_CREATEREALBITMAPINDIRECT 406 // Internal +#define FUN_CREATERECTRGN 64 // +#define FUN_CREATERECTRGNINDIRECT 65 // +#define FUN_CREATEROUNDRECTRGN 444 // +#define FUN_CREATESOLIDBRUSH 66 // +#define FUN_CREATEUSERBITMAP 407 // Internal +#define FUN_CREATEUSERDISCARDABLEBITMAP 409 // Internal +#define FUN_DEATH 121 // Internal +#define FUN_DELETEABOVELINEFONTS 186 // Internal +#define FUN_DELETEDC 68 // +#define FUN_DELETEJOB 244 // No proto +#define FUN_DELETEMETAFILE 127 // +#define FUN_DELETEOBJECT 69 // +#define FUN_DELETEPQ 235 // No proto +#define FUN_DEVICECOLORMATCH 449 // Internal +#define FUN_DEVICEMODE 452 // +#define FUN_DMBITBLT 201 // No proto +#define FUN_DMCOLORINFO 202 // No proto +#define FUN_DMENUMDFONTS 206 // No proto +#define FUN_DMENUMOBJ 207 // No proto +#define FUN_DMOUTPUT 208 // No proto +#define FUN_DMPIXEL 209 // No proto +#define FUN_DMREALIZEOBJECT 210 // No proto +#define FUN_DMSCANLR 212 // No proto +#define FUN_DMSTRBLT 211 // No proto +#define FUN_DMTRANSPOSE 220 // No proto +#define FUN_DPTOLP 67 // +#define FUN_DPXLATE 138 // Internal +#define FUN_ELLIPSE 24 // +#define FUN_ENDSPOOLPAGE 247 // No proto +#define FUN_ENUMCALLBACK 158 // Internal +#define FUN_ENUMFONTS 70 // +#define FUN_ENUMMETAFILE 175 // +#define FUN_ENUMOBJECTS 71 // +#define FUN_EQUALRGN 72 // +#define FUN_ESCAPE 38 // +#define FUN_EXCLUDECLIPRECT 21 // +#define FUN_EXCLUDEVISRECT 73 // Internal +#define FUN_EXTDEVICEMODE 453 // +#define FUN_DEVICECAPABILITIES 454 +//#define FUN_ADVANCEDSETUPDIALOG 455 +#define FUN_EXTFLOODFILL 372 // Internal, proto +#define FUN_EXTRACTPQ 232 // No proto +#define FUN_EXTTEXTOUT 351 // +#define FUN_FASTWINDOWFRAME 400 // Internal +#define FUN_FILLRGN 40 // +#define FUN_FINALGDIINIT 405 // Internal +#define FUN_FLOODFILL 25 // +#define FUN_FRAMERGN 41 // +#define FUN_GDIFLUSH 263 // New Private +#define FUN_GDIINIT2 403 // Internal +#define FUN_GDIMOVEBITMAP 401 // Internal +#define FUN_GDIREALIZEPALETTE 362 // Internal +#define FUN_GDISELECTPALETTE 361 // Internal +#define FUN_GDI_WEP 0 // Export by name +#define FUN_GETASPECTRATIOFILTER 353 // +#define FUN_GETBITMAPBITS 74 // +#define FUN_GETBITMAPDIMENSION 162 // +#define FUN_GETBKCOLOR 75 // +#define FUN_GETBKMODE 76 // +#define FUN_GETBRUSHORG 149 // +#define FUN_GETCHARWIDTH 350 // +#define FUN_GETCLIPBOX 77 // +#define FUN_GETCLIPRGN 173 // Internal +#define FUN_GETCURLOGFONT 411 // Internal +#define FUN_GETCURRENTOBJECT 261 // New Private +#define FUN_GETCURRENTPOSITION 78 // +#define FUN_GETDCORG 79 // +#define FUN_GETDCSTATE 179 // Internal +#define FUN_GETDEVICECAPS 80 // +#define FUN_GETDIBITS 441 // +#define FUN_GETENVIRONMENT 133 // +#define FUN_GETMAPMODE 81 // +#define FUN_GETMETAFILE 124 // +#define FUN_GETMETAFILEBITS 159 // +#define FUN_GETNEARESTCOLOR 154 // +#define FUN_GETNEARESTPALETTEINDEX 370 // +#define FUN_GETOBJECT 82 // +#define FUN_GETOBJECTTYPE 260 // New Private +#define FUN_GETPALETTEENTRIES 363 // +#define FUN_GETPHYSICALFONTHANDLE 352 // Internal +#define FUN_GETPIXEL 83 // +#define FUN_GETPOLYFILLMODE 84 // +#define FUN_GETREGIONDATA 262 // New Private +#define FUN_GETRELABS 86 // Internal +#define FUN_GETRGNBOX 134 // +#define FUN_GETROP2 85 // +#define FUN_GETSPOOLJOB 245 // No proto +#define FUN_GETSTOCKOBJECT 87 // +#define FUN_GETSTRETCHBLTMODE 88 // +#define FUN_GETSYSTEMPALETTEENTRIES 375 // +#define FUN_GETSYSTEMPALETTEUSE 374 // +#define FUN_GETTEXTALIGN 345 // +#define FUN_GETTEXTCHARACTEREXTRA 89 // +#define FUN_GETTEXTCOLOR 90 // +#define FUN_GETTEXTEXTENT 91 // +#define FUN_GETTEXTFACE 92 // +#define FUN_GETTEXTMETRICS 93 // +#define FUN_GETVIEWPORTEXT 94 // +#define FUN_GETVIEWPORTORG 95 // +#define FUN_GETWINDOWEXT 96 // +#define FUN_GETWINDOWORG 97 // +#define FUN_GSV 137 // Internal +#define FUN_INQUIREVISRGN 131 // Internal +#define FUN_INSERTPQ 233 // No proto +#define FUN_INTERNALCREATEDC 118 // Internal +#define FUN_INTERSECTCLIPRECT 22 // +#define FUN_INTERSECTVISRECT 98 // Internal +#define FUN_INVERTRGN 42 // +#define FUN_ISDCCURRENTPALETTE 412 // Internal +#define FUN_ISDCDIRTY 169 // Internal +#define FUN_ISVALIDMETAFILE 410 // Internal +#define FUN_LINEDDA 100 // +#define FUN_LINETO 19 // +#define FUN_LPTODP 99 // +#define FUN_LVBUNION 171 // Internal +#define FUN_MFDRAWTEXT 347 // Internal +#define FUN_MINPQ 231 // No proto +#define FUN_MOVETO 20 // +#define FUN_MULDIV 128 // +#define FUN_OFFSETCLIPRGN 32 // +#define FUN_OFFSETORG 143 // Internal +#define FUN_OFFSETRGN 101 // +#define FUN_OFFSETVIEWPORTORG 17 // +#define FUN_OFFSETVISRGN 102 // Internal +#define FUN_OFFSETWINDOWORG 15 // +#define FUN_OPENJOB 240 // No proto +#define FUN_PAINTRGN 43 // +#define FUN_PATBLT 29 // +#define FUN_PIE 26 // +#define FUN_PIXTOLINE 164 // Internal +#define FUN_PLAYMETAFILE 123 // +#define FUN_PLAYMETAFILERECORD 176 // +#define FUN_POLYGON 36 // +#define FUN_POLYLINE 37 // +#define FUN_POLYPOLYGON 450 // +#define FUN_POLYPOLYLINEWOW 490 // +#define FUN_PTINREGION 161 // +#define FUN_PTVISIBLE 103 // +#define FUN_QUERYABORT 155 // Internal +#define FUN_QUERYJOB 248 // Internal +#define FUN_RCOS 177 // Internal +#define FUN_REALIZEDEFAULTPALETTE 365 // Internal +#define FUN_RECTANGLE 27 // +#define FUN_RECTINREGION 181 // +#define FUN_RECTSTUFF 142 // Internal +#define FUN_RECTVISIBLE 104 // +#define FUN_REMOVEFONTRESOURCE 136 // +#define FUN_RESIZEPALETTE 368 // +#define FUN_RESTOREDC 39 // +#define FUN_RESTOREVISRGN 130 // Internal +#define FUN_RESURRECTION 122 // Internal +#define FUN_ROUNDRECT 28 // +#define FUN_RSIN 178 // Internal +#define FUN_SAVEDC 30 // +#define FUN_SAVEVISRGN 129 // Internal +#define FUN_SCALEEXT 140 // Internal +#define FUN_SCALEVIEWPORTEXT 18 // +#define FUN_SCALEWINDOWEXT 16 // +#define FUN_SCANLR 135 // Internal +#define FUN_SELECTCLIPRGN 44 // +#define FUN_SELECTOBJECT 45 // +#define FUN_SELECTVISRGN 105 // Internal +#define FUN_SETBITMAPBITS 106 // +#define FUN_SETBITMAPDIMENSION 163 // +#define FUN_SETBKCOLOR 1 // +#define FUN_SETBKMODE 2 // +#define FUN_SETBRUSHORG 148 // +#define FUN_SETDCORG 117 // Internal +#define FUN_SETDCSTATE 180 // Internal +#define FUN_SETDCSTATUS 170 // Internal +#define FUN_SETDIBITS 440 // +#define FUN_SETDIBITSTODEVICE 443 // +#define FUN_SETENVIRONMENT 132 // +#define FUN_SETMAPMODE 3 // +#define FUN_SETMAPPERFLAGS 349 // +#define FUN_SETMETAFILEBITS 160 // +#define FUN_SETPALETTEENTRIES 364 // +#define FUN_SETPIXEL 31 // +#define FUN_SETPOLYFILLMODE 6 // +#define FUN_SETRECTRGN 172 // +#define FUN_SETRELABS 5 // Internal +#define FUN_SETROP2 4 // +#define FUN_SETSTRETCHBLTMODE 7 // +#define FUN_SETSYSTEMPALETTEUSE 373 // +#define FUN_SETTEXTALIGN 346 // +#define FUN_SETTEXTCHARACTEREXTRA 8 // +#define FUN_SETTEXTCOLOR 9 // +#define FUN_SETTEXTJUSTIFICATION 10 // +#define FUN_SETVIEWPORTEXT 14 // +#define FUN_SETVIEWPORTORG 13 // +#define FUN_SETWINDOWEXT 12 // +#define FUN_SETWINDOWORG 11 // +#define FUN_SETWINVIEWEXT 139 // Internal +#define FUN_SHRINKGDIHEAP 354 // Internal +#define FUN_SIZEPQ 234 // No proto +#define FUN_STARTSPOOLPAGE 246 // No proto +#define FUN_STRETCHBLT 35 // +#define FUN_STRETCHDIBITS 439 // +#define FUN_STUFFINREGION 185 // Internal +#define FUN_STUFFVISIBLE 184 // Internal +#define FUN_TEXTOUT 33 // +#define FUN_UNREALIZEOBJECT 150 // +#define FUN_UPDATECOLORS 366 // +#define FUN_WORDSET 141 // Internal +#define FUN_WRITEDIALOG 242 // No proto +#define FUN_WRITESPOOL 241 // No proto +#define FUN_ABORTDOC 382 +#define FUN_CREATESCALABLEFONTRESOURCE 310 +#define FUN_ENDDOC 378 +#define FUN_ENDPAGE 380 +#define FUN_ENUMFONTFAMILIES 330 +#define FUN_GETASPECTRATIOFILTEREX 486 +#define FUN_GETBITMAPDIMENSIONEX 468 +#define FUN_GETBOUNDSRECT 194 +#define FUN_GETBRUSHORGEX 469 +#define FUN_GETCHARABCWIDTHS 307 +#define FUN_GETCURRENTPOSITIONEX 470 +#define FUN_GETFONTDATA 311 +#define FUN_GETGLYPHOUTLINE 309 +#define FUN_GETOUTLINETEXTMETRICS 308 +#define FUN_GETRASTERIZERCAPS 313 +#define FUN_GETEXTEXTENTEX 188 +#define FUN_GETEXTEXTENTPOINT 471 +#define FUN_GETVIEWPORTEXTEX 472 +#define FUN_GETVIEWPORTORGEX 473 +#define FUN_GETWINDOWEXTEX 474 +#define FUN_GETWINDOWORGEX 475 +#define FUN_ISGDIOBJECT 462 +#define FUN_MOVETOEX 483 +#define FUN_OFFSETVIEWPORTORGEX 476 +#define FUN_OFFSETWINDOWORGEX 477 +#define FUN_QUERYABORT 155 +#define FUN_RESETDC 376 +#define FUN_SCALEVIEWPORTEXTEX 484 +#define FUN_SCALEWINDOWEXTEX 485 +#define FUN_SETABORTPROC 381 +#define FUN_SETBITMAPDIMENSIONEX 478 +#define FUN_SETBOUNDSRECT 193 +#define FUN_SETMETAFILEBITSBETTER 196 +#define FUN_SETVIEWPORTEXTEX 479 +#define FUN_SETVIEWPORTORGEX 480 +#define FUN_SETWINDOWEXTEX 481 +#define FUN_SETWINDOWORGEX 482 +#define FUN_SPOOLFILE 254 +#define FUN_STARTDOC 377 +#define FUN_STARTPAGE 379 +#define FUN_BITMAPBITS 46 +#define FUN_SETDCHOOK 190 +#define FUN_GETDCHOOK 191 +#define FUN_SETHOOKFLAGS 192 +#define FUN_SELECTBITMAP 195 +#define FUN_DMEXTTEXTOUT 214 +#define FUN_DMGETCHARWIDTH 215 +#define FUN_DMSTRETCHBLT 216 +#define FUN_DMDIBBITS 217 +#define FUN_DMSTRETCHDIBITS 218 +#define FUN_DMSETDIBTODEV 219 +#define FUN_DELETESPOOLPAGE 253 +#define FUN_ENGINEENUMERATEFONT 300 ;Internal +#define FUN_ENGINEDELETEFONT 301 +#define FUN_ENGINEREALIZEFONT 302 +#define FUN_ENGINEGETCHARWIDTH 303 +#define FUN_ENGINESETFONTCONTEXT 304 +#define FUN_ENGINEGETGLYPHBMP 305 +#define FUN_ENGINEMAKEFONTDIR 306 +#define FUN_ENGINEEXTTEXTOUT 314 ;internal +#define FUN_GETKERNINGPAIRS 332 +#define FUN_FTRAPPING0 355 ;Internal +#define FUN_GDISEEGDIDO 452 +#define FUN_GDITASKTERMINATION 460 +#define FUN_SETOBJECTOWNER 461 +#define FUN_MAKEOBJECTPRIVATE 463 +#define FUN_FIXUPBOGUSPUBLISHERMETAFILE 464 +#define FUN_RECTVISIBLE_EHH 465 +#define FUN_RECTINREGION_EHH 466 +#define FUN_UNICODETOANSI 467 ;Internal +#define FUN_CONVERTOUTLINEFONTFILE 312 +#define FUN_GETTEXTEXTENTPOINT 471 +#define FUN_CREATEDIBSECTION 489 + +// the chicago ordinals for Get/SetDIBColorTable are 603,602 respectively. I use 487 +// and 488, which are other wise unused, to keep the table from expanding by over +// 100 entries. erick 5/10/94 + +#define FUN_GETDIBCOLORTABLE 487 +#define FUN_SETDIBCOLORTABLE 488 + + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +typedef struct _ADDFONTRESOURCE16 { /* g119 */ + VPSZ f1; +} ADDFONTRESOURCE16; +typedef ADDFONTRESOURCE16 UNALIGNED *PADDFONTRESOURCE16; + +typedef struct _ANIMATEPALETTE16 { /* g367 */ + VPPALETTEENTRY16 f4; + WORD f3; + WORD f2; + HPAL16 f1; +} ANIMATEPALETTE16; +typedef ANIMATEPALETTE16 UNALIGNED *PANIMATEPALETTE16; + +typedef struct _ARC16 { /* g23 */ + SHORT f9; + SHORT f8; + SHORT f7; + SHORT f6; + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} ARC16; +typedef ARC16 UNALIGNED *PARC16; + +typedef struct _BITBLT16 { /* g34 */ + DWORD f9; + SHORT f8; + SHORT f7; + HDC16 f6; + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} BITBLT16; +typedef BITBLT16 UNALIGNED *PBITBLT16; + +typedef struct _CHORD16 { /* g348 */ + SHORT f9; + SHORT f8; + SHORT f7; + SHORT f6; + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} CHORD16; +typedef CHORD16 UNALIGNED *PCHORD16; + +typedef struct _SETRELABS16 { /* g5 */ + SHORT f2; + HDC16 f1; +} SETRELABS16; +typedef SETRELABS16 UNALIGNED *PSETRELABS16; + +typedef struct _GETRELABS16 { /* g86 */ + HDC16 f1; +} GETRELABS16; +typedef GETRELABS16 UNALIGNED *PGETRELABS16; + +typedef struct _CLOSEMETAFILE16 { /* g126 */ + HAND16 f1; +} CLOSEMETAFILE16; +typedef CLOSEMETAFILE16 UNALIGNED *PCLOSEMETAFILE16; + +typedef struct _COMBINERGN16 { /* g47 */ + SHORT f4; + HRGN16 f3; + HRGN16 f2; + HRGN16 f1; +} COMBINERGN16; +typedef COMBINERGN16 UNALIGNED *PCOMBINERGN16; + +typedef struct _COPYMETAFILE16 { /* g151 */ + VPSZ f2; + HAND16 f1; +} COPYMETAFILE16; +typedef COPYMETAFILE16 UNALIGNED *PCOPYMETAFILE16; + +typedef struct _CREATEBITMAP16 { /* g48 */ + VPBYTE f5; + WORD f4; + WORD f3; + SHORT f2; + SHORT f1; +} CREATEBITMAP16; +typedef CREATEBITMAP16 UNALIGNED *PCREATEBITMAP16; + +typedef struct _CREATEUSERBITMAP16 { /* g407 */ + VPBYTE f5; + WORD f4; + WORD f3; + SHORT f2; + SHORT f1; +} CREATEUSERBITMAP16, *PCREATEUSERBITMAP16; + +typedef struct _CREATEBITMAPINDIRECT16 { /* g49 */ + VPBITMAP16 f1; +} CREATEBITMAPINDIRECT16; +typedef CREATEBITMAPINDIRECT16 UNALIGNED *PCREATEBITMAPINDIRECT16; + +typedef struct _CREATEBRUSHINDIRECT16 { /* g50 */ + VPLOGBRUSH16 f1; +} CREATEBRUSHINDIRECT16; +typedef CREATEBRUSHINDIRECT16 UNALIGNED *PCREATEBRUSHINDIRECT16; + +typedef struct _CREATECOMPATIBLEBITMAP16 { /* g51 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} CREATECOMPATIBLEBITMAP16; +typedef CREATECOMPATIBLEBITMAP16 UNALIGNED *PCREATECOMPATIBLEBITMAP16; + +typedef struct _CREATECOMPATIBLEDC16 { /* g52 */ + HDC16 f1; +} CREATECOMPATIBLEDC16; +typedef CREATECOMPATIBLEDC16 UNALIGNED *PCREATECOMPATIBLEDC16; + +typedef struct _CREATEDC16 { /* g53 */ + VPDEVMODE31 f4; + VPSZ f3; + VPSZ f2; + VPSZ f1; +} CREATEDC16; +typedef CREATEDC16 UNALIGNED *PCREATEDC16; + +typedef struct _CREATEDIBITMAP16 { /* g442 */ + WORD f6; + VPBITMAPINFO16 f5; + VPBYTE f4; + DWORD f3; + VPBITMAPINFOHEADER16 f2; + HDC16 f1; +} CREATEDIBITMAP16; +typedef CREATEDIBITMAP16 UNALIGNED *PCREATEDIBITMAP16; + +typedef struct _CREATEDIBSECTION16 { /* g489 */ + DWORD f6; + DWORD f5; + VPBYTE f4; + WORD f3; + VPBITMAPINFO16 f2; + HDC16 f1; +} CREATEDIBSECTION16; +typedef CREATEDIBSECTION16 UNALIGNED *PCREATEDIBSECTION16; + +typedef struct _GETDIBCOLORTABLE16 { /* g603 */ + VPBYTE f4; + WORD f3; + WORD f2; + HDC16 f1; +} GETDIBCOLORTABLE16; +typedef GETDIBCOLORTABLE16 UNALIGNED *PGETDIBCOLORTABLE16; + +typedef struct _SETDIBCOLORTABLE16 { /* g602 */ + VPBYTE f4; + WORD f3; + WORD f2; + HDC16 f1; +} SETDIBCOLORTABLE16; +typedef SETDIBCOLORTABLE16 UNALIGNED *PSETDIBCOLORTABLE16; + +typedef struct _CREATEDIBPATTERNBRUSH16 { /* g445 */ + WORD f2; + VPVOID f1; +} CREATEDIBPATTERNBRUSH16; +typedef CREATEDIBPATTERNBRUSH16 UNALIGNED *PCREATEDIBPATTERNBRUSH16; + +typedef struct _CREATEDISCARDABLEBITMAP16 { /* g156 */ + SHORT height; + SHORT width; + HDC16 hdc; +} CREATEDISCARDABLEBITMAP16; +typedef CREATEDISCARDABLEBITMAP16 UNALIGNED *PCREATEDISCARDABLEBITMAP16; + +typedef struct _CREATEELLIPTICRGN16 { /* g54 */ + SHORT f4; + SHORT f3; + SHORT f2; + SHORT f1; +} CREATEELLIPTICRGN16; +typedef CREATEELLIPTICRGN16 UNALIGNED *PCREATEELLIPTICRGN16; + +typedef struct _CREATEELLIPTICRGNINDIRECT16 { /* g55 */ + VPRECT16 f1; +} CREATEELLIPTICRGNINDIRECT16; +typedef CREATEELLIPTICRGNINDIRECT16 UNALIGNED *PCREATEELLIPTICRGNINDIRECT16; + +typedef struct _CREATEFONT16 { /* g56 */ + VPSZ f14; + WORD f13; + WORD f12; + WORD f11; + WORD f10; + WORD f9; + WORD f8; + WORD f7; + WORD f6; + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + SHORT f1; +} CREATEFONT16; +typedef CREATEFONT16 UNALIGNED *PCREATEFONT16; + +typedef struct _CREATEFONTINDIRECT16 { /* g57 */ + VPLOGFONT16 f1; +} CREATEFONTINDIRECT16; +typedef CREATEFONTINDIRECT16 UNALIGNED *PCREATEFONTINDIRECT16; + +typedef struct _CREATEHATCHBRUSH16 { /* g58 */ + DWORD f2; + SHORT f1; +} CREATEHATCHBRUSH16; +typedef CREATEHATCHBRUSH16 UNALIGNED *PCREATEHATCHBRUSH16; + +typedef struct _CREATEIC16 { /* g153 */ + VPDEVMODE31 f4; + VPSZ f3; + VPSZ f2; + VPSZ f1; +} CREATEIC16; +typedef CREATEIC16 UNALIGNED *PCREATEIC16; + +typedef struct _CREATEMETAFILE16 { /* g125 */ + VPSZ f1; +} CREATEMETAFILE16; +typedef CREATEMETAFILE16 UNALIGNED *PCREATEMETAFILE16; + +typedef struct _CREATEPALETTE16 { /* g360 */ + VPLOGPALETTE16 f1; +} CREATEPALETTE16; +typedef CREATEPALETTE16 UNALIGNED *PCREATEPALETTE16; + +typedef struct _CREATEPATTERNBRUSH16 { /* g60 */ + HBM16 f1; +} CREATEPATTERNBRUSH16; +typedef CREATEPATTERNBRUSH16 UNALIGNED *PCREATEPATTERNBRUSH16; + +typedef struct _CREATEPEN16 { /* g61 */ + DWORD f3; + SHORT f2; + SHORT f1; +} CREATEPEN16; +typedef CREATEPEN16 UNALIGNED *PCREATEPEN16; + +typedef struct _CREATEPENINDIRECT16 { /* g62 */ + VPLOGPEN16 f1; +} CREATEPENINDIRECT16; +typedef CREATEPENINDIRECT16 UNALIGNED *PCREATEPENINDIRECT16; + +typedef struct _CREATEPOLYGONRGN16 { /* g63 */ + SHORT f3; + SHORT f2; + VPPOINT16 f1; +} CREATEPOLYGONRGN16; +typedef CREATEPOLYGONRGN16 UNALIGNED *PCREATEPOLYGONRGN16; + +typedef struct _CREATEPOLYPOLYGONRGN16 { /* g451 */ + SHORT f4; + SHORT f3; + VPSHORT f2; + VPPOINT16 f1; +} CREATEPOLYPOLYGONRGN16; +typedef CREATEPOLYPOLYGONRGN16 UNALIGNED *PCREATEPOLYPOLYGONRGN16; + +typedef struct _CREATERECTRGN16 { /* g64 */ + SHORT f4; + SHORT f3; + SHORT f2; + SHORT f1; +} CREATERECTRGN16; +typedef CREATERECTRGN16 UNALIGNED *PCREATERECTRGN16; + +typedef struct _CREATERECTRGNINDIRECT16 { /* g65 */ + VPRECT16 f1; +} CREATERECTRGNINDIRECT16; +typedef CREATERECTRGNINDIRECT16 UNALIGNED *PCREATERECTRGNINDIRECT16; + +typedef struct _CREATEROUNDRECTRGN16 { /* g444 */ + SHORT f6; + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + SHORT f1; +} CREATEROUNDRECTRGN16; +typedef CREATEROUNDRECTRGN16 UNALIGNED *PCREATEROUNDRECTRGN16; + +typedef struct _CREATESOLIDBRUSH16 { /* g66 */ + DWORD f1; +} CREATESOLIDBRUSH16; +typedef CREATESOLIDBRUSH16 UNALIGNED *PCREATESOLIDBRUSH16; + +typedef struct _DELETEDC16 { /* g68 */ + HDC16 f1; +} DELETEDC16; +typedef DELETEDC16 UNALIGNED *PDELETEDC16; + +typedef struct _DELETEMETAFILE16 { /* g127 */ + HAND16 f1; +} DELETEMETAFILE16; +typedef DELETEMETAFILE16 UNALIGNED *PDELETEMETAFILE16; + +typedef struct _DELETEOBJECT16 { /* g69 */ + HAND16 f1; +} DELETEOBJECT16; +typedef DELETEOBJECT16 UNALIGNED *PDELETEOBJECT16; + +typedef struct _DEVICEMODE16 { /* g452 */ + VPSZ f4; + VPSZ f3; + HAND16 f2; + HWND16 f1; +} DEVICEMODE16; +typedef DEVICEMODE16 UNALIGNED *PDEVICEMODE16; + +typedef struct _EXTDEVICEMODE16 { /* g453 */ + SHORT f8; + VPSZ f7; + VPDEVMODE31 f6; + VPSZ f5; + VPSZ f4; + VPDEVMODE31 f3; + HAND16 f2; + HWND16 f1; +} EXTDEVICEMODE16; +typedef EXTDEVICEMODE16 UNALIGNED *PEXTDEVICEMODE16; + +typedef struct _DEVICECAPABILITIES16 { /* g454 */ + VPDEVMODE31 f5; + VPSZ f4; + SHORT f3; + VPSZ f2; + VPSZ f1; +} DEVICECAPABILITIES16; +typedef DEVICECAPABILITIES16 UNALIGNED *PDEVICECAPABILITIES16; + +//typedef struct _ADVANCEDSETUPDIALOG16 { /* g455 */ +// VPSZ f4; +// VPSZ f3; +// HAND16 f2; +// HWND16 f1; +//} ADVANCEDSETUPDIALOG16; +//typedef ADVANCEDSETUPDIALOG16 UNALIGNED *PADVANCEDSETUPDIALOG16; + +typedef struct _DPTOLP16 { /* g67 */ + SHORT f3; + VPPOINT16 f2; + HDC16 f1; +} DPTOLP16; +typedef DPTOLP16 UNALIGNED *PDPTOLP16; + +typedef struct _ELLIPSE16 { /* g24 */ + SHORT y2; + SHORT x2; + SHORT y1; + SHORT x1; + HDC16 hdc; +} ELLIPSE16; +typedef ELLIPSE16 UNALIGNED *PELLIPSE16; + +typedef struct _ENUMFONTS16 { /* g70 */ + VPBYTE f4; + VPPROC f3; + VPSZ f2; + HDC16 f1; +} ENUMFONTS16; +typedef ENUMFONTS16 UNALIGNED *PENUMFONTS16; + +typedef struct _ENUMMETAFILE16 { /* g175 */ + VPBYTE f4; + VPPROC f3; + HAND16 f2; + HDC16 f1; +} ENUMMETAFILE16; +typedef ENUMMETAFILE16 UNALIGNED *PENUMMETAFILE16; + +typedef struct _ENUMOBJECTS16 { /* g71 */ + VPBYTE f4; + VPPROC f3; + SHORT f2; + HDC16 f1; +} ENUMOBJECTS16; +typedef ENUMOBJECTS16 UNALIGNED *PENUMOBJECTS16; + +typedef struct _EQUALRGN16 { /* g72 */ + HRGN16 f2; + HRGN16 f1; +} EQUALRGN16; +typedef EQUALRGN16 UNALIGNED *PEQUALRGN16; + +typedef struct _ESCAPE16 { /* g38 */ + VPSTR f5; + VPSTR f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} ESCAPE16; +typedef ESCAPE16 UNALIGNED *PESCAPE16; + +typedef struct _EXCLUDECLIPRECT16 { /* g21 */ + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} EXCLUDECLIPRECT16; +typedef EXCLUDECLIPRECT16 UNALIGNED *PEXCLUDECLIPRECT16; + +typedef struct _EXTFLOODFILL16 { /* g372 */ + WORD f5; + DWORD f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} EXTFLOODFILL16; +typedef EXTFLOODFILL16 UNALIGNED *PEXTFLOODFILL16; + +typedef struct _EXTTEXTOUT16 { /* g351 */ + VPSHORT f8; + WORD f7; + VPSTR f6; + VPRECT16 f5; + WORD f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} EXTTEXTOUT16; +typedef EXTTEXTOUT16 UNALIGNED *PEXTTEXTOUT16; + +typedef struct _FILLRGN16 { /* g40 */ + HBRSH16 f3; + HRGN16 f2; + HDC16 f1; +} FILLRGN16; +typedef FILLRGN16 UNALIGNED *PFILLRGN16; + +typedef struct _FLOODFILL16 { /* g25 */ + DWORD f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} FLOODFILL16; +typedef FLOODFILL16 UNALIGNED *PFLOODFILL16; + +typedef struct _FRAMERGN16 { /* g41 */ + SHORT f5; + SHORT f4; + HBRSH16 f3; + HRGN16 f2; + HDC16 f1; +} FRAMERGN16; +typedef FRAMERGN16 UNALIGNED *PFRAMERGN16; + +typedef struct _GETASPECTRATIOFILTER16 { /* g353 */ + HDC16 f1; +} GETASPECTRATIOFILTER16; +typedef GETASPECTRATIOFILTER16 UNALIGNED *PGETASPECTRATIOFILTER16; + +typedef struct _GETASPECTRATIOFILTEREX16 { /* g486 */ + VPVOID f2; + HDC16 f1; +} GETASPECTRATIOFILTEREX16; +typedef GETASPECTRATIOFILTEREX16 UNALIGNED *PGETASPECTRATIOFILTEREX16; + +typedef struct _GETBITMAPBITS16 { /* g74 */ + VPSTR f3; + LONG f2; + HBM16 f1; +} GETBITMAPBITS16; +typedef GETBITMAPBITS16 UNALIGNED *PGETBITMAPBITS16; + +typedef struct _GETBITMAPDIMENSION16 { /* g162 */ + HBM16 f1; +} GETBITMAPDIMENSION16; +typedef GETBITMAPDIMENSION16 UNALIGNED *PGETBITMAPDIMENSION16; + +typedef struct _GETBKCOLOR16 { /* g75 */ + HDC16 f1; +} GETBKCOLOR16; +typedef GETBKCOLOR16 UNALIGNED *PGETBKCOLOR16; + +typedef struct _GETBKMODE16 { /* g76 */ + HDC16 f1; +} GETBKMODE16; +typedef GETBKMODE16 UNALIGNED *PGETBKMODE16; + +typedef struct _GETBRUSHORG16 { /* g149 */ + HDC16 f1; +} GETBRUSHORG16; +typedef GETBRUSHORG16 UNALIGNED *PGETBRUSHORG16; + +typedef struct _GETCHARWIDTH16 { /* g350 */ + VPSHORT lpIntBuffer; + WORD wLastChar; + WORD wFirstChar; + HDC16 hDC; +} GETCHARWIDTH16; +typedef GETCHARWIDTH16 UNALIGNED *PGETCHARWIDTH16; + +typedef struct _GETCLIPBOX16 { /* g77 */ + VPRECT16 f2; + HDC16 f1; +} GETCLIPBOX16; +typedef GETCLIPBOX16 UNALIGNED *PGETCLIPBOX16; + +typedef struct _GETCURRENTOBJECT16 { /* g261 */ + WORD f2; + HDC16 f1; +} GETCURRENTOBJECT16; +typedef GETCURRENTOBJECT16 UNALIGNED *PGETCURRENTOBJECT16; + +typedef struct _GETCURRENTPOSITION16 { /* g78 */ + HDC16 f1; +} GETCURRENTPOSITION16; +typedef GETCURRENTPOSITION16 UNALIGNED *PGETCURRENTPOSITION16; + +typedef struct _GETDCORG16 { /* g79 */ + HDC16 f1; +} GETDCORG16; +typedef GETDCORG16 UNALIGNED *PGETDCORG16; + +typedef struct _GETDEVICECAPS16 { /* g80 */ + SHORT f2; + HDC16 f1; +} GETDEVICECAPS16; +typedef GETDEVICECAPS16 UNALIGNED *PGETDEVICECAPS16; + +typedef struct _GETDIBITS16 { /* g441 */ + WORD f7; + VPBITMAPINFO16 f6; + VPSTR f5; + WORD f4; + WORD f3; + HAND16 f2; + HDC16 f1; +} GETDIBITS16; +typedef GETDIBITS16 UNALIGNED *PGETDIBITS16; + +typedef struct _GETENVIRONMENT16 { /* g133 */ + WORD f3; + VPSTR f2; + VPSTR f1; +} GETENVIRONMENT16; +typedef GETENVIRONMENT16 UNALIGNED *PGETENVIRONMENT16; + +typedef struct _GETKERNINGPAIRS16 { /* g332 */ + VPSTR f3; + WORD f2; + WORD f1; +} GETKERNINGPAIRS16; +typedef GETKERNINGPAIRS16 UNALIGNED *PGETKERNINGPAIRS16; + + +typedef struct _GETMAPMODE16 { /* g81 */ + HDC16 f1; +} GETMAPMODE16; +typedef GETMAPMODE16 UNALIGNED *PGETMAPMODE16; + +typedef struct _GETMETAFILE16 { /* g124 */ + VPSTR f1; +} GETMETAFILE16; +typedef GETMETAFILE16 UNALIGNED *PGETMETAFILE16; + +typedef struct _GETMETAFILEBITS16 { /* g159 */ + HAND16 f1; +} GETMETAFILEBITS16; +typedef GETMETAFILEBITS16 UNALIGNED *PGETMETAFILEBITS16; + +typedef struct _GETNEARESTCOLOR16 { /* g154 */ + DWORD f2; + HDC16 f1; +} GETNEARESTCOLOR16; +typedef GETNEARESTCOLOR16 UNALIGNED *PGETNEARESTCOLOR16; + +typedef struct _GETNEARESTPALETTEINDEX16 { /* g370 */ + DWORD f2; + HPAL16 f1; +} GETNEARESTPALETTEINDEX16; +typedef GETNEARESTPALETTEINDEX16 UNALIGNED *PGETNEARESTPALETTEINDEX16; + +typedef struct _GETOBJECT16 { /* g82 */ + VPSTR f3; + SHORT f2; + HAND16 f1; +} GETOBJECT16; +typedef GETOBJECT16 UNALIGNED *PGETOBJECT16; + +typedef struct _GETOBJECTTYPE16 { /* g260 */ + HDC16 f1; +} GETOBJECTTYPE16; +typedef GETOBJECTTYPE16 UNALIGNED *PGETOBJECTTYPE16; + +typedef struct _GETPALETTEENTRIES16 { /* g363 */ + VPPALETTEENTRY16 f4; + WORD f3; + WORD f2; + HPAL16 f1; +} GETPALETTEENTRIES16; +typedef GETPALETTEENTRIES16 UNALIGNED *PGETPALETTEENTRIES16; + +typedef struct _GETPIXEL16 { /* g83 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} GETPIXEL16; +typedef GETPIXEL16 UNALIGNED *PGETPIXEL16; + +typedef struct _GETPOLYFILLMODE16 { /* g84 */ + HDC16 f1; +} GETPOLYFILLMODE16; +typedef GETPOLYFILLMODE16 UNALIGNED *PGETPOLYFILLMODE16; + +typedef struct _GETREGIONDATA16 { /* g262 */ + VPSTR f3; + DWORD f2; + HRGN16 f1; +} GETREGIONDATA16; +typedef GETREGIONDATA16 UNALIGNED *PGETREGIONDATA16; + +typedef struct _GETRGNBOX16 { /* g134 */ + VPRECT16 f2; + HRGN16 f1; +} GETRGNBOX16; +typedef GETRGNBOX16 UNALIGNED *PGETRGNBOX16; + +typedef struct _GETROP216 { /* g85 */ + HDC16 f1; +} GETROP216; +typedef GETROP216 UNALIGNED *PGETROP216; + +typedef struct _GETSTOCKOBJECT16 { /* g87 */ + SHORT f1; +} GETSTOCKOBJECT16; +typedef GETSTOCKOBJECT16 UNALIGNED *PGETSTOCKOBJECT16; + +typedef struct _GETSTRETCHBLTMODE16 { /* g88 */ + HDC16 f1; +} GETSTRETCHBLTMODE16; +typedef GETSTRETCHBLTMODE16 UNALIGNED *PGETSTRETCHBLTMODE16; + +typedef struct _GETSYSTEMPALETTEENTRIES16 { /* g375 */ + VPPALETTEENTRY16 f4; + WORD f3; + WORD f2; + HDC16 f1; +} GETSYSTEMPALETTEENTRIES16; +typedef GETSYSTEMPALETTEENTRIES16 UNALIGNED *PGETSYSTEMPALETTEENTRIES16; + +typedef struct _GETSYSTEMPALETTEUSE16 { /* g374 */ + HDC16 f1; +} GETSYSTEMPALETTEUSE16; +typedef GETSYSTEMPALETTEUSE16 UNALIGNED *PGETSYSTEMPALETTEUSE16; + +typedef struct _GETTEXTALIGN16 { /* g345 */ + HDC16 f1; +} GETTEXTALIGN16; +typedef GETTEXTALIGN16 UNALIGNED *PGETTEXTALIGN16; + +typedef struct _GETTEXTCHARACTEREXTRA16 { /* g89 */ + HDC16 f1; +} GETTEXTCHARACTEREXTRA16; +typedef GETTEXTCHARACTEREXTRA16 UNALIGNED *PGETTEXTCHARACTEREXTRA16; + +typedef struct _GETTEXTCOLOR16 { /* g90 */ + HDC16 f1; +} GETTEXTCOLOR16; +typedef GETTEXTCOLOR16 UNALIGNED *PGETTEXTCOLOR16; + +typedef struct _GETTEXTEXTENT16 { /* g91 */ + SHORT f3; + VPSTR f2; + HDC16 f1; +} GETTEXTEXTENT16; +typedef GETTEXTEXTENT16 UNALIGNED *PGETTEXTEXTENT16; + +typedef struct _GETTEXTFACE16 { /* g92 */ + VPSTR f3; + SHORT f2; + HDC16 f1; +} GETTEXTFACE16; +typedef GETTEXTFACE16 UNALIGNED *PGETTEXTFACE16; + +typedef struct _GETTEXTMETRICS16 { /* g93 */ + VPTEXTMETRIC16 f2; + HDC16 f1; +} GETTEXTMETRICS16; +typedef GETTEXTMETRICS16 UNALIGNED *PGETTEXTMETRICS16; + +typedef struct _GETVIEWPORTEXT16 { /* g94 */ + HDC16 f1; +} GETVIEWPORTEXT16; +typedef GETVIEWPORTEXT16 UNALIGNED *PGETVIEWPORTEXT16; + +typedef struct _GETVIEWPORTORG16 { /* g95 */ + HDC16 f1; +} GETVIEWPORTORG16; +typedef GETVIEWPORTORG16 UNALIGNED *PGETVIEWPORTORG16; + +typedef struct _GETWINDOWEXT16 { /* g96 */ + HDC16 f1; +} GETWINDOWEXT16; +typedef GETWINDOWEXT16 UNALIGNED *PGETWINDOWEXT16; + +typedef struct _GETWINDOWORG16 { /* g97 */ + HDC16 f1; +} GETWINDOWORG16; +typedef GETWINDOWORG16 UNALIGNED *PGETWINDOWORG16; + +typedef struct _INTERSECTCLIPRECT16 { /* g22 */ + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} INTERSECTCLIPRECT16; +typedef INTERSECTCLIPRECT16 UNALIGNED *PINTERSECTCLIPRECT16; + +typedef struct _INVERTRGN16 { /* g42 */ + HRGN16 f2; + HDC16 f1; +} INVERTRGN16; +typedef INVERTRGN16 UNALIGNED *PINVERTRGN16; + +typedef struct _LINEDDA16 { /* g100 */ + VPSTR f6; + VPPROC f5; + SHORT f4; + SHORT f3; + SHORT f2; + SHORT f1; +} LINEDDA16; +typedef LINEDDA16 UNALIGNED *PLINEDDA16; + +typedef struct _LINETO16 { /* g19 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} LINETO16; +typedef LINETO16 UNALIGNED *PLINETO16; + +typedef struct _LPTODP16 { /* g99 */ + SHORT f3; + VPPOINT16 f2; + HDC16 f1; +} LPTODP16; +typedef LPTODP16 UNALIGNED *PLPTODP16; + +typedef struct _MOVETO16 { /* g20 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} MOVETO16; +typedef MOVETO16 UNALIGNED *PMOVETO16; + +typedef struct _MULDIV16 { /* g128 */ + SHORT f3; + SHORT f2; + SHORT f1; +} MULDIV16; +typedef MULDIV16 UNALIGNED *PMULDIV16; + +typedef struct _OFFSETCLIPRGN16 { /* g32 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} OFFSETCLIPRGN16; +typedef OFFSETCLIPRGN16 UNALIGNED *POFFSETCLIPRGN16; + +typedef struct _OFFSETRGN16 { /* g101 */ + SHORT f3; + SHORT f2; + HRGN16 f1; +} OFFSETRGN16; +typedef OFFSETRGN16 UNALIGNED *POFFSETRGN16; + +typedef struct _OFFSETVIEWPORTORG16 { /* g17 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} OFFSETVIEWPORTORG16; +typedef OFFSETVIEWPORTORG16 UNALIGNED *POFFSETVIEWPORTORG16; + +typedef struct _OFFSETWINDOWORG16 { /* g15 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} OFFSETWINDOWORG16; +typedef OFFSETWINDOWORG16 UNALIGNED *POFFSETWINDOWORG16; + +typedef struct _PAINTRGN16 { /* g43 */ + HRGN16 f2; + HDC16 f1; +} PAINTRGN16; +typedef PAINTRGN16 UNALIGNED *PPAINTRGN16; + +typedef struct _PATBLT16 { /* g29 */ + DWORD dwRop; + SHORT nHeight; + SHORT nWidth; + SHORT y; + SHORT x; + HDC16 hdc; +} PATBLT16; +typedef PATBLT16 UNALIGNED *PPATBLT16; + +typedef struct _PIE16 { /* g26 */ + SHORT f9; + SHORT f8; + SHORT f7; + SHORT f6; + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} PIE16; +typedef PIE16 UNALIGNED *PPIE16; + +typedef struct _PLAYMETAFILE16 { /* g123 */ + HAND16 f2; + HDC16 f1; +} PLAYMETAFILE16; +typedef PLAYMETAFILE16 UNALIGNED *PPLAYMETAFILE16; + +typedef struct _PLAYMETAFILERECORD16 { /* g176 */ + WORD f4; + VPMETARECORD16 f3; + VPHANDLETABLE16 f2; + HDC16 f1; +} PLAYMETAFILERECORD16; +typedef PLAYMETAFILERECORD16 UNALIGNED *PPLAYMETAFILERECORD16; + +typedef struct _POLYGON16 { /* g36 */ + SHORT f3; + VPPOINT16 f2; + HDC16 f1; +} POLYGON16; +typedef POLYGON16 UNALIGNED *PPOLYGON16; + +typedef struct _POLYLINE16 { /* g37 */ + SHORT f3; + VPPOINT16 f2; + HDC16 f1; +} POLYLINE16; +typedef POLYLINE16 UNALIGNED *PPOLYLINE16; + +typedef struct _POLYPOLYGON16 { /* g450 */ + SHORT f4; + VPSHORT f3; + VPPOINT16 f2; + HDC16 f1; +} POLYPOLYGON16; +typedef POLYPOLYGON16 UNALIGNED *PPOLYPOLYGON16; + +typedef struct _POLYPOLYLINEWOW16 { /* g490 */ + DWORD f4; + VPDWORD f3; + VPDWORD f2; + HDC16 f1; +} POLYPOLYLINEWOW16; +typedef POLYPOLYLINEWOW16 UNALIGNED *PPOLYPOLYLINEWOW16; + +typedef struct _PTINREGION16 { /* g161 */ + SHORT f3; + SHORT f2; + HRGN16 f1; +} PTINREGION16; +typedef PTINREGION16 UNALIGNED *PPTINREGION16; + +typedef struct _PTVISIBLE16 { /* g103 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} PTVISIBLE16; +typedef PTVISIBLE16 UNALIGNED *PPTVISIBLE16; + +typedef struct _RECTANGLE16 { /* g27 */ + SHORT y2; + SHORT x2; + SHORT y1; + SHORT x1; + HDC16 hdc; +} RECTANGLE16; +typedef RECTANGLE16 UNALIGNED *PRECTANGLE16; + +typedef struct _RECTINREGION16 { /* g181 */ + VPRECT16 f2; + HRGN16 f1; +} RECTINREGION16; +typedef RECTINREGION16 UNALIGNED *PRECTINREGION16; + +typedef struct _RECTVISIBLE16 { /* g104 */ + VPRECT16 f2; + HDC16 f1; +} RECTVISIBLE16; +typedef RECTVISIBLE16 UNALIGNED *PRECTVISIBLE16; + +typedef struct _REMOVEFONTRESOURCE16 { /* g136 */ + VPSTR f1; +} REMOVEFONTRESOURCE16; +typedef REMOVEFONTRESOURCE16 UNALIGNED *PREMOVEFONTRESOURCE16; + +typedef struct _RESIZEPALETTE16 { /* g368 */ + WORD f2; + HPAL16 f1; +} RESIZEPALETTE16; +typedef RESIZEPALETTE16 UNALIGNED *PRESIZEPALETTE16; + +typedef struct _RESTOREDC16 { /* g39 */ + SHORT f2; + HDC16 f1; +} RESTOREDC16; +typedef RESTOREDC16 UNALIGNED *PRESTOREDC16; + +typedef struct _ROUNDRECT16 { /* g28 */ + SHORT f7; + SHORT f6; + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} ROUNDRECT16; +typedef ROUNDRECT16 UNALIGNED *PROUNDRECT16; + +typedef struct _SAVEDC16 { /* g30 */ + HDC16 f1; +} SAVEDC16; +typedef SAVEDC16 UNALIGNED *PSAVEDC16; + +typedef struct _SCALEVIEWPORTEXT16 { /* g18 */ + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} SCALEVIEWPORTEXT16; +typedef SCALEVIEWPORTEXT16 UNALIGNED *PSCALEVIEWPORTEXT16; + +typedef struct _SCALEWINDOWEXT16 { /* g16 */ + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} SCALEWINDOWEXT16; +typedef SCALEWINDOWEXT16 UNALIGNED *PSCALEWINDOWEXT16; + +typedef struct _SELECTCLIPRGN16 { /* g44 */ + HRGN16 f2; + HDC16 f1; +} SELECTCLIPRGN16; +typedef SELECTCLIPRGN16 UNALIGNED *PSELECTCLIPRGN16; + +typedef struct _SELECTOBJECT16 { /* g45 */ + HAND16 f2; + HDC16 f1; +} SELECTOBJECT16; +typedef SELECTOBJECT16 UNALIGNED *PSELECTOBJECT16; + +typedef struct _SETBITMAPBITS16 { /* g106 */ + VPSTR f3; + DWORD f2; + HBM16 f1; +} SETBITMAPBITS16; +typedef SETBITMAPBITS16 UNALIGNED *PSETBITMAPBITS16; + +typedef struct _SETBITMAPDIMENSION16 { /* g163 */ + SHORT f3; + SHORT f2; + HBM16 f1; +} SETBITMAPDIMENSION16; +typedef SETBITMAPDIMENSION16 UNALIGNED *PSETBITMAPDIMENSION16; + +typedef struct _SETBKCOLOR16 { /* g1 */ + DWORD f2; + HDC16 f1; +} SETBKCOLOR16; +typedef SETBKCOLOR16 UNALIGNED *PSETBKCOLOR16; + +typedef struct _SETBKMODE16 { /* g2 */ + SHORT f2; + HDC16 f1; +} SETBKMODE16; +typedef SETBKMODE16 UNALIGNED *PSETBKMODE16; + +typedef struct _SETBRUSHORG16 { /* g148 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} SETBRUSHORG16; +typedef SETBRUSHORG16 UNALIGNED *PSETBRUSHORG16; + +typedef struct _SETDIBITS16 { /* g440 */ + WORD f7; + VPBITMAPINFO16 f6; + VPSTR f5; + WORD f4; + WORD f3; + HAND16 f2; + HDC16 f1; +} SETDIBITS16; +typedef SETDIBITS16 UNALIGNED *PSETDIBITS16; + +typedef struct _SETDIBITSTODEVICE16 { /* g443 */ + WORD f12; + VPBITMAPINFO16 f11; + VPSTR f10; + WORD f9; + WORD f8; + WORD f7; + WORD f6; + WORD f5; + WORD f4; + WORD f3; + WORD f2; + HDC16 f1; +} SETDIBITSTODEVICE16; +typedef SETDIBITSTODEVICE16 UNALIGNED *PSETDIBITSTODEVICE16; + +typedef struct _SETENVIRONMENT16 { /* g132 */ + WORD f3; + VPSTR f2; + VPSTR f1; +} SETENVIRONMENT16; +typedef SETENVIRONMENT16 UNALIGNED *PSETENVIRONMENT16; + +typedef struct _SETMAPMODE16 { /* g3 */ + SHORT f2; + HDC16 f1; +} SETMAPMODE16; +typedef SETMAPMODE16 UNALIGNED *PSETMAPMODE16; + +typedef struct _SETMAPPERFLAGS16 { /* g349 */ + DWORD f2; + HDC16 f1; +} SETMAPPERFLAGS16; +typedef SETMAPPERFLAGS16 UNALIGNED *PSETMAPPERFLAGS16; + +typedef struct _SETMETAFILEBITS16 { /* g160 */ + HAND16 f1; +} SETMETAFILEBITS16; +typedef SETMETAFILEBITS16 UNALIGNED *PSETMETAFILEBITS16; + +typedef struct _SETPALETTEENTRIES16 { /* g364 */ + VPPALETTEENTRY16 f4; + WORD f3; + WORD f2; + HPAL16 f1; +} SETPALETTEENTRIES16; +typedef SETPALETTEENTRIES16 UNALIGNED *PSETPALETTEENTRIES16; + +typedef struct _SETPIXEL16 { /* g31 */ + DWORD f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} SETPIXEL16; +typedef SETPIXEL16 UNALIGNED *PSETPIXEL16; + +typedef struct _SETPOLYFILLMODE16 { /* g6 */ + SHORT f2; + HDC16 f1; +} SETPOLYFILLMODE16; +typedef SETPOLYFILLMODE16 UNALIGNED *PSETPOLYFILLMODE16; + +typedef struct _SETRECTRGN16 { /* g172 */ + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HRGN16 f1; +} SETRECTRGN16; +typedef SETRECTRGN16 UNALIGNED *PSETRECTRGN16; + +typedef struct _SETROP216 { /* g4 */ + SHORT f2; + HDC16 f1; +} SETROP216; +typedef SETROP216 UNALIGNED *PSETROP216; + +typedef struct _SETSTRETCHBLTMODE16 { /* g7 */ + SHORT f2; + HDC16 f1; +} SETSTRETCHBLTMODE16; +typedef SETSTRETCHBLTMODE16 UNALIGNED *PSETSTRETCHBLTMODE16; + +typedef struct _SETSYSTEMPALETTEUSE16 { /* g373 */ + WORD f2; + HDC16 f1; +} SETSYSTEMPALETTEUSE16; +typedef SETSYSTEMPALETTEUSE16 UNALIGNED *PSETSYSTEMPALETTEUSE16; + +typedef struct _SETTEXTALIGN16 { /* g346 */ + WORD f2; + HDC16 f1; +} SETTEXTALIGN16; +typedef SETTEXTALIGN16 UNALIGNED *PSETTEXTALIGN16; + +typedef struct _SETTEXTCHARACTEREXTRA16 { /* g8 */ + SHORT f2; + HDC16 f1; +} SETTEXTCHARACTEREXTRA16; +typedef SETTEXTCHARACTEREXTRA16 UNALIGNED *PSETTEXTCHARACTEREXTRA16; + +typedef struct _SETTEXTCOLOR16 { /* g9 */ + DWORD f2; + HDC16 f1; +} SETTEXTCOLOR16; +typedef SETTEXTCOLOR16 UNALIGNED *PSETTEXTCOLOR16; + +typedef struct _SETTEXTJUSTIFICATION16 { /* g10 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} SETTEXTJUSTIFICATION16; +typedef SETTEXTJUSTIFICATION16 UNALIGNED *PSETTEXTJUSTIFICATION16; + +typedef struct _SETVIEWPORTEXT16 { /* g14 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} SETVIEWPORTEXT16; +typedef SETVIEWPORTEXT16 UNALIGNED *PSETVIEWPORTEXT16; + +typedef struct _SETVIEWPORTORG16 { /* g13 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} SETVIEWPORTORG16; +typedef SETVIEWPORTORG16 UNALIGNED *PSETVIEWPORTORG16; + +typedef struct _SETWINDOWEXT16 { /* g12 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} SETWINDOWEXT16; +typedef SETWINDOWEXT16 UNALIGNED *PSETWINDOWEXT16; + +typedef struct _SETWINDOWORG16 { /* g11 */ + SHORT f3; + SHORT f2; + HDC16 f1; +} SETWINDOWORG16; +typedef SETWINDOWORG16 UNALIGNED *PSETWINDOWORG16; + +typedef struct _STRETCHBLT16 { /* g35 */ + DWORD f11; + SHORT f10; + SHORT f9; + SHORT f8; + SHORT f7; + HDC16 f6; + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} STRETCHBLT16; +typedef STRETCHBLT16 UNALIGNED *PSTRETCHBLT16; + +typedef struct _STRETCHDIBITS16 { /* g439 */ + DWORD f13; + WORD f12; + VPBITMAPINFO16 f11; + VPSTR f10; + WORD f9; + WORD f8; + WORD f7; + WORD f6; + WORD f5; + WORD f4; + WORD f3; + WORD f2; + HDC16 f1; +} STRETCHDIBITS16; +typedef STRETCHDIBITS16 UNALIGNED *PSTRETCHDIBITS16; + +typedef struct _TEXTOUT16 { /* g33 */ + SHORT f5; + VPSTR f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} TEXTOUT16; +typedef TEXTOUT16 UNALIGNED *PTEXTOUT16; + +typedef struct _UNREALIZEOBJECT16 { /* g150 */ + HBRSH16 f1; +} UNREALIZEOBJECT16; +typedef UNREALIZEOBJECT16 UNALIGNED *PUNREALIZEOBJECT16; + +typedef struct _UPDATECOLORS16 { /* g366 */ + HDC16 f1; +} UPDATECOLORS16; +typedef UPDATECOLORS16 UNALIGNED *PUPDATECOLORS16; + +// These are new functions for win 31 + +typedef struct _ABORTDOC16 { /* g382 */ + HDC16 f1; +} ABORTDOC16; +typedef ABORTDOC16 UNALIGNED *PABORTDOC16; + +typedef struct _CREATESCALABLEFONTRESOURCE16 { /* g510 */ + VPSZ f4; + VPSZ f3; + VPSZ f2; + WORD f1; +} CREATESCALABLEFONTRESOURCE16; +typedef CREATESCALABLEFONTRESOURCE16 UNALIGNED *PCREATESCALABLEFONTRESOURCE16; + +typedef struct _ENDDOC16 { /* g378 */ + HDC16 f1; +} ENDDOC16; +typedef ENDDOC16 UNALIGNED *PENDDOC16; + +typedef struct _ENDPAGE16 { /* g380 */ + HDC16 f1; +} ENDPAGE16; +typedef ENDPAGE16 UNALIGNED *PENDPAGE16; + +typedef struct _ENUMFONTFAMILIES16 { /* g330 */ + VPBYTE f4; + VPPROC f3; + VPSZ f2; + HDC16 f1; +} ENUMFONTFAMILIES16; +typedef ENUMFONTFAMILIES16 UNALIGNED *PENUMFONTFAMILIES16; + +typedef struct _GETBITMAPDIMENSIONEX16 { /* g468 */ + VPVOID f2; + WORD f1; +} GETBITMAPDIMENSIONEX16; +typedef GETBITMAPDIMENSIONEX16 UNALIGNED *PGETBITMAPDIMENSIONEX16; + +typedef struct _GETBOUNDSRECT16 { /* g194 */ + WORD f3; + VPRECT16 f2; + HDC16 f1; +} GETBOUNDSRECT16; +typedef GETBOUNDSRECT16 UNALIGNED *PGETBOUNDSRECT16; + +typedef struct _GETBRUSHORGEX16 { /* g469 */ + VPPOINT16 f2; + HDC16 f1; +} GETBRUSHORGEX16; +typedef GETBRUSHORGEX16 UNALIGNED *PGETBRUSHORGEX16; + +typedef struct _GETCHARABCWIDTHS16 { /* g307 */ + VPVOID f4; + WORD f3; + WORD f2; + HDC16 f1; +} GETCHARABCWIDTHS16; +typedef GETCHARABCWIDTHS16 UNALIGNED *PGETCHARABCWIDTHS16; + +typedef struct _GETCURRENTPOSITIONEX16 { /* g470 */ + VPPOINT16 f2; + HDC16 f1; +} GETCURRENTPOSITIONEX16; +typedef GETCURRENTPOSITIONEX16 UNALIGNED *PGETCURRENTPOSITIONEX16; + +typedef struct _GETFONTDATA16 { /* g311 */ + DWORD f5; + VPVOID f4; + DWORD f3; + DWORD f2; + HDC16 f1; +} GETFONTDATA16; +typedef GETFONTDATA16 UNALIGNED *PGETFONTDATA16; + +typedef struct _GETGLYPHOUTLINE16 { /* g309 */ + VPVOID f7; + VPVOID f6; + DWORD f5; + VPVOID f4; + WORD f3; + WORD f2; + HDC16 f1; +} GETGLYPHOUTLINE16; +typedef GETGLYPHOUTLINE16 UNALIGNED *PGETGLYPHOUTLINE16; + +typedef struct _GETOULTLINETEXTMETRICS16 { /* g1000 */ + VPVOID f3; + WORD f2; + HDC16 f1; +} GETOULTLINETEXTMETRICS16; +typedef GETOULTLINETEXTMETRICS16 UNALIGNED *PGETOULTLINETEXTMETRICS16; + +typedef struct _GETRASTERIZERCAPS16 { /* g313 */ + SHORT f2; + VPVOID f1; +} GETRASTERIZERCAPS16; +typedef GETRASTERIZERCAPS16 UNALIGNED *PGETRASTERIZERCAPS16; + +typedef struct _GETTEXTEXTENTEX16 { /* g2000 */ + VPVOID f6; + VPVOID f5; + SHORT f4; + SHORT f3; + VPSZ f2; + HDC16 f1; +} GETTEXTEXTENTEX16; +typedef GETTEXTEXTENTEX16 UNALIGNED *PGETTEXTEXTENTEX16; + +typedef struct _GETTEXTEXTENTPOINT16 { /* gxx */ + VPVOID f4; + SHORT f3; + VPSZ f2; + HDC16 f1; +} GETTEXTEXTENTPOINT16; +typedef GETTEXTEXTENTPOINT16 UNALIGNED *PGETTEXTEXTENTPOINT16; + +typedef struct _GETVIEWPORTEXTEX16 { /* g472 */ + VPVOID f2; + HDC16 f1; +} GETVIEWPORTEXTEX16; +typedef GETVIEWPORTEXTEX16 UNALIGNED *PGETVIEWPORTEXTEX16; + +typedef struct _GETVIEWPORTORGEX16 { /* g473 */ + VPPOINT16 f2; + HDC16 f1; +} GETVIEWPORTORGEX16; +typedef GETVIEWPORTORGEX16 UNALIGNED *PGETVIEWPORTORGEX16; + +typedef struct _GETWINDOWEXTEX16 { /* g474 */ + VPVOID f2; + HDC16 f1; +} GETWINDOWEXTEX16; +typedef GETWINDOWEXTEX16 UNALIGNED *PGETWINDOWEXTEX16; + +typedef struct _GETWINDOWORGEX16 { /* g475 */ + VPPOINT16 f2; + HDC16 f1; +} GETWINDOWORGEX16; +typedef GETWINDOWORGEX16 UNALIGNED *PGETWINDOWORGEX16; + +typedef struct _ISGDIOBJECT16 { /* g462 */ + WORD f1; +} ISGDIOBJECT16; +typedef ISGDIOBJECT16 UNALIGNED *PISGDIOBJECT16; + +typedef struct _MOVETOEX16 { /* g483 */ + VPPOINT16 f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} MOVETOEX16; +typedef MOVETOEX16 UNALIGNED *PMOVETOEX16; + +typedef struct _OFFSETVIEWPORTORGEX16 { /* g476 */ + VPPOINT16 f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} OFFSETVIEWPORTORGEX16; +typedef OFFSETVIEWPORTORGEX16 UNALIGNED *POFFSETVIEWPORTORGEX16; + +typedef struct _OFFSETWINDOWORGEX16 { /* g477 */ + VPPOINT16 f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} OFFSETWINDOWORGEX16; +typedef OFFSETWINDOWORGEX16 UNALIGNED *POFFSETWINDOWORGEX16; + +typedef struct _QUERTABORT16 { /* gxxx */ + SHORT f2; + HDC16 f1; +} QUERTABORT16; +typedef QUERTABORT16 UNALIGNED *PQUERTABORT16; + +typedef struct _RESETDC16 { /* g376 */ + VPVOID f2; + HDC16 f1; +} RESETDC16; +typedef RESETDC16 UNALIGNED *PRESETDC16; + +typedef struct _SCALEVIEWPORTEXTEX16 { /* g484 */ + VPVOID f6; + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} SCALEVIEWPORTEXTEX16; +typedef SCALEVIEWPORTEXTEX16 UNALIGNED *PSCALEVIEWPORTEXTEX16; + +typedef struct _SCALEWINDOWEXTEX16 { /* g485 */ + VPVOID f6; + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} SCALEWINDOWEXTEX16; +typedef SCALEWINDOWEXTEX16 UNALIGNED *PSCALEWINDOWEXTEX16; + +typedef struct _SETABORTPROC16 { /* g381 */ + VPVOID f2; + HDC16 f1; +} SETABORTPROC16; +typedef SETABORTPROC16 UNALIGNED *PSETABORTPROC16; + +typedef struct _SETBITMAPDIMENSIONEX16 { /* g478 */ + VPVOID f4; + SHORT f3; + SHORT f2; + WORD f1; +} SETBITMAPDIMENSIONEX16; +typedef SETBITMAPDIMENSIONEX16 UNALIGNED *PSETBITMAPDIMENSIONEX16; + +typedef struct _SETBOUNDSRECT16 { /* g193 */ + WORD f3; + VPRECT16 f2; + HDC16 f1; +} SETBOUNDSRECT16; +typedef SETBOUNDSRECT16 UNALIGNED *PSETBOUNDSRECT16; + +typedef struct _SETMETAFILEBITSBETTER16 { /* g196 */ + WORD f1; +} SETMETAFILEBITSBETTER16; +typedef SETMETAFILEBITSBETTER16 UNALIGNED *PSETMETAFILEBITSBETTER16; + +typedef struct _SETVIEWPORTEXTEX16 { /* g479 */ + VPVOID f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} SETVIEWPORTEXTEX16; +typedef SETVIEWPORTEXTEX16 UNALIGNED *PSETVIEWPORTEXTEX16; + +typedef struct _SETVIEWPORTORGEX16 { /* g480 */ + VPPOINT16 f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} SETVIEWPORTORGEX16; +typedef SETVIEWPORTORGEX16 UNALIGNED *PSETVIEWPORTORGEX16; + +typedef struct _SETWINDOWEXTEX16 { /* g481 */ + VPVOID f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} SETWINDOWEXTEX16; +typedef SETWINDOWEXTEX16 UNALIGNED *PSETWINDOWEXTEX16; + +typedef struct _SETWINDOWORGEX16 { /* g482 */ + VPPOINT16 f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} SETWINDOWORGEX16; +typedef SETWINDOWORGEX16 UNALIGNED *PSETWINDOWORGEX16; + +typedef struct _SPOOLFILE16 { /* g254 */ + VPSZ f4; + VPSZ f3; + VPSZ f2; + VPSZ f1; +} SPOOLFILE16; +typedef SPOOLFILE16 UNALIGNED *PSPOOLFILE16; + +typedef struct _STARTDOC16 { /* g377 */ + VPVOID f2; + HDC16 f1; +} STARTDOC16; +typedef STARTDOC16 UNALIGNED *PSTARTDOC16; + +typedef struct _STARTPAGE16 { /* g379 */ + HDC16 f1; +} STARTPAGE16; +typedef STARTPAGE16 UNALIGNED *PSTARTPAGE16; + +typedef struct _GETOUTLINETEXTMETRICS16 { /* g308 */ + VPVOID f3; + WORD f2; + HDC16 f1; +} GETOUTLINETEXTMETRICS16; +typedef GETOUTLINETEXTMETRICS16 UNALIGNED *PGETOUTLINETEXTMETRICS16; + +typedef struct _DOCINFO16 { /* di16wow32 */ + SHORT cbSize; + VPSZ lpszDocName; + VPSZ lpszOutput; +} DOCINFO16; +typedef DOCINFO16 UNALIGNED *LPDOCINFO16; + +typedef struct _SIZE16 { /* sz16wow32 */ + SHORT cx; + SHORT cy; +} SIZE16; +typedef SIZE16 UNALIGNED *PSIZE16; +typedef VPVOID VPSIZE16; + +typedef struct _INQUIREVISRGN16 { /* g131 */ + HDC16 f1; +}INQUIREVISRGN16; +typedef INQUIREVISRGN16 UNALIGNED *PINQUIREVISRGN16; + +typedef struct _GETCLIPRGN16 { /* g173 */ + HDC16 f1; +}GETCLIPRGN16; +typedef GETCLIPRGN16 UNALIGNED *PGETCLIPRGN16; + + +typedef struct _OPENJOB16 { /* g240 */ + WORD f3; + VPSZ f2; + VPSZ f1; +} OPENJOB16; +typedef OPENJOB16 UNALIGNED *POPENJOB16; + +typedef struct _STARTSPOOLPAGE16 { /* g246 */ + HAND16 f1; +} STARTSPOOLPAGE16; +typedef STARTSPOOLPAGE16 UNALIGNED *PSTARTSPOOLPAGE16; + +typedef struct _ENDSPOOLPAGE16 { /* g247 */ + HAND16 f1; +} ENDSPOOLPAGE16; +typedef ENDSPOOLPAGE16 UNALIGNED *PENDSPOOLPAGE16; + +typedef struct _CLOSEJOB16 { /* g243 */ + HAND16 f1; +} CLOSEJOB16; +typedef CLOSEJOB16 UNALIGNED *PCLOSEJOB16; + +typedef struct _WRITESPOOL16 { /* g241 */ + WORD f3; + VPSZ f2; + HAND16 f1; +} WRITESPOOL16; +typedef WRITESPOOL16 UNALIGNED *PWRITESPOOL16; + +typedef struct _DELETEJOB16 { /* g244 */ + WORD f2; + HAND16 f1; +} DELETEJOB16; +typedef DELETEJOB16 UNALIGNED *PDELETEJOB16; + +typedef struct _WRITEDIALOG16 { /* g242 */ + WORD f3; + VPSZ f2; + HAND16 f1; +} WRITEDIALOG16; +typedef WRITEDIALOG16 UNALIGNED *PWRITEDIALOG16; + +typedef struct _DMBITBLT16 { /* g201 */ + VPSZ pdrawmode; + VPSZ pbrush; + LONG rop; + WORD exty; + WORD extx; + WORD srcy; + WORD srcx; + VPSZ pbitmapsrc; + WORD desty; + WORD destx; + VPSZ pbitmapdest; +} DMBITBLT16; +typedef DMBITBLT16 UNALIGNED *PDMBITBLT16; + +typedef struct _GETCURLOGFONT16 { /* g411 */ + HAND16 hDC; +} GETCURLOGFONT16; +typedef GETCURLOGFONT16 UNALIGNED *PGETCURLOGFONT16; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ diff --git a/private/mvdm/inc/wowinfo.h b/private/mvdm/inc/wowinfo.h new file mode 100644 index 000000000..ba07213f9 --- /dev/null +++ b/private/mvdm/inc/wowinfo.h @@ -0,0 +1,58 @@ +/*++ BUILD Version: 0002 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWINFO.H + * 16-bit Kernel API argument structures + * + * History: + * Created 1-jun-1992 by Matt Felton (mattfe) +--*/ + +// the following UNALIGNED definition is required because wowinfo.h is +// included in 'wowexec.c' +// +// these lines are from ntdef.h +// + +#ifndef UNALIGNED + +#if defined(MIPS) || defined(_ALPHA_) // winnt +#define UNALIGNED __unaligned // winnt +#else // winnt +#define UNALIGNED // winnt +#endif // winnt + +#endif + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +typedef struct _WOWINFO { /**/ + LPSTR lpCmdLine; + LPSTR lpAppName; + LPSTR lpEnv; + DWORD iTask; + USHORT CmdLineSize; + USHORT AppNameSize; + USHORT EnvSize; + USHORT CurDrive; + LPSTR lpCurDir; + USHORT CurDirSize; + USHORT wShowWindow; +} WOWINFO; +typedef WOWINFO UNALIGNED *PWOWINFO; + +#define MAXENVIRONMENTSIZE 2048 // Max Size of Environment coped with. + + +/* XLATOFF */ +#pragma pack() +/* XLATON */ + +#define WM_WOWEXECSTARTAPP (WM_USER) // also in windows\inc\vdmapi.h +#define WM_WOWEXECHEARTBEAT (WM_USER+1) // To deliver timer ticks +#define WM_WOWEXECEXITEXEC (WM_USER+2) // To help do ExitWindowsExec() diff --git a/private/mvdm/inc/wowint.h b/private/mvdm/inc/wowint.h new file mode 100644 index 000000000..78a4a15dd --- /dev/null +++ b/private/mvdm/inc/wowint.h @@ -0,0 +1,28 @@ +/*++ BUILD Version: 0001 + * + * WOW v1.0 + * + * Copyright (c) 1992, Microsoft Corporation + * + * WOWINT.H + * 16-bit Internal API argument structures + * + * History: + * Created 22-Apr-1992 by FritzS + * +--*/ + +#define FUN_SETTABLE 0 // + + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +typedef struct _WOWSETTABLE16 { /* i0 */ + VPSZ f1; +} WOWSETTABLE16, *PWOWSETTABLE16; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ diff --git a/private/mvdm/inc/wowkbd.h b/private/mvdm/inc/wowkbd.h new file mode 100644 index 000000000..1170b5c6e --- /dev/null +++ b/private/mvdm/inc/wowkbd.h @@ -0,0 +1,115 @@ +/*++ BUILD Version: 0001 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWKBD.H + * 16-bit Keyboard API argument structures + * + * History: + * Created 02-Feb-1991 by Jeff Parsons (jeffpar) +--*/ + + +/* Keyboard API IDs + */ +#define FUN_ANSITOOEM 5 // +#define FUN_ANSITOOEMBUFF 134 // +#define FUN_DISABLE 3 // Internal +#define FUN_ENABLE 2 // Internal +#define FUN_ENABLEKBSYSREQ 136 // Internal +#define FUN_GETKBCODEPAGE 132 // +#define FUN_GETKEYBOARDTYPE 130 // +#define FUN_GETKEYNAMETEXT 133 // +#define FUN_GETTABLESEG 126 // Internal +#define FUN_INQUIRE 1 // Internal +#define FUN_KEYBOARD_WEP 0 // Export by name +#define FUN_MAPVIRTUALKEY 131 // +#define FUN_NEWTABLE 127 // Internal +#define FUN_OEMKEYSCAN 128 // +#define FUN_OEMTOANSI 6 // +#define FUN_OEMTOANSIBUFF 135 // +#define FUN_SCREENSWITCHENABLE 100 // Internal +#define FUN_SETSPEED 7 // Internal +#define FUN_TOASCII 4 // +#define FUN_VKKEYSCAN 129 // +#define FUN_GETBIOSKEYPROC 137 // + + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +typedef struct _ANSITOOEM16 { /* kb5 */ + VPSTR f2; + VPSTR f1; +} ANSITOOEM16; +typedef ANSITOOEM16 UNALIGNED *PANSITOOEM16; + +typedef struct _ANSITOOEMBUFF16 { /* kb134 */ + SHORT f3; + VPSTR f2; + VPSTR f1; +} ANSITOOEMBUFF16; +typedef ANSITOOEMBUFF16 UNALIGNED *PANSITOOEMBUFF16; + +#ifdef NULLSTRUCT +typedef struct _GETKBCODEPAGE16 { /* kb132 */ +} GETKBCODEPAGE16; +typedef GETKBCODEPAGE16 UNALIGNED *PGETKBCODEPAGE16; +#endif + +typedef struct _GETKEYBOARDTYPE16 { /* kb130 */ + SHORT f1; +} GETKEYBOARDTYPE16; +typedef GETKEYBOARDTYPE16 UNALIGNED *PGETKEYBOARDTYPE16; + +typedef struct _GETKEYNAMETEXT16 { /* kb133 */ + SHORT f3; + VPSTR f2; + LONG f1; +} GETKEYNAMETEXT16; +typedef GETKEYNAMETEXT16 UNALIGNED *PGETKEYNAMETEXT16; + +typedef struct _MAPVIRTUALKEY16 { /* kb131 */ + WORD f2; + WORD f1; +} MAPVIRTUALKEY16; +typedef MAPVIRTUALKEY16 UNALIGNED *PMAPVIRTUALKEY16; + +typedef struct _OEMKEYSCAN16 { /* kb128 */ + WORD f1; +} OEMKEYSCAN16; +typedef OEMKEYSCAN16 UNALIGNED *POEMKEYSCAN16; + +typedef struct _OEMTOANSI16 { /* kb6 */ + VPSTR f2; + VPSTR f1; +} OEMTOANSI16; +typedef OEMTOANSI16 UNALIGNED *POEMTOANSI16; + +typedef struct _OEMTOANSIBUFF16 { /* kb135 */ + SHORT f3; + VPSTR f2; + VPSTR f1; +} OEMTOANSIBUFF16; +typedef OEMTOANSIBUFF16 UNALIGNED *POEMTOANSIBUFF16; + +typedef struct _TOASCII16 { /* kb4 */ + WORD f5; + VPVOID f4; + VPSTR f3; + WORD f2; + WORD f1; +} TOASCII16; +typedef TOASCII16 UNALIGNED *PTOASCII16; + +typedef struct _VKKEYSCAN16 { /* kb129 */ + WORD f1; +} VKKEYSCAN16; +typedef VKKEYSCAN16 UNALIGNED *PVKKEYSCAN16; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ diff --git a/private/mvdm/inc/wowkrn.h b/private/mvdm/inc/wowkrn.h new file mode 100644 index 000000000..df1bf022d --- /dev/null +++ b/private/mvdm/inc/wowkrn.h @@ -0,0 +1,1370 @@ +/*++ BUILD Version: 0002 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWKRN.H + * 16-bit Kernel API argument structures + * + * History: + * Created 02-Feb-1991 by Jeff Parsons (jeffpar) + * 01-May-91 Matt Felton (mattfe) added Private Callback CHECKLOADMODULEDRV +--*/ + + +/* Kernel API IDs + */ +#define FUN_A20PROC 165 // Internal +#define FUN_ACCESSRESOURCE 64 // +#define FUN_ADDATOM 70 // +#define FUN_ALLOCALIAS 172 // No proto +#define FUN_ALLOCCSTODSALIAS 170 // No proto +#define FUN_ALLOCDSTOCSALIAS 171 // +#define FUN_ALLOCRESOURCE 66 // +#define FUN_ALLOCSELECTOR 175 // +#define FUN_ALLOCSELECTORARRAY 206 // Internal +#define FUN_CALLPROCINSTANCE 53 // Internal +#define FUN_CATCH 55 // +#define FUN_CVWBREAK 205 // No proto +#define FUN_DEBUGBREAK 203 // +#define FUN_DEBUGDEFINESEGMENT 212 // Internal +#define FUN_DEFINEHANDLETABLE 94 // No proto +#define FUN_DELETEATOM 71 // +#define FUN_DELETEPATHNAME 76 // Internal +#define FUN_DIRECTEDYIELD 150 // Internal +#define FUN_DIRECTRESALLOC 168 // Internal +#define FUN_DISABLEDOS 42 // Internal +#define FUN_DISABLEKERNEL 125 // Internal +#define FUN_DOS3CALL 102 // No proto +#define FUN_DOSIGNAL 139 // Internal +#define FUN_EMSCOPY 160 // Internal +#define FUN_ENABLEDOS 41 // Internal +#define FUN_ENABLEKERNEL 124 // Internal +#define FUN_EXITKERNEL 2 // Internal +#define FUN_FARVALIDATEPOINTER 210 // Internal +#define FUN_FATALAPPEXIT 137 // Internal +#define FUN_FATALEXIT 1 // +#define FUN_FILECDR 130 // Internal +#define FUN_FINDATOM 69 // +#define FUN_FINDRESOURCE 60 // +#define FUN_FREELIBRARY 96 // +#define FUN_FREEMODULE 46 // +#define FUN_FREEPROCINSTANCE 52 // +#define FUN_FREERESOURCE 63 // +#define FUN_FREESELECTOR 176 // +#define FUN_GETATOMHANDLE 73 // +#define FUN_GETATOMNAME 72 // +#define FUN_GETCODEHANDLE 93 // +#define FUN_GETCODEINFO 104 // Internal, proto +#define FUN_GETCURPID 157 // Internal +#define FUN_GETCURRENTPDB 37 // Internal, proto +#define FUN_GETCURRENTTASK 36 // +#define FUN_GETDOSENVIRONMENT 131 // +#define FUN_GETDRIVETYPE 136 // +#define FUN_GETEXEPTR 133 // Internal +#define FUN_GETEXEVERSION 105 // Internal +#define FUN_GETEXPWINVER 167 // Internal +#define FUN_GETFREEMEMINFO 214 // Internal +#define FUN_GETFREESPACE 169 // +#define FUN_GETHEAPSPACES 138 // Internal +#define FUN_GETINSTANCEDATA 54 // +#define FUN_GETLASTCRITICALERROR 211 // Internal +#define FUN_GETLASTDISKCHANGE 98 // Internal +#define FUN_GETLPERRMODE 99 // Internal +#define FUN_GETMODULEFILENAME 49 // +#define FUN_GETMODULEHANDLE 47 // +#define FUN_GETMODULEUSAGE 48 // +#define FUN_GETNUMTASKS 152 // +#define FUN_GETPRIVATEPROFILEINT 127 // +#define FUN_GETPRIVATEPROFILESTRING 128 // +#define FUN_GETPROCADDRESS 50 // +#define FUN_GETPROFILEINT 57 // +#define FUN_GETPROFILESTRING 58 // +#define FUN_GETSELECTORBASE 186 // Internal +#define FUN_GETSELECTORLIMIT 188 // Internal +#define FUN_GETSETKERNELDOSPROC 209 // Internal +#define FUN_GETSYSTEMDIRECTORY 135 // +#define FUN_GETTASKDS 155 // Internal +#define FUN_GETTASKQUEUE 35 // Internal +#define FUN_GETTASKQUEUEDS 118 // Internal +#define FUN_GETTASKQUEUEES 119 // Internal +#define FUN_GETTEMPDRIVE 92 // +#define FUN_GETTEMPFILENAME 97 // +#define FUN_GETVERSION 3 // +#define FUN_GETVERSIONEX 149 // +#define FUN_GETWINDOWSDIRECTORY 134 // +#define FUN_GETWINFLAGS 132 // +#define FUN_GLOBALALLOC 15 // +#define FUN_GLOBALCOMPACT 25 // +#define FUN_GLOBALDOSALLOC 184 // No proto +#define FUN_GLOBALDOSFREE 185 // No proto +#define FUN_GLOBALFIX 197 // +#define FUN_GLOBALFLAGS 22 // +#define FUN_GLOBALFREE 17 // +#define FUN_GLOBALFREEALL 26 // Internal +#define FUN_GLOBALHANDLE 21 // +#define FUN_GLOBALHANDLENORIP 159 // Internal +#define FUN_GLOBALLOCK 18 // +#define FUN_GLOBALLRUNEWEST 164 // +#define FUN_GLOBALLRUOLDEST 163 // +#define FUN_GLOBALMASTERHANDLE 28 // Internal +#define FUN_GLOBALNOTIFY 154 // +#define FUN_GLOBALPAGELOCK 191 // +#define FUN_GLOBALPAGEUNLOCK 192 // +#define FUN_GLOBALREALLOC 16 // +#define FUN_GLOBALSIZE 20 // +#define FUN_GLOBALUNFIX 198 // +#define FUN_GLOBALUNLOCK 19 // +#define FUN_GLOBALUNWIRE 112 // +#define FUN_GLOBALWIRE 111 // +#define FUN_INITATOMTABLE 68 // +#define FUN_INITLIB 116 // Internal +#define FUN_INITTASK 91 // Internal +#define FUN_INITTASK1 141 // Internal +#define FUN_ISDBCSLEADBYTE 207 // Internal +#define FUN_ISTASKLOCKED 122 // Internal +#define FUN_ISWINOLDAPTASK 158 // Internal +#define FUN_KBDRST 123 // Internal +#define FUN_LIMITEMSPAGES 156 // +#define FUN_LOADLIBRARY 95 // +#define FUN_LOADMODULE 45 // +#define FUN_LOADRESOURCE 61 // +#define FUN_LOCALALLOC 5 // +#define FUN_LOCALCOMPACT 13 // +#define FUN_LOCALCOUNTFREE 161 // Internal +#define FUN_LOCALFLAGS 12 // +#define FUN_LOCALFREE 7 // +#define FUN_LOCALHANDLE 11 // +#define FUN_LOCALHANDLEDELTA 208 // Internal +#define FUN_LOCALHEAPSIZE 162 // Internal +#define FUN_LOCALINIT 4 // +#define FUN_LOCALLOCK 8 // +#define FUN_LOCALNOTIFY 14 // Internal, proto +#define FUN_LOCALREALLOC 6 // +#define FUN_LOCALSHRINK 121 // +#define FUN_LOCALSIZE 10 // +#define FUN_LOCALUNLOCK 9 // +#define FUN_LOCKCURRENTTASK 33 // Internal +#define FUN_LOCKRESOURCE 62 // +#define FUN_LOCKSEGMENT 23 // +#define FUN_LONGPTRADD 180 // No proto +#define FUN_LSTRCAT 89 // +#define FUN_LSTRCPY 88 // +#define FUN_LSTRLEN 90 // +#define FUN_MAKEPROCINSTANCE 51 // +#define FUN_MEMORYFREED 126 // Internal +#define FUN_NETBIOSCALL 103 // No proto +#define FUN_NOHOOKDOSCALL 101 // Internal +#define FUN_OLDYIELD 117 // Internal +#define FUN_OPENFILE 74 // +#define FUN_OPENPATHNAME 75 // Internal +#define FUN_OUTPUTDEBUGSTRING 115 // +#define FUN_PATCHCODEHANDLE 110 // Internal +#define FUN_POSTEVENT 31 // Internal +#define FUN_PRESTOCHANGOSELECTOR 177 // Internal +#define FUN_REGISTERPTRACE 202 // Internal +#define FUN_REGENUMKEY32 216 +#define FUN_REGOPENKEY32 217 +#define FUN_REGCLOSEKEY32 220 +#define FUN_REGENUMVALUE32 223 +#define FUN_REPLACEINST 201 // Internal +#define FUN_RESERVED1 77 // ANSINEXT +#define FUN_RESERVED2 78 // ANSIPREV +#define FUN_RESERVED3 79 // ANSIUPPER +#define FUN_RESERVED4 80 // ANSILOWER +#define FUN_RESERVED5 87 // LSTRORIGINAL +#define FUN_SELECTORACCESSRIGHTS 196 // No proto +#define FUN_SETERRORMODE 107 // +#define FUN_SETHANDLECOUNT 199 // +#define FUN_SETPRIORITY 32 // Internal +#define FUN_SETRESOURCEHANDLER 67 // +#define FUN_SETSELECTORBASE 187 // Internal +#define FUN_SETSELECTORLIMIT 189 // Internal +#define FUN_SETSIGHANDLER 140 // Internal +#define FUN_SETSWAPAREASIZE 106 // +#define FUN_SETTASKQUEUE 34 // Internal +#define FUN_SETTASKSIGNALPROC 38 // Internal +#define FUN_SIZEOFRESOURCE 65 // +#define FUN_SWAPRECORDING 204 // +#define FUN_SWITCHSTACKBACK 109 // Internal, proto +#define FUN_SWITCHSTACKTO 108 // Internal, proto +#define FUN_THROW 56 // +#define FUN_UNDEFDYNLINK 120 // Internal +#define FUN_UNLOCKSEGMENT 24 // +#define FUN_VALIDATECODESEGMENTS 100 // +#define FUN_VALIDATEFREESPACES 200 // +#define FUN_WAITEVENT 30 // Internal +#define FUN_WINEXEC 166 // +#define FUN_WINOLDAPCALL 151 // Internal +#define FUN_WRITEOUTPROFILES 213 // Internal +#define FUN_WRITEPRIVATEPROFILESTRING 129 // +#define FUN_WRITEPROFILESTRING 59 // +#define FUN_YIELD 29 // +#define FUN__LCLOSE 81 // +#define FUN__LCREAT 83 // +#define FUN__LLSEEK 84 // +#define FUN__LOPEN 85 // +#define FUN__LREAD 82 // +#define FUN__LWRITE 86 // +#define FUN___0000h 183 // No proto +#define FUN___0040h 193 // No proto +#define FUN___A000h 174 // No proto +#define FUN___AHINCR 114 // No proto +#define FUN___AHSHIFT 113 // No proto +#define FUN___B000h 181 // No proto +#define FUN___B800h 182 // No proto +#define FUN___C000h 195 // No proto +#define FUN___D000h 179 // No proto +#define FUN___E000h 190 // No proto +#define FUN___F000h 194 // No proto +#define FUN___ROMBIOS 173 // No proto +#define FUN___WINFLAGS 178 // No proto + +// private kernel thunks +#define FUN_WOWSHOULDWESAYWIN95 215 // internal +#define FUN_WOWINITTASK 287 // internal +#define FUN_WOWKILLTASK 288 // internal +#define FUN_WOWFREERESOURCE 218 // internal +#define FUN_WOWFILEREAD 219 // internal +#define FUN_WOWFILEWRITE 290 // internal +#define FUN_WOWFILELSEEK 221 // internal +#define FUN_WOWKERNELTRACE 222 // internal +#define FUN_WOWGETNEXTVDMCOMMAND 293 // internal +#define FUN_WOWREGISTERSHELLWINDOWHANDLE 224 // internal +#define FUN_WOWLOADMODULE 225 // internal +#define FUN_WOWQUERYPERFORMANCECOUNTER 226 // internal +#define FUN_WOWOUTPUTDEBUGSTRING 227 // internal +#define FUN_WOWCURSORICONOP 228 // internal +#define FUN_WOWFAILEDEXEC 229 // internal +#define FUN_WOWGETFASTADDRESS 230 // internal +#define FUN_WOWCLOSECOMPORT 231 // internal +#define FUN_WOWDELFILE 232 // internal +#define FUN_VIRTUALALLOC 233 // internal +#define FUN_VIRTUALFREE 234 // internal +#define FUN_VIRTUALLOCK 235 // internal +#define FUN_VIRTUALUNLOCK 236 // internal +#define FUN_GLOBALMEMORYSTATUS 237 // internal +#define FUN_WOWGETFASTCBRETADDRESS 238 // internal +#define FUN_WOWGETTABLEOFFSETS 239 // internal +#define FUN_WOWKILLREMOTETASK 240 // internal +#define FUN_WOWNOTIFYWOW32 241 // internal +#define FUN_WOWFILEOPEN 242 // internal +#define FUN_WOWFILECLOSE 243 // internal +#define FUN_WOWSETIDLEHOOK 244 // internal: set the hook for system idle detection +#define FUN_KSYSERRORBOX 245 // Internal +#define FUN_WOWISKNOWNDLL 246 // internal +#define FUN_WOWDDEFREEHANDLE 247 // internal +#define FUN_WOWFILEGETATTRIBUTES 248 // internal +#define FUN_WOWFILEGETDATETIME 249 // internal +#define FUN_WOWFILELOCK 250 // internal +#define FUN_LOADLIBRARYEX32W 251 // +#define FUN_FREELIBRARY32W 252 // +#define FUN_GETPROCADDRESS32W 253 // +#define FUN_GETVDMPOINTER32W 254 // +#define FUN_ICALLPROC32W 255 // + +#define FUN_EXITWINDOWSEXECCONTINUE 256 // To continue ExitWindowsExec in USER + +#define FUN_WOWFINDFIRST 257 // internal +#define FUN_WOWFINDNEXT 258 // internal +#define FUN_WOWSETDEFAULTDRIVE 259 // internal +#define FUN_WOWGETCURRENTDIRECTORY 260 // internal +#define FUN_WOWSETCURRENTDIRECTORY 261 // internal +#define FUN_WOWWAITFORMSGANDEVENT 262 // internal +#define FUN_WOWMSGBOX 263 // internal +#define FUN_WOWGETFLATADDRESSARRAY 264 // internal +#define FUN_WOWGETCURRENTDATE 265 // internal + +#define FUN_WOWDEVICEIOCTL 267 // internal +#define FUN_WOWFILESETATTRIBUTES 268 // internal +#define FUN_WOWFILESETDATETIME 269 // internal +#define FUN_WOWFILECREATE 270 // internal +#define FUN_WOWDOSWOWINIT 271 // internal +#define FUN_WOWCHECKUSERGDI 272 // internal +#define FUN_WOWPARTYBYNUMBER 273 // internal +#define FUN_GETSHORTPATHNAME 274 +#define FUN_FINDANDRELEASEDIB 275 // internal +#define FUN_WOWRESERVEHTASK 276 // internal + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +typedef struct _ACCESSRESOURCE16 { /* k64 */ + HAND16 f2; + HAND16 f1; +} ACCESSRESOURCE16; +typedef ACCESSRESOURCE16 UNALIGNED *PACCESSRESOURCE16; + +typedef struct _ADDATOM16 { /* k70 */ + VPSTR f1; +} ADDATOM16; +typedef ADDATOM16 UNALIGNED *PADDATOM16; + +typedef struct _ALLOCDSTOCSALIAS16 { /* k171 */ + WORD f1; +} ALLOCDSTOCSALIAS16; +typedef ALLOCDSTOCSALIAS16 UNALIGNED *PALLOCDSTOCSALIAS16; + +typedef struct _ALLOCRESOURCE16 { /* k66 */ + DWORD f3; + HAND16 f2; + HAND16 f1; +} ALLOCRESOURCE16; +typedef ALLOCRESOURCE16 UNALIGNED *PALLOCRESOURCE16; + +typedef struct _ALLOCSELECTOR16 { /* k175 */ + WORD f1; +} ALLOCSELECTOR16; +typedef ALLOCSELECTOR16 UNALIGNED *PALLOCSELECTOR16; + +typedef struct _CATCH16 { /* k55 */ + VPCATCHBUF16 f1; +} CATCH16; +typedef CATCH16 UNALIGNED *PCATCH16; + +#ifdef NULLSTRUCT +typedef struct _DEBUGBREAK16 { /* k203 */ +} DEBUGBREAK16; +typedef DEBUGBREAK16 UNALIGNED *PDEBUGBREAK16; +#endif + +typedef struct _DELETEATOM16 { /* k71 */ + ATOM f1; +} DELETEATOM16; +typedef DELETEATOM16 UNALIGNED *PDELETEATOM16; + +typedef struct _EXITKERNEL16 { /* k2 */ + WORD wExitCode; +} EXITKERNEL16; +typedef EXITKERNEL16 UNALIGNED *PEXITKERNEL16; + +typedef struct _FATALEXIT16 { /* k1 */ + SHORT f1; +} FATALEXIT16; +typedef FATALEXIT16 UNALIGNED *PFATALEXIT16; + +typedef struct _FINDATOM16 { /* k69 */ + VPSTR f1; +} FINDATOM16; +typedef FINDATOM16 UNALIGNED *PFINDATOM16; + +typedef struct _FINDRESOURCE16 { /* k60 */ + VPSTR f3; + VPSTR f2; + HAND16 f1; +} FINDRESOURCE16; +typedef FINDRESOURCE16 UNALIGNED *PFINDRESOURCE16; + +typedef struct _FREELIBRARY16 { /* k96 */ + HAND16 f1; +} FREELIBRARY16; +typedef FREELIBRARY16 UNALIGNED *PFREELIBRARY16; + +typedef struct _FREEMODULE16 { /* k46 */ + HAND16 f1; +} FREEMODULE16; +typedef FREEMODULE16 UNALIGNED *PFREEMODULE16; + +typedef struct _FREEPROCINSTANCE16 { /* k52 */ + VPPROC f1; +} FREEPROCINSTANCE16; +typedef FREEPROCINSTANCE16 UNALIGNED *PFREEPROCINSTANCE16; + +typedef struct _FREERESOURCE16 { /* k63 */ + HAND16 f1; +} FREERESOURCE16; +typedef FREERESOURCE16 UNALIGNED *PFREERESOURCE16; + +typedef struct _FREESELECTOR16 { /* k176 */ + WORD f1; +} FREESELECTOR16; +typedef FREESELECTOR16 UNALIGNED *PFREESELECTOR16; + +typedef struct _GETATOMHANDLE16 { /* k73 */ + ATOM f1; +} GETATOMHANDLE16; +typedef GETATOMHANDLE16 UNALIGNED *PGETATOMHANDLE16; + +typedef struct _GETATOMNAME16 { /* k72 */ + SHORT f3; + VPSTR f2; + ATOM f1; +} GETATOMNAME16; +typedef GETATOMNAME16 UNALIGNED *PGETATOMNAME16; + +typedef struct _GETCODEHANDLE16 { /* k93 */ + VPPROC f1; +} GETCODEHANDLE16; +typedef GETCODEHANDLE16 UNALIGNED *PGETCODEHANDLE16; + +typedef struct _GETCODEINFO16 { /* k104 */ + VPVOID vpSegInfo; + VPPROC vpProc; +} GETCODEINFO16; +typedef GETCODEINFO16 UNALIGNED *PGETCODEINFO16; + +#ifdef NULLSTRUCT +typedef struct _GETCURRENTPDB16 { /* k37 */ +} GETCURRENTPDB16; +typedef GETCURRENTPDB16 UNALIGNED *PGETCURRENTPDB16; +#endif + +#ifdef NULLSTRUCT +typedef struct _GETCURRENTTASK16 { /* k36 */ +} GETCURRENTTASK16; +typedef GETCURRENTTASK16 UNALIGNED *PGETCURRENTTASK16; +#endif + +#ifdef NULLSTRUCT +typedef struct _GETDOSENVIRONMENT16 { /* k131 */ +} GETDOSENVIRONMENT16; +typedef GETDOSENVIRONMENT16 UNALIGNED *PGETDOSENVIRONMENT16; +#endif + +typedef struct _GETDRIVETYPE16 { /* k136 */ + SHORT f1; +} GETDRIVETYPE16; +typedef GETDRIVETYPE16 UNALIGNED *PGETDRIVETYPE16; + +typedef struct _GETFREESPACE16 { /* k169 */ + WORD f1; +} GETFREESPACE16; +typedef GETFREESPACE16 UNALIGNED *PGETFREESPACE16; + +typedef struct _GETINSTANCEDATA16 { /* k54 */ + SHORT f3; + WORD f2; + HAND16 f1; +} GETINSTANCEDATA16; +typedef GETINSTANCEDATA16 UNALIGNED *PGETINSTANCEDATA16; + +typedef struct _GETMODULEFILENAME16 { /* k49 */ + SHORT f3; + VPSTR f2; + HAND16 f1; +} GETMODULEFILENAME16; +typedef GETMODULEFILENAME16 UNALIGNED *PGETMODULEFILENAME16; + +typedef struct _WOWGETMODULEHANDLE16 { /* k47 */ + VPSTR lpszModuleName; +} WOWGETMODULEHANDLE16; +typedef WOWGETMODULEHANDLE16 UNALIGNED *PWOWGETMODULEHANDLE16; + +typedef struct _GETMODULEUSAGE16 { /* k48 */ + HAND16 f1; +} GETMODULEUSAGE16; +typedef GETMODULEUSAGE16 UNALIGNED *PGETMODULEUSAGE16; + +#ifdef NULLSTRUCT +typedef struct _GETNUMTASKS16 { /* k152 */ +} GETNUMTASKS16; +typedef GETNUMTASKS16 UNALIGNED *PGETNUMTASKS16; +#endif + +typedef struct _GETPRIVATEPROFILEINT16 { /* k127 */ + VPSTR f4; + SHORT f3; + VPSTR f2; + VPSTR f1; +} GETPRIVATEPROFILEINT16; +typedef GETPRIVATEPROFILEINT16 UNALIGNED *PGETPRIVATEPROFILEINT16; + +typedef struct _GETPRIVATEPROFILESTRING16 { /* k128 */ + VPSTR f6; + USHORT f5; + VPSTR f4; + VPSTR f3; + VPSTR f2; + VPSTR f1; +} GETPRIVATEPROFILESTRING16; +typedef GETPRIVATEPROFILESTRING16 UNALIGNED *PGETPRIVATEPROFILESTRING16; + +typedef struct _GETPROCADDRESS16 { /* k50 */ + VPSTR f2; + HAND16 f1; +} GETPROCADDRESS16; +typedef GETPROCADDRESS16 UNALIGNED *PGETPROCADDRESS16; + +typedef struct _GETPROFILEINT16 { /* k57 */ + SHORT f3; + VPSTR f2; + VPSTR f1; +} GETPROFILEINT16; +typedef GETPROFILEINT16 UNALIGNED *PGETPROFILEINT16; + +typedef struct _GETPROFILESTRING16 { /* k58 */ + USHORT f5; + VPSTR f4; + VPSTR f3; + VPSTR f2; + VPSTR f1; +} GETPROFILESTRING16; +typedef GETPROFILESTRING16 UNALIGNED *PGETPROFILESTRING16; + +typedef struct _GETSYSTEMDIRECTORY16 { /* k135 */ + WORD f2; + VPSTR f1; +} GETSYSTEMDIRECTORY16; +typedef GETSYSTEMDIRECTORY16 UNALIGNED *PGETSYSTEMDIRECTORY16; + +typedef struct _GETTEMPDRIVE16 { /* k92 */ + WORD f1; +} GETTEMPDRIVE16; +typedef GETTEMPDRIVE16 UNALIGNED *PGETTEMPDRIVE16; + +typedef struct _GETTEMPFILENAME16 { /* k97 */ + VPSTR f4; + WORD f3; + VPSTR f2; + WORD f1; +} GETTEMPFILENAME16; +typedef GETTEMPFILENAME16 UNALIGNED *PGETTEMPFILENAME16; + +#ifdef NULLSTRUCT +typedef struct _GETVERSION16 { /* k3 */ +} GETVERSION16; +typedef GETVERSION16 UNALIGNED *PGETVERSION16; +#endif + +typedef struct _GETVERSIONEX16 { /* k149 */ + VPVOID lpVersionInfo; +} GETVERSIONEX16; +typedef GETVERSIONEX16 UNALIGNED *PGETVERSIONEX16; + +typedef struct _GETWINDOWSDIRECTORY16 { /* k134 */ + WORD f2; + VPSTR f1; +} GETWINDOWSDIRECTORY16; +typedef GETWINDOWSDIRECTORY16 UNALIGNED *PGETWINDOWSDIRECTORY16; + +#ifdef NULLSTRUCT +typedef struct _GETWINFLAGS16 { /* k132 */ +} GETWINFLAGS16; +typedef GETWINFLAGS16 UNALIGNED *PGETWINFLAGS16; +#endif + +typedef struct _GLOBALALLOC16 { /* k15 */ + DWORD f2; + WORD f1; +} GLOBALALLOC16; +typedef GLOBALALLOC16 UNALIGNED *PGLOBALALLOC16; + +typedef struct _GLOBALCOMPACT16 { /* k25 */ + DWORD f1; +} GLOBALCOMPACT16; +typedef GLOBALCOMPACT16 UNALIGNED *PGLOBALCOMPACT16; + +typedef struct _GLOBALFIX16 { /* k197 */ + HAND16 f1; +} GLOBALFIX16; +typedef GLOBALFIX16 UNALIGNED *PGLOBALFIX16; + +typedef struct _GLOBALFLAGS16 { /* k22 */ + HAND16 f1; +} GLOBALFLAGS16; +typedef GLOBALFLAGS16 UNALIGNED *PGLOBALFLAGS16; + +typedef struct _GLOBALFREE16 { /* k17 */ + HAND16 f1; +} GLOBALFREE16; +typedef GLOBALFREE16 UNALIGNED *PGLOBALFREE16; + +typedef struct _GLOBALHANDLE16 { /* k21 */ + WORD f1; +} GLOBALHANDLE16; +typedef GLOBALHANDLE16 UNALIGNED *PGLOBALHANDLE16; + +typedef struct _GLOBALLOCK16 { /* k18 */ + HAND16 f1; +} GLOBALLOCK16; +typedef GLOBALLOCK16 UNALIGNED *PGLOBALLOCK16; + +typedef struct _GLOBALLRUNEWEST16 { /* k164 */ + HAND16 f1; +} GLOBALLRUNEWEST16; +typedef GLOBALLRUNEWEST16 UNALIGNED *PGLOBALLRUNEWEST16; + +typedef struct _GLOBALLRUOLDEST16 { /* k163 */ + HAND16 f1; +} GLOBALLRUOLDEST16; +typedef GLOBALLRUOLDEST16 UNALIGNED *PGLOBALLRUOLDEST16; + +typedef struct _GLOBALNOTIFY16 { /* k154 */ + VPPROC f1; +} GLOBALNOTIFY16; +typedef GLOBALNOTIFY16 UNALIGNED *PGLOBALNOTIFY16; + +typedef struct _GLOBALPAGELOCK16 { /* k191 */ + HAND16 f1; +} GLOBALPAGELOCK16; +typedef GLOBALPAGELOCK16 UNALIGNED *PGLOBALPAGELOCK16; + +typedef struct _GLOBALPAGEUNLOCK16 { /* k192 */ + HAND16 f1; +} GLOBALPAGEUNLOCK16; +typedef GLOBALPAGEUNLOCK16 UNALIGNED *PGLOBALPAGEUNLOCK16; + +typedef struct _GLOBALREALLOC16 { /* k16 */ + WORD f3; + DWORD f2; + HAND16 f1; +} GLOBALREALLOC16; +typedef GLOBALREALLOC16 UNALIGNED *PGLOBALREALLOC16; + +typedef struct _GLOBALSIZE16 { /* k20 */ + HAND16 f1; +} GLOBALSIZE16; +typedef GLOBALSIZE16 UNALIGNED *PGLOBALSIZE16; + +typedef struct _GLOBALUNFIX16 { /* k198 */ + HAND16 f1; +} GLOBALUNFIX16; +typedef GLOBALUNFIX16 UNALIGNED *PGLOBALUNFIX16; + +typedef struct _GLOBALUNLOCK16 { /* k19 */ + HAND16 f1; +} GLOBALUNLOCK16; +typedef GLOBALUNLOCK16 UNALIGNED *PGLOBALUNLOCK16; + +typedef struct _GLOBALUNWIRE16 { /* k112 */ + HAND16 f1; +} GLOBALUNWIRE16; +typedef GLOBALUNWIRE16 UNALIGNED *PGLOBALUNWIRE16; + +typedef struct _GLOBALWIRE16 { /* k111 */ + HAND16 f1; +} GLOBALWIRE16; +typedef GLOBALWIRE16 UNALIGNED *PGLOBALWIRE16; + +typedef struct _INITATOMTABLE16 { /* k68 */ + SHORT f1; +} INITATOMTABLE16; +typedef INITATOMTABLE16 UNALIGNED *PINITATOMTABLE16; + +#ifdef NULLSTRUCT +typedef struct _INITTASK16 { /* k91 */ +} INITTASK16; +typedef INITTASK16 UNALIGNED *PINITTASK16; +#endif + +typedef struct _LIMITEMSPAGES16 { /* k156 */ + DWORD f1; +} LIMITEMSPAGES16; +typedef LIMITEMSPAGES16 UNALIGNED *PLIMITEMSPAGES16; + +typedef struct _LOADLIBRARY16 { /* k95 */ + VPSTR f1; +} LOADLIBRARY16; +typedef LOADLIBRARY16 UNALIGNED *PLOADLIBRARY16; + +typedef struct _LOADMODULE16 { /* k45 */ + VPVOID f2; + VPSTR f1; +} LOADMODULE16; +typedef LOADMODULE16 UNALIGNED *PLOADMODULE16; + +typedef struct _LOADRESOURCE16 { /* k61 */ + HAND16 f2; + HAND16 f1; +} LOADRESOURCE16; +typedef LOADRESOURCE16 UNALIGNED *PLOADRESOURCE16; + +typedef struct _LOCALALLOC16 { /* k5 */ + WORD f2; + WORD f1; +} LOCALALLOC16; +typedef LOCALALLOC16 UNALIGNED *PLOCALALLOC16; + +typedef struct _LOCALCOMPACT16 { /* k13 */ + WORD f1; +} LOCALCOMPACT16; +typedef LOCALCOMPACT16 UNALIGNED *PLOCALCOMPACT16; + +typedef struct _LOCALFLAGS16 { /* k12 */ + HAND16 f1; +} LOCALFLAGS16; +typedef LOCALFLAGS16 UNALIGNED *PLOCALFLAGS16; + +typedef struct _LOCALFREE16 { /* k7 */ + HAND16 f1; +} LOCALFREE16; +typedef LOCALFREE16 UNALIGNED *PLOCALFREE16; + +typedef struct _LOCALHANDLE16 { /* k11 */ + WORD f1; +} LOCALHANDLE16; +typedef LOCALHANDLE16 UNALIGNED *PLOCALHANDLE16; + +typedef struct _LOCALINIT16 { /* k4 */ + WORD f3; + WORD f2; + WORD f1; +} LOCALINIT16; +typedef LOCALINIT16 UNALIGNED *PLOCALINIT16; + +typedef struct _LOCALLOCK16 { /* k8 */ + HAND16 f1; +} LOCALLOCK16; +typedef LOCALLOCK16 UNALIGNED *PLOCALLOCK16; + +typedef struct _LOCALNOTIFY16 { /* k14 */ + VPPROC f1; +} LOCALNOTIFY16; +typedef LOCALNOTIFY16 UNALIGNED *PLOCALNOTIFY16; + +typedef struct _LOCALREALLOC16 { /* k6 */ + WORD f3; + WORD f2; + HAND16 f1; +} LOCALREALLOC16; +typedef LOCALREALLOC16 UNALIGNED *PLOCALREALLOC16; + +typedef struct _LOCALSHRINK16 { /* k121 */ + WORD f2; + HAND16 f1; +} LOCALSHRINK16; +typedef LOCALSHRINK16 UNALIGNED *PLOCALSHRINK16; + +typedef struct _LOCALSIZE16 { /* k10 */ + HAND16 f1; +} LOCALSIZE16; +typedef LOCALSIZE16 UNALIGNED *PLOCALSIZE16; + +typedef struct _LOCALUNLOCK16 { /* k9 */ + HAND16 f1; +} LOCALUNLOCK16; +typedef LOCALUNLOCK16 UNALIGNED *PLOCALUNLOCK16; + +typedef struct _LOCKRESOURCE16 { /* k62 */ + HAND16 f1; +} LOCKRESOURCE16; +typedef LOCKRESOURCE16 UNALIGNED *PLOCKRESOURCE16; + +typedef struct _LOCKSEGMENT16 { /* k23 */ + WORD f1; +} LOCKSEGMENT16; +typedef LOCKSEGMENT16 UNALIGNED *PLOCKSEGMENT16; + +typedef struct _LSTRCAT16 { /* k89 */ + VPSTR f2; + VPSTR f1; +} LSTRCAT16; +typedef LSTRCAT16 UNALIGNED *PLSTRCAT16; + +typedef struct _LSTRCPY16 { /* k88 */ + VPSTR f2; + VPSTR f1; +} LSTRCPY16; +typedef LSTRCPY16 UNALIGNED *PLSTRCPY16; + +typedef struct _LSTRLEN16 { /* k90 */ + VPSTR f1; +} LSTRLEN16; +typedef LSTRLEN16 UNALIGNED *PLSTRLEN16; + +typedef struct _MAKEPROCINSTANCE16 { /* k51 */ + HAND16 f2; + VPPROC f1; +} MAKEPROCINSTANCE16; +typedef MAKEPROCINSTANCE16 UNALIGNED *PMAKEPROCINSTANCE16; + +typedef struct _OPENFILE16 { /* k74 */ + WORD f3; + VPOFSTRUCT16 f2; + VPSTR f1; +} OPENFILE16; +typedef OPENFILE16 UNALIGNED *POPENFILE16; + +typedef struct _OUTPUTDEBUGSTRING16 { /* k115 */ + VPSTR vpString; +} OUTPUTDEBUGSTRING16; +typedef OUTPUTDEBUGSTRING16 UNALIGNED *POUTPUTDEBUGSTRING16; + +typedef struct _SETERRORMODE16 { /* k107 */ + WORD f1; +} SETERRORMODE16; +typedef SETERRORMODE16 UNALIGNED *PSETERRORMODE16; + +typedef struct _SETHANDLECOUNT16 { /* k199 */ + WORD f1; +} SETHANDLECOUNT16; +typedef SETHANDLECOUNT16 UNALIGNED *PSETHANDLECOUNT16; + +typedef struct _SETRESOURCEHANDLER16 { /* k67 */ + VPPROC f3; + VPSTR f2; + HAND16 f1; +} SETRESOURCEHANDLER16; +typedef SETRESOURCEHANDLER16 UNALIGNED *PSETRESOURCEHANDLER16; + +typedef struct _SETSWAPAREASIZE16 { /* k106 */ + WORD f1; +} SETSWAPAREASIZE16; +typedef SETSWAPAREASIZE16 UNALIGNED *PSETSWAPAREASIZE16; + +typedef struct _SIZEOFRESOURCE16 { /* k65 */ + HAND16 f2; + HAND16 f1; +} SIZEOFRESOURCE16; +typedef SIZEOFRESOURCE16 UNALIGNED *PSIZEOFRESOURCE16; + +typedef struct _SWAPRECORDING16 { /* k204 */ + WORD f1; +} SWAPRECORDING16; +typedef SWAPRECORDING16 UNALIGNED *PSWAPRECORDING16; + +#ifdef NULLSTRUCT +typedef struct _SWITCHSTACKBACK16 { /* k109 */ +} SWITCHSTACKBACK16; +typedef SWITCHSTACKBACK16 UNALIGNED *PSWITCHSTACKBACK16; +#endif + +typedef struct _SWITCHSTACKTO16 { /* k108 */ + WORD f3; + WORD f2; + WORD f1; +} SWITCHSTACKTO16; +typedef SWITCHSTACKTO16 UNALIGNED *PSWITCHSTACKTO16; + +typedef struct _THROW16 { /* k56 */ + SHORT f2; + VPCATCHBUF16 f1; +} THROW16; +typedef THROW16 UNALIGNED *PTHROW16; + +typedef struct _UNLOCKSEGMENT16 { /* k24 */ + WORD f1; +} UNLOCKSEGMENT16; +typedef UNLOCKSEGMENT16 UNALIGNED *PUNLOCKSEGMENT16; + +#ifdef NULLSTRUCT +typedef struct _VALIDATECODESEGMENTS16 { /* k100 */ +} VALIDATECODESEGMENTS16; +typedef VALIDATECODESEGMENTS16 UNALIGNED *PVALIDATECODESEGMENTS16; +#endif + +#ifdef NULLSTRUCT +typedef struct _VALIDATEFREESPACES16 { /* k200 */ +} VALIDATEFREESPACES16; +typedef VALIDATEFREESPACES16 UNALIGNED *PVALIDATEFREESPACES16; +#endif + +typedef struct _WAITEVENT16 { /* k30 */ + WORD wTaskID; +} WAITEVENT16; +typedef WAITEVENT16 UNALIGNED *PWAITEVENT16; + +typedef struct _WINEXEC16 { /* k166 */ + WORD f2; + VPSTR f1; +} WINEXEC16; +typedef WINEXEC16 UNALIGNED *PWINEXEC16; + +typedef struct _WRITEPRIVATEPROFILESTRING16 { /* k129 */ + VPSTR f4; + VPSTR f3; + VPSTR f2; + VPSTR f1; +} WRITEPRIVATEPROFILESTRING16; +typedef WRITEPRIVATEPROFILESTRING16 UNALIGNED *PWRITEPRIVATEPROFILESTRING16; + +typedef struct _WRITEPROFILESTRING16 { /* k59 */ + VPSTR f3; + VPSTR f2; + VPSTR f1; +} WRITEPROFILESTRING16; +typedef WRITEPROFILESTRING16 UNALIGNED *PWRITEPROFILESTRING16; + +#ifdef NULLSTRUCT +typedef struct _YIELD16 { /* k29 */ +} YIELD16; +typedef YIELD16 UNALIGNED *PYIELD16; +#endif + +typedef struct __LCLOSE16 { /* k81 */ + SHORT f1; +} _LCLOSE16; +typedef _LCLOSE16 UNALIGNED *P_LCLOSE16; + +typedef struct __LCREAT16 { /* k83 */ + SHORT f2; + VPSTR f1; +} _LCREAT16; +typedef _LCREAT16 UNALIGNED *P_LCREAT16; + +typedef struct __LLSEEK16 { /* k84 */ + SHORT f3; + LONG f2; + SHORT f1; +} _LLSEEK16; +typedef _LLSEEK16 UNALIGNED *P_LLSEEK16; + +typedef struct __LOPEN16 { /* k85 */ + SHORT f2; + VPSTR f1; +} _LOPEN16; +typedef _LOPEN16 UNALIGNED *P_LOPEN16; + +typedef struct __LREAD16 { /* k82 */ + SHORT f3; + VPSTR f2; + SHORT f1; +} _LREAD16; +typedef _LREAD16 UNALIGNED *P_LREAD16; + +typedef struct __LWRITE16 { /* k86 */ + SHORT f3; + VPSTR f2; + SHORT f1; +} _LWRITE16; +typedef _LWRITE16 UNALIGNED *P_LWRITE16; + +typedef struct _FILEIOREAD16 { /* K211 */ + DWORD lpSFT; + DWORD lpPDB; + DWORD bufsize; + DWORD lpBuf; + WORD fh; +} FILEIOREAD16; +typedef FILEIOREAD16 UNALIGNED *PFILEIOREAD16; + +typedef struct _FILEIOWRITE16 { /* K290 */ + DWORD lpSFT; + DWORD lpPDB; + DWORD bufsize; + DWORD lpBuf; + WORD fh; +} FILEIOWRITE16; +typedef FILEIOWRITE16 UNALIGNED *PFILEIOWRITE16; + +typedef struct _FILEIOLSEEK16 { /* K213 */ + DWORD lpSFT; + DWORD lpPDB; + WORD mode; + DWORD fileOffset; + WORD fh; +} FILEIOLSEEK16; +typedef FILEIOLSEEK16 UNALIGNED *PFILEIOLSEEK16; + +typedef struct _KERNELTRACE16 { /* K214 */ + DWORD lpUserArgs; + WORD cParms; + VPSTR lpRoutineName; +} KERNELTRACE16; +typedef KERNELTRACE16 UNALIGNED *PKERNELTRACE16; + +typedef struct _WOWGETNEXTVDMCOMMAND16 { /* k293 */ + VPVOID lpWowInfo; +} WOWGETNEXTVDMCOMMAND16; +typedef WOWGETNEXTVDMCOMMAND16 UNALIGNED *PWOWGETNEXTVDMCOMMAND16; + +typedef struct _WOWREGISTERSHELLWINDOWHANDLE16 { /* k504 */ + HWND16 hwndFax; + VPWORD lpwCmdShow; + HWND16 hwndShell; +} WOWREGISTERSHELLWINDOWHANDLE16; +typedef WOWREGISTERSHELLWINDOWHANDLE16 UNALIGNED *PWOWREGISTERSHELLWINDOWHANDLE16; + +typedef struct _WOWLOADMODULE16 { /* k505 */ + VPSTR lpWinOldAppCmd; + VPVOID lpParameterBlock; + VPSTR lpModuleName; +} WOWLOADMODULE16; +typedef WOWLOADMODULE16 UNALIGNED *PWOWLOADMODULE16; + +typedef struct _WOWQUERYPERFORMANCECOUNTER16 { /* k506 */ + VPVOID lpPerformanceFrequency; + VPVOID lpPerformanceCounter; +} WOWQUERYPERFORMANCECOUNTER16; +typedef WOWQUERYPERFORMANCECOUNTER16 UNALIGNED *PWOWQUERYPERFORMANCECOUNTER16; + +typedef struct _WOWCURSORICONOP16 { /* K507 */ + WORD wFuncId; + WORD h16; +} WOWCURSORICONOP16; +typedef WOWCURSORICONOP16 UNALIGNED *PWOWCURSORICONOP16; + + +typedef struct _WOWINITTASK16 { /* K287 */ + DWORD dwExpWinVer; +} WOWINITTASK16; +typedef WOWINITTASK16 UNALIGNED *PWOWINITTASK16; + +typedef struct _PARAMETERBLOCK16 { /* lpParameterBlock */ + WORD wEnvSeg; + VPVOID lpCmdLine; + VPVOID lpCmdShow; + DWORD dwReserved; +} PARAMETERBLOCK16; +typedef PARAMETERBLOCK16 UNALIGNED *PPARAMETERBLOCK16; + +typedef struct _DIRECTEDYIELD16 { /* k150 */ + WORD hTask16; +} DIRECTEDYIELD16; +typedef DIRECTEDYIELD16 UNALIGNED *PDIRECTEDYIELD16; + +typedef struct _POSTEVENT16 { /* k31 */ + WORD hTask16; +} POSTEVENT16; +typedef POSTEVENT16 UNALIGNED *PPOSTEVENT16; + +typedef struct _SETPRIORITY16 { /* k32 */ + WORD wPriority; + WORD hTask16; +} SETPRIORITY16; +typedef SETPRIORITY16 UNALIGNED *PSETPRIORITY16; + +typedef struct _LOCKCURRENTTASK16 { /* k33 */ + WORD fLock; +} LOCKCURRENTTASK16; +typedef LOCKCURRENTTASK16 UNALIGNED *PLOCKCURRENTTASK16; + +typedef struct _SETTASKQUEUE16 { /* k34 */ + WORD hQueue; + WORD hTask16; +} SETTASKQUEUE16; +typedef SETTASKQUEUE16 UNALIGNED *PSETTASKQUEUE16; + +typedef struct _WOWCLOSECOMPORT16 { /* k509 */ + WORD wPortId; +} WOWCLOSECOMPORT16; +typedef WOWCLOSECOMPORT16 UNALIGNED *PWOWCLOSECOMPORT16; + +typedef struct _WOWDELFILE16 { /* k510 */ + VPSTR lpFile; +} WOWDELFILE16; +typedef WOWDELFILE16 UNALIGNED *PWOWDELFILE16; + +typedef struct _FILEIOOPEN16 { /* k242 */ + DWORD lpSFT; + DWORD lpPDB; + WORD wAccess; + WORD pszPathOffset; + WORD pszPathSegment; +} FILEIOOPEN16; +typedef FILEIOOPEN16 UNALIGNED *PFILEIOOPEN16; + +typedef struct _FILEIOCLOSE16 { /* k243 */ + DWORD lpSFT; + DWORD lpPDB; + WORD hFile; +} FILEIOCLOSE16; +typedef FILEIOCLOSE16 UNALIGNED *PFILEIOCLOSE16; + +typedef struct _FILEIOGETATTRIBUTES16 { /* k248 */ + WORD pszPathOffset; + WORD pszPathSegment; +} FILEIOGETATTRIBUTES16; +typedef FILEIOGETATTRIBUTES16 UNALIGNED *PFILEIOGETATTRIBUTES16; + +typedef struct _FILEIOGETDATETIME16 { /* k249 */ + DWORD lpSFT; + DWORD lpPDB; + WORD fh; +} FILEIOGETDATETIME16; +typedef FILEIOGETDATETIME16 UNALIGNED *PFILEIOGETDATETIME16; + +typedef struct _FILEIOLOCK16 { /* k250 */ + DWORD lpSFT; + DWORD lpPDB; + DWORD cbRegionLength; + DWORD cbRegionOffset; + WORD fh; + WORD ax; +} FILEIOLOCK16; +typedef FILEIOLOCK16 UNALIGNED *PFILEIOLOCK16; + +typedef struct _VIRTUALALLOC16 { /* i1 */ + DWORD fdwProtect; + DWORD fdwAllocationType; + DWORD cbSize; + DWORD lpvAddress; +} VIRTUALALLOC16; +typedef VIRTUALALLOC16 UNALIGNED *PVIRTUALALLOC16; + +typedef struct _VIRTUALFREE16 { /* i2 */ + DWORD fdwFreeType; + DWORD cbSize; + DWORD lpvAddress; +} VIRTUALFREE16; +typedef VIRTUALFREE16 UNALIGNED *PVIRTUALFREE16; + +typedef struct _VIRTUALLOCK16 { /* i3 */ + DWORD cbSize; + DWORD lpvAddress; +} VIRTUALLOCK16; +typedef VIRTUALLOCK16 UNALIGNED *PVIRTUALLOCK16; + +typedef struct _VIRTUALUNLOCK16 { /* i4 */ + DWORD cbSize; + DWORD lpvAddress; +} VIRTUALUNLOCK16; +typedef VIRTUALUNLOCK16 UNALIGNED *PVIRTUALUNLOCK16; + +typedef struct _GLOBALMEMORYSTATUS16 { /* i5 */ + VPVOID lpmstMemStat; +} GLOBALMEMORYSTATUS16; +typedef GLOBALMEMORYSTATUS16 UNALIGNED *PGLOBALMEMORYSTATUS16; + +typedef struct _WOWGETTABLEOFFSETS16 { /* i6 */ + VPVOID vpThunkTableOffsets; +} WOWGETTABLEOFFSETS16; +typedef WOWGETTABLEOFFSETS16 UNALIGNED *PWOWGETTABLEOFFSETS16; + +typedef struct _WOWKILLREMOTETASK16 { /* k511 */ + VPVOID lpBuffer; +} WOWKILLREMOTETASK16; +typedef WOWKILLREMOTETASK16 UNALIGNED *PWOWKILLREMOTETASK16; + +typedef struct _WOWNOTIFYWOW3216 { /* k512 */ + VPVOID Int21Handler; + VPVOID lpnum_tasks; + VPVOID lpcurTDB; + VPVOID lpDebugWOW; + VPVOID lpLockTDB; + VPVOID lptopPDB; + VPVOID lpCurDirOwner; +} WOWNOTIFYWOW3216; +typedef WOWNOTIFYWOW3216 UNALIGNED *PWOWNOTIFYWOW3216; + +typedef struct _KSYSERRORBOX16 { /* k245 */ + SHORT sBtn3; + SHORT sBtn2; + SHORT sBtn1; + VPSZ vpszCaption; + VPSZ vpszText; +} KSYSERRORBOX16; +typedef KSYSERRORBOX16 UNALIGNED *PKSYSERRORBOX16; + + +typedef struct _WOWDDEFREEHANDLE16 { /* kdde */ + WORD h16; +} WOWDDEFREEHANDLE16; +typedef WOWDDEFREEHANDLE16 UNALIGNED *PWOWDDEFREEHANDLE16; + +typedef struct _WOWISKNOWNDLL16 { /* k246 */ + VPVOID lplpszKnownDLLPath; + VPVOID lpszPath; +} WOWISKNOWNDLL16; + +typedef struct _LOADLIBRARYEX32 { /* k248 */ + DWORD dwFlags; + DWORD hFile; + VPVOID lpszLibFile; +} LOADLIBRARYEX32; +typedef LOADLIBRARYEX32 UNALIGNED *PLOADLIBRARYEX32; + +typedef struct _FREELIBRARY32 { /* k249 */ + DWORD hLibModule; +} FREELIBRARY32; +typedef FREELIBRARY32 UNALIGNED *PFREELIBRARY32; + + +typedef struct _GETPROCADDRESS32 { /* k250 */ + VPVOID lpszProc; + DWORD hModule; +} GETPROCADDRESS32; +typedef GETPROCADDRESS32 UNALIGNED *PGETPROCADDRESS32; + +typedef struct _GETVDMPOINTER32 { /* k251 */ + SHORT fMode; + VPVOID lpAddress; +} GETVDMPOINTER32; +typedef GETVDMPOINTER32 UNALIGNED *PGETVDMPOINTER32; + + +typedef struct _ICALLPROC32 { /* k252 */ + WORD rbp; + DWORD retaddr; + DWORD cParams; + DWORD fAddressConvert; + DWORD lpProcAddress; + DWORD p1; + DWORD p2; + DWORD p3; + DWORD p4; + DWORD p5; + DWORD p6; + DWORD p7; + DWORD p8; + DWORD p9; + DWORD p10; + DWORD p11; + DWORD p12; + DWORD p13; + DWORD p14; + DWORD p15; + DWORD p16; + DWORD p17; + DWORD p18; + DWORD p19; + DWORD p20; + DWORD p21; + DWORD p22; + DWORD p23; + DWORD p24; + DWORD p25; + DWORD p26; + DWORD p27; + DWORD p28; + DWORD p29; + DWORD p30; + DWORD p31; + DWORD p32; +} ICALLPROC32; +typedef ICALLPROC32 UNALIGNED *PICALLPROC32; + +#define CPEX32_DEST_CDECL 0x8000L +#define CPEX32_SOURCE_CDECL 0x4000L + +typedef struct _WOWFINDFIRST16 { /* k257 */ + DWORD lpDTA; + WORD pszPathOffset; + WORD pszPathSegment; + WORD wAttributes; +} WOWFINDFIRST16; +typedef WOWFINDFIRST16 UNALIGNED *PWOWFINDFIRST16; + +typedef struct _WOWFINDNEXT16 { /* k258 */ + DWORD lpDTA; +} WOWFINDNEXT16; +typedef WOWFINDNEXT16 UNALIGNED *PWOWFINDNEXT16; + +typedef struct _WOWSETDEFAULTDRIVE16 { /* k259 */ + WORD wDriveNum; +} WOWSETDEFAULTDRIVE16; +typedef WOWSETDEFAULTDRIVE16 UNALIGNED *PWOWSETDEFAULTDRIVE16; + +typedef struct _WOWGETCURRENTDIRECTORY16 { /* k260 */ + DWORD lpCurDir; + WORD wDriveNum; +} WOWGETCURRENTDIRECTORY16; +typedef WOWGETCURRENTDIRECTORY16 UNALIGNED *PWOWGETCURRENTDIRECTORY16; + +typedef struct _WOWSETCURRENTDIRECTORY16 { /* k261 */ + DWORD lpCurDir; +} WOWSETCURRENTDIRECTORY16; +typedef WOWSETCURRENTDIRECTORY16 UNALIGNED *PWOWSETCURRENTDIRECTORY16; + +typedef struct _WOWWAITFORMSGANDEVENT16 { /* k262 */ + HWND16 hwnd; +} WOWWAITFORMSGANDEVENT16; +typedef WOWWAITFORMSGANDEVENT16 UNALIGNED *PWOWWAITFORMSGANDEVENT16; + +typedef struct _WOWMSGBOX16 { /* k263 */ + DWORD dwOptionalStyle; + VPSZ pszTitle; + VPSZ pszMsg; +} WOWMSGBOX16; +typedef WOWMSGBOX16 UNALIGNED *PWOWMSGBOX16; + +typedef struct _WOWDEVICEIOCTL16 { /* k267 */ + WORD wCmd; + WORD wDriveNum; +} WOWDEVICEIOCTL16; +typedef WOWDEVICEIOCTL16 UNALIGNED *PWOWDEVICEIOCTL16; + +typedef struct _WOWFILESETATTRIBUTES16 { /* k268 */ + WORD pszPathOffset; + WORD pszPathSegment; + WORD wAttributes; +} WOWFILESETATTRIBUTES16; +typedef WOWFILESETATTRIBUTES16 UNALIGNED *PWOWFILESETATTRIBUTES16; + +typedef struct _WOWFILESETDATETIME16 { /* k269 */ + DWORD lpSFT; + DWORD lpPDB; + WORD date; + WORD time; + WORD fh; +} WOWFILESETDATETIME16; +typedef WOWFILESETDATETIME16 UNALIGNED *PWOWFILESETDATETIME16; + +typedef struct _WOWFILECREATE16 { /* k270 */ + DWORD lpSFT; + DWORD lpPDB; + WORD pszPathOffset; + WORD pszPathSegment; + WORD wAttributes; +} WOWFILECREATE16; +typedef WOWFILECREATE16 UNALIGNED *PWOWFILECREATE16; + +typedef struct _WOWDOSWOWINIT16 { /* k271 */ + VPVOID lpDosWowData; +} WOWDOSWOWINIT16; +typedef WOWDOSWOWINIT16 UNALIGNED *PWOWDOSWOWINIT16; + +typedef struct _WOWCHECKUSERGDI16 { /* k272 */ + WORD pszPathOffset; + WORD pszPathSegment; +} WOWCHECKUSERGDI16; +typedef WOWCHECKUSERGDI16 UNALIGNED *PWOWCHECKUSERGDI16; + +typedef struct _WOWPARTYBYNUMBER16 { /* k273 */ + VPSZ psz; + DWORD dw; +} WOWPARTYBYNUMBER16; +typedef WOWPARTYBYNUMBER16 UNALIGNED *PWOWPARTYBYNUMBER16; + +typedef struct _WOWSHOULDWESAYWIN9516 { /* k215 */ + WORD wCallerDS; + VPSZ pszFilename; +} WOWSHOULDWESAYWIN9516; +typedef WOWSHOULDWESAYWIN9516 UNALIGNED *PWOWSHOULDWESAYWIN9516; + +typedef struct _GETSHORTPATHNAME16 { /* k274 */ + WORD cchShortPath; + VPSZ pszShortPath; + VPSZ pszLongPath; +} GETSHORTPATHNAME16; +typedef GETSHORTPATHNAME16 UNALIGNED *PGETSHORTPATHNAME16; + +typedef struct _FINDANDRELEASEDIB16 { /* k275 */ + WORD wFunId; + HAND16 hdib; /* handle which we are messing with */ +} FINDANDRELEASEDIB16; +typedef FINDANDRELEASEDIB16 UNALIGNED *PFINDANDRELEASEDIB16; + + +typedef struct _WOWRESERVEHTASK16 { /* k276 */ + WORD htask; +} WOWRESERVEHTASK16; +typedef WOWRESERVEHTASK16 UNALIGNED *PWOWRESERVEHTASK16; + +typedef struct _REGENUMKEY3216 { /* k216 */ + DWORD cchName; + VPSTR lpszName; + DWORD iSubKey; + DWORD hKey; +} REGENUMKEY3216; +typedef REGENUMKEY3216 UNALIGNED *PREGENUMKEY3216; + +typedef struct _REGOPENKEY3216 { /* k217 */ + VPVOID phkResult; + VPSTR lpszSubKey; + DWORD hKey; +} REGOPENKEY3216; +typedef REGOPENKEY3216 UNALIGNED *PREGOPENKEY3216; + +typedef struct _REGCLOSEKEY3216 { /* k220 */ + DWORD hKey; +} REGCLOSEKEY3216; +typedef REGCLOSEKEY3216 UNALIGNED *PREGCLOSEKEY3216; + +typedef struct _REGENUMVALUE3216 { /* k223 */ + VPVOID lpcbData; + VPVOID lpbData; + DWORD lpdwType; + DWORD lpdwReserved; + DWORD lpcchValue; + VPSTR lpszValue; + DWORD iValue; + DWORD hKey; +} REGENUMVALUE3216; +typedef REGENUMVALUE3216 UNALIGNED *PREGENUMVALUE3216; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ diff --git a/private/mvdm/inc/wowmmcb.h b/private/mvdm/inc/wowmmcb.h new file mode 100644 index 000000000..64e0f7f27 --- /dev/null +++ b/private/mvdm/inc/wowmmcb.h @@ -0,0 +1,82 @@ +/* -------------------------------------------------------------------- +** Module : wowmmcb.h +** +** Description : Interrupt callback stuff for Multi-Media. +** +** History: : Created 09-Nov-1992 by StephenE +** +** -------------------------------------------------------------------- +*/ +#ifndef WOWMMCB_H +#define WOWMMCB_H + +/* +** This header file will go through both 16 bit and 32 bit compilers. +** In 16 bit land UNALIGNED is not required, on 32 bit land UNALIGNED +** would have been #defined by the time this file was #included because +** this file is always included after wow32.h. This means the following +** #define is always a no-op with 16 bit compilers and ignored with +** 32 bit compilers. +*/ +#ifndef UNALIGNED +#define UNALIGNED +#endif + +extern void call_ica_hw_interrupt(int, int, int); + +/* -------------------------------------------------------------------- +** Hardware Interrupts: +** +** IRQ: Interrupt: ICA: Line: Description: +** ------------------------------------------------------------------- +** IRQ0 0x08 0 0 Timer Tick every 18.2 times per second. +** IRQ1 0x09 0 1 Keyboard service required. +** IRQ2 0x0A 0 2 INT from slave 8259A. +** IRQ8 0x70 1 0 Real time clock service. +** IRQ9 0x71 1 1 Software redirected to IRQ2. +** IRQ10 0x72 1 2 Reserved. +** IRQ11 0x73 1 3 Reserved. +** IRQ12 0x74 1 4 Reserved. +** IRQ13 0x75 1 5 Numeric co-processor +** IRQ14 0x76 1 6 Fixed disk controller +** IRQ15 0x77 1 7 Reserved. +** IRQ3 0x0B 0 3 Com2 service request. +** IRQ4 0x0C 0 4 Com1 service request. +** IRQ5 0x0D 0 5 Data request from LPT2: +** IRQ6 0x0E 0 6 Floppy disk service required. +** IRQ7 0x0F 0 7 Data request from LPT1: +** +** -------------------------------------------------------------------- +*/ + +#define MULTIMEDIA_LINE 2 +#define MULTIMEDIA_ICA 1 +#define MULTIMEDIA_INTERRUPT 0x72 + +#define CALLBACK_ARGS_SIZE 16 + +typedef struct _CALLBACK_ARGS { /* cbargs */ + DWORD dwFlags; // Flags to identify the type of callback. + DWORD dwFunctionAddr; // 16:16 address of the function to be called + WORD wHandle; // The handle or ID of the device + WORD wMessage; // The message to be passed to function + DWORD dwInstance; // User data + DWORD dwParam1; // Device data 1 + DWORD dwParam2; // Device data 2 +} CALLBACK_ARGS; + +typedef struct _CALLBACK_DATA { /* cbdata */ + WORD wRecvCount; // The number of interrupts received + WORD wSendCount; // The number of interrupts sent + CALLBACK_ARGS args[CALLBACK_ARGS_SIZE]; // Interrupt arguments + WORD wIntsCount; // The number of interrupts received +} CALLBACK_DATA; + +typedef CALLBACK_DATA FAR *VPCALLBACK_DATA; // 16:16 pointer type +typedef CALLBACK_ARGS FAR *VPCALLBACK_ARGS; // 16:16 pointer type + +typedef CALLBACK_DATA UNALIGNED *PCALLBACK_DATA; // 0:32 pointer type +typedef CALLBACK_ARGS UNALIGNED *PCALLBACK_ARGS; // 0:32 pointer type + +VOID FAR PASCAL Notify_Callback_Data( VPCALLBACK_DATA vpCallbackData ); +#endif diff --git a/private/mvdm/inc/wowmmed.h b/private/mvdm/inc/wowmmed.h new file mode 100644 index 000000000..bc26f71ed --- /dev/null +++ b/private/mvdm/inc/wowmmed.h @@ -0,0 +1,1665 @@ +/*++ BUILD Version: 0001 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWMMED.H + * 16-bit MultiMedia API argument structures + * + * History: + * Created 21-Jan-1992 by Mike Tricker (MikeTri), based on the work by jeffpar +--*/ +/*++ + + General MultiMedia related information + + Moved all the typedefs for H* and VP* back to WOW.H - MikeTri 090492 + +--*/ + +typedef WORD MMVER16; // major (high byte), minor (low byte) + +#ifndef _INC_MMSYSTEM +typedef DWORD FOURCC; // a four character code +typedef LONG LPARAM; +#endif + +#define MAXPNAMELEN 32 // max product name length (including NULL) + +/* XLATOFF */ +#pragma pack(1) +/* XLATON */ + + +/* + * MultiMedia Data Structures - MikeTri 10-Feb-1992 + * + */ + + +typedef struct _AUXCAPS16 { /* ac16 */ + WORD wMid; + WORD wPid; + MMVER16 vDriverVersion; + char szPname[MAXPNAMELEN]; + WORD wTechnology; + DWORD dwSupport; +} AUXCAPS16; +typedef AUXCAPS16 UNALIGNED *PAUXCAPS16; +typedef VPVOID VPAUXCAPS16; + +typedef struct _DRVCONFIGINFO16 { /* dci16 */ + DWORD dwDCISize; + VPCSTR lpszDCISectionName; + VPCSTR lpszDCIAliasName; +} DRVCONFIGINFO16; +typedef DRVCONFIGINFO16 UNALIGNED *PDRVCONFIGINFO16; +typedef VPVOID VPDRVCONFIGINFO16; + +typedef struct _JOYCAPS16 { /* jc16 */ + WORD wMid; + WORD wPid; + char szPname[MAXPNAMELEN]; + WORD wXmin; + WORD wXmax; + WORD wYmin; + WORD wYmax; + WORD wZmin; + WORD wZmax; + WORD wNumButtons; + WORD wPeriodMin; + WORD wPeriodMax; +} JOYCAPS16; +typedef JOYCAPS16 UNALIGNED *PJOYCAPS16; +typedef VPVOID VPJOYCAPS16; + +typedef struct _JOYINFO16 { /* ji16 */ + WORD wXpos; + WORD wYpos; + WORD wZpos; + WORD wButtons; +} JOYINFO16; +typedef JOYINFO16 UNALIGNED *PJOYINFO16; +typedef VPVOID VPJOYINFO16; + +typedef struct _MCI_ANIM_OPEN_PARMS16 { /* maop16 */ + DWORD dwCallback; + WORD wDeviceID; + WORD wReserved0; + VPCSTR lpstrDeviceType; + VPCSTR lpstrElementName; + VPCSTR lpstrAlias; + DWORD dwStyle; + HWND16 hWndParent; // Keeps consistent, and is equivalent anyway + WORD wReserved1; +} MCI_ANIM_OPEN_PARMS16; +typedef MCI_ANIM_OPEN_PARMS16 UNALIGNED *PMCI_ANIM_OPEN_PARMS16; +typedef VPVOID VPMCI_ANIM_OPEN_PARMS16; + +typedef struct _MCI_ANIM_PLAY_PARMS16 { /* mapp16 */ + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} MCI_ANIM_PLAY_PARMS16; +typedef MCI_ANIM_PLAY_PARMS16 UNALIGNED *PMCI_ANIM_PLAY_PARMS16; +typedef VPVOID VPMCA_ANIM_PLAY_PARMS16; + +typedef struct _MCI_ANIM_RECT_PARMS16 { /* marp16 */ + DWORD dwCallback; + RECT16 rc; +} MCI_ANIM_RECT_PARMS16; +typedef MCI_ANIM_RECT_PARMS16 UNALIGNED *PMCI_ANIM_RECT_PARMS16; +typedef VPVOID VPMCI_ANIM_RECT_PARMS16; + +typedef struct _MCI_ANIM_STEP_PARMS16 { /* masp16 */ + DWORD dwCallback; + DWORD dwFrames; +} MCI_ANIM_STEP_PARMS16; +typedef MCI_ANIM_STEP_PARMS16 UNALIGNED *PMCI_ANIM_STEP_PARMS16; +typedef VPVOID VPMCI_ANIM_STEP_PARMS16; + +typedef struct _MCI_ANIM_UPDATE_PARMS16 { /* maup16 */ + DWORD dwCalback; + RECT16 rc; + HDC16 hDC; +} MCI_ANIM_UPDATE_PARMS16; +typedef MCI_ANIM_UPDATE_PARMS16 UNALIGNED *PMCI_ANIM_UPDATE_PARMS16; +typedef VPVOID VPMCI_ANIM_UPDATE_PARMS16; + +typedef struct _MCI_ANIM_WINDOW_PARMS16 { /* mawp16 */ + DWORD dwCallabck; + HWND16 hWnd; + WORD wReserved1; + WORD nCmdShow; + WORD wReserved2; + VPCSTR lpstrText; +} MCI_ANIM_WINDOW_PARMS16; +typedef MCI_ANIM_WINDOW_PARMS16 UNALIGNED *PMCI_ANIM_WINDOW_PARMS16; +typedef VPVOID VPMCI_ANIM_WINDOW_PARMS16; + +typedef struct _MCI_BREAK_PARMS16 { /* mbp16 */ + DWORD dwCallback; + INT16 nVirtKey; + WORD wReserved0; + HWND16 hwndBreak; + WORD wReserved1; +} MCI_BREAK_PARMS16; +typedef MCI_BREAK_PARMS16 UNALIGNED *PMCI_BREAK_PARMS16; +typedef VPVOID VPMCI_BREAK_PARMS16; + +typedef struct _MCI_GENERIC_PARMS16 { /* mgp16 */ + DWORD dwCallback; +} MCI_GENERIC_PARMS16; +typedef MCI_GENERIC_PARMS16 UNALIGNED *PMCI_GENERIC_PARMS16; +typedef VPVOID VPMCI_GENERIC_PARMS16; + +typedef struct _MCI_GETDEVCAPS_PARMS16 { /* mgdp16 */ + DWORD dwCallback; + DWORD dwReturn; + DWORD dwItem; +} MCI_GETDEVCAPS_PARMS16; +typedef MCI_GETDEVCAPS_PARMS16 UNALIGNED *PMCI_GETDEVCAPS_PARMS16; +typedef VPVOID VPMCI_GETDEVCAPS_PARMS16; + +typedef struct _MCI_INFO_PARMS16 { /* mip16 */ + DWORD dwCallback; + VPSTR lpstrReturn; + DWORD dwRetSize; +} MCI_INFO_PARMS16; +typedef MCI_INFO_PARMS16 UNALIGNED *PMCI_INFO_PARMS16; +typedef VPVOID VPMCI_INFO_PARMS16; + +typedef struct _MCI_LOAD_PARMS16 { /* mlp16 */ + DWORD dwCallback; + VPCSTR lpfilename; +} MCI_LOAD_PARMS16; +typedef MCI_LOAD_PARMS16 UNALIGNED *PMCI_LOAD_PARMS16; +typedef VPVOID VPMCI_LOAD_PARMS16; + +typedef struct _MCI_OPEN_PARMS16 { /* mop16 */ + DWORD dwCallback; + WORD wDeviceID; + WORD wReserved0; + VPCSTR lpstrDeviceType; + VPCSTR lpstrElementName; + VPCSTR lpstrAlias; +} MCI_OPEN_PARMS16; +typedef MCI_OPEN_PARMS16 UNALIGNED *PMCI_OPEN_PARMS16; +typedef VPVOID VPMCI_OPEN_PARMS16; + +typedef struct _MCI_OVLY_LOAD_PARMS16 { /* molp16 */ + DWORD dwCallback; + VPCSTR lpfilename; + RECT16 rc; +} MCI_OVLY_LOAD_PARMS16; +typedef MCI_OVLY_LOAD_PARMS16 UNALIGNED *PMCI_OVLY_LOAD_PARMS16; +typedef VPVOID VPMCI_OVLY_LOAD_PARMS16; + +typedef struct _MCI_OVLY_OPEN_PARMS16 { /* moop16 */ + DWORD dwCallabck; + WORD wDeviceID; + WORD wReserved0; + VPCSTR lpstrDeviceType; + VPCSTR lpstrElementName; + VPCSTR lpstrAlias; + DWORD dwStyle; + HWND16 hWndParent; // The book is wrong + WORD wReserved1; +} MCI_OVLY_OPEN_PARMS16; +typedef MCI_OVLY_OPEN_PARMS16 UNALIGNED *PMCI_OVLY_OPEN_PARMS16; +typedef VPVOID VPMCI_OVLY_OPEN_PARMS16; + +typedef struct _MCI_OVLY_RECT_PARMS16 { /* morp16 */ + DWORD dwCallback; + RECT16 rc; +} MCI_OVLY_RECT_PARMS16; +typedef MCI_OVLY_RECT_PARMS16 UNALIGNED *PMCI_OVLY_RECT_PARMS16; +typedef VPVOID VPMCI_OVLY_RECT_PARMS16; + +typedef struct _MCI_OVLY_SAVE_PARMS16 { /* mosp16 */ + DWORD dwCallback; + VPCSTR lpfilename; + RECT16 rc; +} MCI_OVLY_SAVE_PARMS16; +typedef MCI_OVLY_SAVE_PARMS16 UNALIGNED *PMCI_OVLY_SAVE_PARMS16; +typedef VPVOID VPMCI_OVLY_SAVE_PARMS16; + +typedef struct _MCI_OVLY_WINDOW_PARMS16 { /* mowp16 */ + DWORD dwCallabck; + HWND16 hWnd; + WORD wReserved1; + WORD nCmdShow; + WORD wReserved2; + VPCSTR lpstrText; +} MCI_OVLY_WINDOW_PARMS16; +typedef MCI_OVLY_WINDOW_PARMS16 UNALIGNED *PMCI_OVLY_WINDOW_PARMS16; +typedef VPVOID VPMCI_OVLY_WINDOW_PARMS16; + +typedef struct _MCI_PLAY_PARMS16 { /* mplp16 */ + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} MCI_PLAY_PARMS16; +typedef MCI_PLAY_PARMS16 UNALIGNED *PMCI_PLAY_PARMS16; +typedef VPVOID VPMCI_PLAY_PARMS16; + +typedef struct _MCI_RECORD_PARMS16 { /* mrecp16 */ + DWORD dwCallabck; + DWORD dwFrom; + DWORD dwTo; +} MCI_RECORD_PARMS16; +typedef MCI_RECORD_PARMS16 UNALIGNED *PMCI_RECORD_PARMS16; +typedef VPVOID VPMCI_RECORD_PARMS16; + +typedef struct _MCI_SAVE_PARMS16 { /* msavp16 */ + DWORD dwCallback; + VPCSTR lpfilename; // MMSYSTEM.H differs from the book +} MCI_SAVE_PARMS16; +typedef MCI_SAVE_PARMS16 UNALIGNED *PMCI_SAVE_PARMS16; +typedef VPVOID VPMCI_SAVE_PARMS16; + +typedef struct _MCI_SEEK_PARMS16 { /* msep16 */ + DWORD dwCallback; + DWORD dwTo; +} MCI_SEEK_PARMS16; +typedef MCI_SEEK_PARMS16 UNALIGNED *PMCI_SEEK_PARMS16; +typedef VPVOID VPMCI_SEEK_PARMS16; + +typedef struct _MCI_SEQ_SET_PARMS16 { /* mssp16 */ + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + DWORD dwTempo; + DWORD dwPort; + DWORD dwSlave; + DWORD dwMaster; + DWORD dwOffset; +} MCI_SEQ_SET_PARMS16; +typedef MCI_SEQ_SET_PARMS16 UNALIGNED *PMCI_SEQ_SET_PARMS16; +typedef VPVOID VPMCI_SEQ_SET_PARMS16; + +typedef struct _MCI_SET_PARMS16 { /* msetp16 */ + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; +} MCI_SET_PARMS16; +typedef MCI_SET_PARMS16 UNALIGNED *PMCI_SET_PARMS16; +typedef VPVOID VPMCI_SET_PARMS16; + +typedef struct _MCI_SOUND_PARMS16 { /* msoup16 */ + DWORD dwCallback; + VPCSTR lpstrSoundName; +} MCI_SOUND_PARMS16; +typedef MCI_SOUND_PARMS16 UNALIGNED *PMCI_SOUND_PARMS16; +typedef VPVOID VPMCI_SOUND_PARMS16; + +typedef struct _MCI_STATUS_PARMS16 { /* mstp16 */ + DWORD dwCallback; + DWORD dwReturn; + DWORD dwItem; + DWORD dwTrack; +} MCI_STATUS_PARMS16; +typedef MCI_STATUS_PARMS16 UNALIGNED *PMCI_STATUS_PARMS16; +typedef VPVOID VPMCI_STATUS_PARMS16; + +typedef struct _MCI_SYSINFO_PARMS16 { /* msyip16 */ + DWORD dwCallback; + VPSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + WORD wDeviceType; + WORD wReserved0; +} MCI_SYSINFO_PARMS16; +typedef MCI_SYSINFO_PARMS16 UNALIGNED *PMCI_SYSINFO_PARMS16; +typedef VPVOID VPMCI_SYSINFO_PARMS16; + +typedef struct _MCI_VD_ESCAPE_PARMS16 { /* mvep16 */ + DWORD dwCallback; + VPCSTR lpstrCommand; +} MCI_VD_ESCAPE_PARMS16; +typedef MCI_VD_ESCAPE_PARMS16 UNALIGNED *PMCI_VD_ESCAPE_PARMS16; +typedef VPVOID VPMCI_VD_ESCAPE_PARMS16; + +typedef struct _MCI_VD_PLAY_PARMS16 { /* mvpp16 */ + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} MCI_VD_PLAY_PARMS16; +typedef MCI_VD_PLAY_PARMS16 UNALIGNED *PMCI_VD_PLAY_PARMS16; +typedef VPVOID VPMCI_VD_PLAY_PARMS16; + +typedef struct _MCI_VD_STEP_PARMS16 { /* mvsp16 */ + DWORD dwCallback; + DWORD dwFrames; +} MCI_VD_STEP_PARMS16; +typedef MCI_VD_STEP_PARMS16 UNALIGNED *PMCI_VD_STEP_PARMS16; +typedef VPVOID VPMCI_VD_STEP_PARMS16; + +typedef struct _MCI_VD_DELETE_PARMS16 { /* mvdp16 */ + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} MCI_VD_DELETE_PARMS16; +typedef MCI_VD_DELETE_PARMS16 UNALIGNED *PMCI_VD_DELETE_PARMS16; +typedef VPVOID VPMCI_VD_DELETE_PARMS16; + +typedef struct _MCI_WAVE_OPEN_PARMS16 { /* mwop16 */ + DWORD dwCallback; + WORD wDeviceID; + WORD wReserved0; + VPCSTR lpstrDeviceType; + VPCSTR lpstrElementName; + VPCSTR lpstrAlias; + DWORD dwBufferSeconds; +} MCI_WAVE_OPEN_PARMS16; +typedef MCI_WAVE_OPEN_PARMS16 UNALIGNED *PMCI_WAVE_OPEN_PARMS16; +typedef VPVOID VPMCI_WAVE_OPEN_PARMS16; + +typedef struct _MCI_WAVE_SET_PARMS16 { /* mwsp16 */ + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + WORD wInput; + WORD wReserved0; + WORD wOutput; + WORD wReserved1; + WORD wFormatTag; + WORD wReserved2; + WORD nChannels; + WORD wReserved3; + DWORD nSamplesPerSecond; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wReserved4; + WORD wBitsPerSample; + WORD wReserved5; +} MCI_WAVE_SET_PARMS16; +typedef MCI_WAVE_SET_PARMS16 UNALIGNED *PMCI_WAVE_SET_PARMS16; +typedef VPVOID VPMCI_WAVE_SET_PARMS16; + +typedef struct _MIDIHDR16 { /* mhdr16 */ + VPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD dwUser; + DWORD dwFlags; + struct _MIDIHDR16 far *lpNext; + DWORD reserved; +} MIDIHDR16; +typedef MIDIHDR16 UNALIGNED *PMIDIHDR16; +typedef VPVOID VPMIDIHDR16; + +typedef struct _MIDIINCAPS16 { /* mic16 */ + WORD wMid; + WORD wPid; + MMVER16 vDriverVersion; + char szPname[MAXPNAMELEN]; +} MIDIINCAPS16; +typedef MIDIINCAPS16 UNALIGNED *PMIDIINCAPS16; +typedef VPVOID VPMIDIINCAPS16; + +typedef struct _MIDIOUTCAPS16 { /* moc16 */ + WORD wMid; + WORD wPid; + MMVER16 vDriverVersion; + char szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} MIDIOUTCAPS16; +typedef MIDIOUTCAPS16 UNALIGNED *PMIDIOUTCAPS16; +typedef VPVOID VPMIDIOUTCAPS16; + +typedef struct _MMCKINFO16 { /* mcki16 */ + FOURCC ckid; + DWORD cksize; + FOURCC fccType; + DWORD dwDataOffset; + DWORD dwFlags; +} MMCKINFO16; +typedef MMCKINFO16 UNALIGNED *PMMCKINFO16; +typedef VPVOID VPMMCKINFO16; + +typedef struct _MMIOINFO16 { /* mioi16 */ + DWORD dwFlags; + FOURCC fccIOProc; + VPMMIOPROC16 pIOProc; + WORD wErrorRet; + HTASK16 htask; // Header file MMSYSTEM.H differs from book + LONG cchBuffer; + VPSTR pchBuffer; + VPSTR pchNext; + VPSTR pchEndRead; + VPSTR pchEndWrite; + LONG lBufOffset; + LONG lDiskOffset; + DWORD adwInfo[3]; // The book says [4], MMSYSTEM.H doesn't + DWORD dwReserved1; + DWORD dwReserved2; + HMMIO16 hmmio; +} MMIOINFO16; +typedef MMIOINFO16 UNALIGNED *PMMIOINFO16; +typedef VPVOID VPMMIOINFO16; + +typedef struct _MMPACTION16 { /* mpa16 */ + BYTE bMenuItem; + BYTE bActionCode; + WORD wTextOffset; +} MMPACTION16; +typedef MMPACTION16 UNALIGNED *PMMPACTION16; +typedef VPVOID VPMMPACTION16; + +typedef struct _MMPLABEL16 { /* mpl16 */ + WORD wFrameNum; + WORD wTextOffset; +} MMPLABEL16; +typedef MMPLABEL16 UNALIGNED *PMMPLABEL16; +typedef VPVOID VPMMPLABEL16; + +typedef struct _MMPMOVIEINFO16 { /* mpmi16 */ + DWORD dwFileVersion; + DWORD dwTotalFrames; + DWORD dwInitialFramesPerSecond; + WORD wPixelDepth; + DWORD dwMovieExtentX; + DWORD dwMovieExtentY; + char chFullMacName[128]; +} MMPMOVIEINFO16; +typedef MMPMOVIEINFO16 UNALIGNED *PMMPMOVIEINFO16; +typedef VPVOID VPMMPMOVIEINFO16; + +/* XLATOFF */ +typedef struct _MMTIME16 { /* mmt16 */ + WORD wType; + union { + DWORD ms; + DWORD sample; + DWORD cb; + struct { + BYTE hour; + BYTE min; + BYTE sec; + BYTE frame; + BYTE fps; + BYTE dummy; + } smpte; + struct { + DWORD songptrpos; + } midi; + } u; +} MMTIME16; +typedef MMTIME16 UNALIGNED *PMMTIME16; +/* XLATON */ +typedef VPVOID VPMMTIME16; + +typedef struct _TIMECAPS16 { /* timc16 */ + WORD wPeriodMin; + WORD wPeriodMax; +} TIMECAPS16; +typedef TIMECAPS16 UNALIGNED *PTIMECAPS16; +typedef VPVOID VPTIMECAPS16; + +typedef struct _WAVEFORMAT16 { /* wft16 */ + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; +} WAVEFORMAT16; +typedef WAVEFORMAT16 UNALIGNED *PWAVEFORMAT16; +typedef VPVOID VPWAVEFORMAT16; + +typedef struct _PCMWAVEFORMAT16 { /* pwf16 */ + WAVEFORMAT16 wf; + WORD wBitsPerSample; +} PCMWAVEFORMAT16; +typedef PCMWAVEFORMAT16 UNALIGNED *PPCMWAVEFORMAT16; +typedef VPVOID VPPCMWAVEFORMAT16; + +typedef struct _WAVEHDR16 { /* whd16 */ + VPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD dwUser; + DWORD dwFlags; + DWORD dwLoops; + struct _WAVEHDR16 far *lpNext; + DWORD reserved; +} WAVEHDR16; +typedef WAVEHDR16 UNALIGNED *PWAVEHDR16; +typedef VPVOID VPWAVEHDR16; + +typedef struct _WAVEINCAPS16 { /* wic16 */ + WORD wMid; + WORD wPid; + MMVER16 vDriverVersion; + char szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; +} WAVEINCAPS16; +typedef WAVEINCAPS16 UNALIGNED *PWAVEINCAPS16; +typedef VPVOID VPWAVEINCAPS16; + +typedef struct _WAVEOUTCAPS16 { /* woc16 */ + WORD wMid; + WORD wPid; + MMVER16 vDriverVersion; + char szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + DWORD dwSupport; +} WAVEOUTCAPS16; +typedef WAVEOUTCAPS16 UNALIGNED *PWAVEOUTCAPS16; +typedef VPVOID VPWAVEOUTCAPS16; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ + +/* + * MultiMedia Window messages - MikeTri 10-Feb-1992 + */ + +//#define MM_JOY1MOVE 0x03A0 // Joystick +//#define MM_JOY2MOVE 0x03A1 +//#define MM_JOY1ZMOVE 0x03A2 +//#define MM_JOY2ZMOVE 0x03A3 +//#define MM_JOY1BUTTONDOWN 0x03B5 +//#define MM_JOY2BUTTONDOWN 0x03B6 +//#define MM_JOY1BUTTONUP 0x03B7 +//#define MM_JOY2BUTTONUP 0x03B8 + +//#define MM_MCINOTIFY 0x03B9 // MCI +//#define MM_MCISYSTEM_STRING 0x03CA + +//#define MM_WOM_OPEN 0x03BB // Waveform Output +//#define MM_WOM_CLOSE 0x03BC +//#define MM_WOM_DONE 0x03BD + +//#define MM_WIM_OPEN 0x03BE // Waveform Input +//#define MM_WIM_CLOSE 0x03BF +//#define MM_WIM_DATA 0x03C0 + +//#define MM_MIM_OPEN 0x03C1 // MIDI Input +//#define MM_MIM_CLOSE 0x03C2 +//#define MM_MIM_DATA 0x03C3 +//#define MM_MIM_LONGDATA 0x03C4 +//#define MM_MIM_ERROR 0x03C5 +//#define MM_MIM_LONGERROR 0x03C6 + +//#define MM_MOM_OPEN 0x03C7 // MIDI Output +//#define MM_MOM_CLOSE 0x03C8 +//#define MM_MOM_DONE 0x03C9 + +/* + * End of MultiMedia Window messages - MikeTri + */ + +/*++ + + MultiMedia API IDs - start adding all the other APIs - Mike, 04-Feb-1992 + + This is the complete exported list, in MMSYSTEM order + + Well, actually it isn't anymore - various ones have been removed which + we aren't supporting, and because of the joys of H2INC I can't leave them + here as comments. So - if they need to be added again check in the + function prototypes below this list for the correct formats. + + Need to recheck the numbers before compiling this lot... - this raises the + point that if we add any more they ought to go at the end of the list, + otherwise we end up juggling numbers, which is a drag. + +--*/ + + +#define FUN_MMCALLPROC32 2 // +#define FUN_MMSYSTEMGETVERSION 5 // + +#define FUN_OUTPUTDEBUGSTR 30 // +#define FUN_DRIVERCALLBACK 31 // +#define FUN_NOTIFY_CALLBACK_DATA 32 // + +#define FUN_JOYGETNUMDEVS 101 // +#define FUN_JOYGETDEVCAPS 102 // +#define FUN_JOYGETPOS 103 // +#define FUN_JOYGETTHRESHOLD 104 // +#define FUN_JOYRELEASECAPTURE 105 // +#define FUN_JOYSETCAPTURE 106 // +#define FUN_JOYSETTHRESHOLD 107 // +#define FUN_JOYSETCALIBRATION 109 // + +#define FUN_MIDIOUTGETNUMDEVS 201 // +#define FUN_MIDIOUTGETDEVCAPS 202 // +#define FUN_MIDIOUTGETERRORTEXT 203 // +#define FUN_MIDIOUTOPEN 204 // +#define FUN_MIDIOUTCLOSE 205 // +#define FUN_MIDIOUTPREPAREHEADER32 206 // +#define FUN_MIDIOUTUNPREPAREHEADER32 207 // +#define FUN_MIDIOUTSHORTMSG 208 // +#define FUN_MIDIOUTLONGMSG 209 // +#define FUN_MIDIOUTRESET 210 // +#define FUN_MIDIOUTGETVOLUME 211 // +#define FUN_MIDIOUTSETVOLUME 212 // +#define FUN_MIDIOUTCACHEPATCHES 213 // +#define FUN_MIDIOUTCACHEDRUMPATCHES 214 // +#define FUN_MIDIOUTGETID 215 // +#define FUN_MIDIOUTMESSAGE32 216 // + +#define FUN_MIDIINGETNUMDEVS 301 // +#define FUN_MIDIINGETDEVCAPS 302 // +#define FUN_MIDIINGETERRORTEXT 303 // +#define FUN_MIDIINOPEN 304 // +#define FUN_MIDIINCLOSE 305 // +#define FUN_MIDIINPREPAREHEADER32 306 // +#define FUN_MIDIINUNPREPAREHEADER32 307 // +#define FUN_MIDIINADDBUFFER 308 // +#define FUN_MIDIINSTART 309 // +#define FUN_MIDIINSTOP 310 // +#define FUN_MIDIINRESET 311 // +#define FUN_MIDIINGETID 312 // +#define FUN_MIDIINMESSAGE32 313 // + +#define FUN_AUXGETNUMDEVS 350 // +#define FUN_AUXGETDEVCAPS 351 // +#define FUN_AUXGETVOLUME 352 // +#define FUN_AUXSETVOLUME 353 // +#define FUN_AUXOUTMESSAGE32 354 // + +#define FUN_WAVEOUTGETNUMDEVS 401 // +#define FUN_WAVEOUTGETDEVCAPS 402 // +#define FUN_WAVEOUTGETERRORTEXT 403 // +#define FUN_WAVEOUTOPEN 404 // +#define FUN_WAVEOUTCLOSE 405 // +#define FUN_WAVEOUTPREPAREHEADER32 406 // +#define FUN_WAVEOUTUNPREPAREHEADER32 407 // +#define FUN_WAVEOUTWRITE 408 // +#define FUN_WAVEOUTPAUSE 409 // +#define FUN_WAVEOUTRESTART 410 // +#define FUN_WAVEOUTRESET 411 // +#define FUN_WAVEOUTGETPOSITION 412 // +#define FUN_WAVEOUTGETPITCH 413 // +#define FUN_WAVEOUTSETPITCH 414 // +#define FUN_WAVEOUTGETVOLUME 415 // +#define FUN_WAVEOUTSETVOLUME 416 // +#define FUN_WAVEOUTGETPLAYBACKRATE 417 // +#define FUN_WAVEOUTSETPLAYBACKRATE 418 // +#define FUN_WAVEOUTBREAKLOOP 419 // +#define FUN_WAVEOUTGETID 420 // +#define FUN_WAVEOUTMESSAGE32 421 // + +#define FUN_WAVEINGETNUMDEVS 501 // +#define FUN_WAVEINGETDEVCAPS 502 // +#define FUN_WAVEINGETERRORTEXT 503 // +#define FUN_WAVEINOPEN 504 // +#define FUN_WAVEINCLOSE 505 // +#define FUN_WAVEINPREPAREHEADER32 506 // +#define FUN_WAVEINUNPREPAREHEADER32 507 // +#define FUN_WAVEINADDBUFFER 508 // +#define FUN_WAVEINSTART 509 // +#define FUN_WAVEINSTOP 510 // +#define FUN_WAVEINRESET 511 // +#define FUN_WAVEINGETPOSITION 512 // +#define FUN_WAVEINGETID 513 // +#define FUN_WAVEINMESSAGE32 514 // + +#define FUN_TIMEGETSYSTEMTIME 601 // +#define FUN_TIMEGETTIME 607 // +#define FUN_TIMESETEVENT 602 // +#define FUN_TIMEKILLEVENT 603 // +#define FUN_TIMEGETDEVCAPS 604 // +#define FUN_TIMEBEGINPERIOD 605 // +#define FUN_TIMEENDPERIOD 606 // + +#define FUN_MCISENDCOMMAND 701 // +#define FUN_MCISENDSTRING 702 // +#define FUN_MCIGETDEVICEID 703 // +#define FUN_MCIGETERRORSTRING 706 // +#define FUN_MCIEXECUTE 712 // +#define FUN_MCISETYIELDPROC 714 // +#define FUN_MCIGETDEVICEIDFROMELEMENTID 715 // +#define FUN_MCIGETYIELDPROC 716 // +#define FUN_MCIGETCREATORTASK 717 // + +#define FUN_MMIOOPEN 1210 // +#define FUN_MMIOCLOSE 1211 // +#define FUN_MMIOREAD 1212 // +#define FUN_MMIOWRITE 1213 // +#define FUN_MMIOSEEK 1214 // +#define FUN_MMIOGETINFO 1215 // +#define FUN_MMIOSETINFO 1216 // +#define FUN_MMIOSETBUFFER 1217 // +#define FUN_MMIOFLUSH 1218 // +#define FUN_MMIOADVANCE 1219 // +#define FUN_MMIOSTRINGTOFOURCC 1220 // +#define FUN_MMIOINSTALLIOPROC 1221 // +#define FUN_MMIOSENDMESSAGE 1222 // + +#define FUN_MMIODESCEND 1223 // +#define FUN_MMIOASCEND 1224 // +#define FUN_MMIOCREATECHUNK 1225 // +#define FUN_MMIORENAME 1226 // + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +/*++ + + Function prototypes - the seemingly unimportant number in the comment on + each function MUST match the ones in the list above - otherwise you will + turn into a frog, and 16 bit MultiMedia will wave its feet in the air... + + !! BE WARNED !! + +--*/ + +typedef struct _MMCALLPROC3216 { /* mm2 */ + DWORD fSetCurrentDirectory; /* Set the current directory ? */ + DWORD lpProcAddress; /* function to call */ + DWORD p1; /* dwParam2 */ + DWORD p2; /* dwParam1 */ + DWORD p3; /* dwInstance */ + DWORD p4; /* uMsg */ + DWORD p5; /* uDevId */ +} MMCALLPROC3216; +typedef MMCALLPROC3216 UNALIGNED *PMMCALLPROC3216; + + +#ifdef NULLSTRUCT +typedef struct _MMSYSTEMGETVERSION16 { /* mm5 */ +} MMSYSTEMGETVERSION16; +typedef MMSYSTEMGETVERSION16 UNALIGNED *PMMSYSTEMGETVERSION; +#endif + +typedef struct _OUTPUTDEBUGSTR16 { /* mm30 */ + VPSTR f1; +} OUTPUTDEBUGSTR16; +typedef OUTPUTDEBUGSTR16 UNALIGNED *POUTPUTDEBUGSTR16; + +typedef struct _DRIVERCALLBACK16 { /* mm31 */ + DWORD f7; + DWORD f6; + DWORD f5; + DWORD f4; + HDRVR16 f3; + DWORD f2; + DWORD f1; +} DRIVERCALLBACK16; +typedef DRIVERCALLBACK16 UNALIGNED *PDRIVERCALLBACK16; + + +typedef struct _NOTIFY_CALLBACK_DATA16 { /* mm32 */ + VPCALLBACK_DATA f1; +} NOTIFY_CALLBACK_DATA16; +typedef NOTIFY_CALLBACK_DATA16 UNALIGNED *PNOTIFY_CALLBACK_DATA16; + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +#ifdef NULLSTRUCT +typedef struct _STACKLEAVE16 { mm33 +} STACKLEAVE16; +typedef STACKLEAVE16 UNALIGNED *PSTACKLEAVE16; +#endif + +------------------------------------------------------------------------------*/ + +#ifdef NULLSTRUCT +typedef struct _JOYGETNUMDEVS16 { /* mm101 */ +} JOYGETNUMDEVS16; +typedef JOYGETNUMDEVS16 UNALIGNED *PJOYGETNUMDEVS16; +#endif + +typedef struct _JOYGETDEVCAPS16 { /* mm102 */ + WORD f3; + VPJOYCAPS16 f2; + WORD f1; +} JOYGETDEVCAPS16; +typedef JOYGETDEVCAPS16 UNALIGNED *PJOYGETDEVCAPS16; + +typedef struct _JOYGETPOS16 { /* mm103 */ + VPJOYINFO16 f2; + WORD f1; +} JOYGETPOS16; +typedef JOYGETPOS16 UNALIGNED *PJOYGETPOS16; + +typedef struct _JOYGETTHRESHOLD16 { /* mm104 */ + VPWORD f2; + WORD f1; +} JOYGETTHRESHOLD16; +typedef JOYGETTHRESHOLD16 UNALIGNED *PJOYGETTHRESHOLD16; + +typedef struct _JOYRELEASECAPTURE16 { /* mm105 */ + WORD f1; +} JOYRELEASECAPTURE16; +typedef JOYRELEASECAPTURE16 UNALIGNED *PJOYRELEASECAPTURE16; + +typedef struct _JOYSETCAPTURE16 { /* mm106 */ + BOOL16 f4; + WORD f3; + WORD f2; + HWND16 f1; +} JOYSETCAPTURE16; +typedef JOYSETCAPTURE16 UNALIGNED *PJOYSETCAPTURE16; + +typedef struct _JOYSETTHRESHOLD16 { /* mm107 */ + WORD f2; + WORD f1; +} JOYSETTHRESHOLD16; +typedef JOYSETTHRESHOLD16 UNALIGNED *PJOYSETTHRESHOLD16; + +typedef struct _JOYSETCALIBRATION16 { /* mm109 */ + VPWORD f7; + VPWORD f6; + VPWORD f5; + VPWORD f4; + VPWORD f3; + VPWORD f2; + WORD f1; +} JOYSETCALIBRATION16; +typedef JOYSETCALIBRATION16 UNALIGNED *PJOYSETCALIBRATION16; + +#ifdef NULLSTRUCT +typedef struct _MIDIOUTGETNUMDEVS16 { /* mm201 */ +} MIDIOUTGETNUMDEVS16; +typedef MIDIOUTGETNUMDEVS16 UNALIGNED *PMIDIOUTGETNUMDEVS16; +#endif + +typedef struct _MIDIOUTGETDEVCAPS16 { /* mm202 */ + WORD f3; + VPMIDIOUTCAPS16 f2; + WORD f1; +} MIDIOUTGETDEVCAPS16; +typedef MIDIOUTGETDEVCAPS16 UNALIGNED *PMIDIOUTGETDEVCAPS16; + +typedef struct _MIDIOUTGETERRORTEXT16 { /* mm203 */ + WORD f3; + VPSTR f2; + WORD f1; +} MIDIOUTGETERRORTEXT16; +typedef MIDIOUTGETERRORTEXT16 UNALIGNED *PMIDIOUTGETERRORTEXT16; + +typedef struct _MIDIOUTOPEN16 { /* mm204 */ + DWORD f5; + DWORD f4; + DWORD f3; + WORD f2; + VPHMIDIOUT16 f1; +} MIDIOUTOPEN16; +typedef MIDIOUTOPEN16 UNALIGNED *PMIDIOUTOPEN16; + +typedef struct _MIDIOUTCLOSE16 { /* mm205 */ + HMIDIOUT16 f1; +} MIDIOUTCLOSE16; +typedef MIDIOUTCLOSE16 UNALIGNED *PMIDIOUTCLOSE16; + +typedef struct _MIDIOUTPREPAREHEADER3216 { /* mm206 */ + WORD f3; + VPMIDIHDR16 f2; + HMIDIOUT16 f1; +} MIDIOUTPREPAREHEADER3216; +typedef MIDIOUTPREPAREHEADER3216 UNALIGNED *PMIDIOUTPREPAREHEADER3216; + +typedef struct _MIDIOUTUNPREPAREHEADER3216 { /* mm207 */ + WORD f3; + VPMIDIHDR16 f2; + HMIDIOUT16 f1; +} MIDIOUTUNPREPAREHEADER3216; +typedef MIDIOUTUNPREPAREHEADER3216 UNALIGNED *PMIDIOUTUNPREPAREHEADER3216; + +typedef struct _MIDIOUTSHORTMSG16 { /* mm208 */ + DWORD f2; + HMIDIOUT16 f1; +} MIDIOUTSHORTMSG16; +typedef MIDIOUTSHORTMSG16 UNALIGNED *PMIDIOUTSHORTMSG16; + +typedef struct _MIDIOUTLONGMSG16 { /* mm209 */ + WORD f3; + VPMIDIHDR16 f2; + HMIDIOUT16 f1; +} MIDIOUTLONGMSG16; +typedef MIDIOUTLONGMSG16 UNALIGNED *PMIDIOUTLONGMSG16; + +typedef struct _MIDIOUTRESET16 { /* mm210 */ + HMIDIOUT16 f1; +} MIDIOUTRESET16; +typedef MIDIOUTRESET16 UNALIGNED *PMIDIOUTRESET16; + +typedef struct _MIDIOUTGETVOLUME16 { /* mm211 */ + VPDWORD f2; + WORD f1; +} MIDIOUTGETVOLUME16; +typedef MIDIOUTGETVOLUME16 UNALIGNED *PMIDIOUTGETVOLUME16; + +typedef struct _MIDIOUTSETVOLUME16 { /* mm212 */ + DWORD f2; + WORD f1; +} MIDIOUTSETVOLUME16; +typedef MIDIOUTSETVOLUME16 UNALIGNED *PMIDIOUTSETVOLUME16; + +typedef struct _MIDIOUTCACHEPATCHES16 { /* mm213 */ + WORD f4; + VPPATCHARRAY16 f3; + WORD f2; + HMIDIOUT16 f1; +} MIDIOUTCACHEPATCHES16; +typedef MIDIOUTCACHEPATCHES16 UNALIGNED *PMIDIOUTCACHEPATCHES16; + +typedef struct _MIDIOUTCACHEDRUMPATCHES16 { /* mm214 */ + WORD f4; + VPKEYARRAY16 f3; + WORD f2; + HMIDIOUT16 f1; +} MIDIOUTCACHEDRUMPATCHES16; +typedef MIDIOUTCACHEDRUMPATCHES16 UNALIGNED *PMIDIOUTCACHEDRUMPATCHES16; + +typedef struct _MIDIOUTGETID16 { /* mm215 */ + VPWORD f2; + HMIDIOUT16 f1; +} MIDIOUTGETID16; +typedef MIDIOUTGETID16 UNALIGNED *PMIDIOUTGETID16; + +typedef struct _MIDIOUTMESSAGE3216 { /* mm216 */ + DWORD f4; + DWORD f3; + WORD f2; + HMIDIOUT16 f1; +} MIDIOUTMESSAGE3216; +typedef MIDIOUTMESSAGE3216 UNALIGNED *PMIDIOUTMESSAGE3216; + +#ifdef NULLSTRUCT +typedef struct _MIDIINGETNUMDEVS16 { /* mm301 */ +} MIDIINGETNUMDEVS16; +typedef MIDIINGETNUMDEVS16 UNALIGNED *PMIDIINGETNUMDEVS16; +#endif + +typedef struct _MIDIINGETDEVCAPS16 { /* mm302 */ + WORD f3; + VPMIDIINCAPS16 f2; + WORD f1; +} MIDIINGETDEVCAPS16; +typedef MIDIINGETDEVCAPS16 UNALIGNED *PMIDIINGETDEVCAPS16; + +typedef struct _MIDIINGETERRORTEXT16 { /* mm303 */ + WORD f3; + VPSTR f2; + WORD f1; +} MIDIINGETERRORTEXT16; +typedef MIDIINGETERRORTEXT16 UNALIGNED *PMIDIINGETERRORTEXT16; + +typedef struct _MIDIINOPEN16 { /* mm304 */ + DWORD f5; + DWORD f4; + DWORD f3; + WORD f2; + VPHMIDIIN16 f1; +} MIDIINOPEN16; +typedef MIDIINOPEN16 UNALIGNED *PMIDIINOPEN16; + +typedef struct _MIDIINCLOSE16 { /* mm305 */ + HMIDIIN16 f1; +} MIDIINCLOSE16; +typedef MIDIINCLOSE16 UNALIGNED *PMIDIINCLOSE16; + +typedef struct _MIDIINPREPAREHEADER3216 { /* mm306 */ + WORD f3; + VPMIDIHDR16 f2; + HMIDIIN16 f1; +} MIDIINPREPAREHEADER3216; +typedef MIDIINPREPAREHEADER3216 UNALIGNED *PMIDIINPREPAREHEADER3216; + +typedef struct _MIDIINUNPREPAREHEADER3216 { /* mm307 */ + WORD f3; + VPMIDIHDR16 f2; + HMIDIIN16 f1; +} MIDIINUNPREPAREHEADER3216; +typedef MIDIINUNPREPAREHEADER3216 UNALIGNED *PMIDIINUNPREPAREHEADER3216; + +typedef struct _MIDIINADDBUFFER16 { /* mm308 */ + WORD f3; + VPMIDIHDR16 f2; + HMIDIIN16 f1; +} MIDIINADDBUFFER16; +typedef MIDIINADDBUFFER16 UNALIGNED *PMIDIINADDBUFFER16; + +typedef struct _MIDIINSTART16 { /* mm309 */ + HMIDIIN16 f1; +} MIDIINSTART16; +typedef MIDIINSTART16 UNALIGNED *PMIDIINSTART16; + +typedef struct _MIDIINSTOP16 { /* mm310 */ + HMIDIIN16 f1; +} MIDIINSTOP16; +typedef MIDIINSTOP16 UNALIGNED *PMIDIINSTOP16; + +typedef struct _MIDIINRESET16 { /* mm311 */ + HMIDIIN16 f1; +} MIDIINRESET16; +typedef MIDIINRESET16 UNALIGNED *PMIDIINRESET16; + +typedef struct _MIDIINGETID16 { /* mm312 */ + VPWORD f2; + HMIDIIN16 f1; +} MIDIINGETID16; +typedef MIDIINGETID16 UNALIGNED *PMIDIINGETID16; + +typedef struct _MIDIINMESSAGE3216 { /* mm313 */ + DWORD f4; + DWORD f3; + WORD f2; + HMIDIIN16 f1; +} MIDIINMESSAGE3216; +typedef MIDIINMESSAGE3216 UNALIGNED *PMIDIINMESSAGE3216; + +#ifdef NULLSTRUCT +typedef struct _AUXGETNUMDEVS16 { /* mm350 */ +} AUXGETNUMDEVS16; +typedef AUXGETNUMDEVS16 UNALIGNED *PAUGGETNUMDEVS16; +#endif + +typedef struct _AUXGETDEVCAPS16 { /* mm351 */ + WORD f3; + VPAUXCAPS16 f2; + WORD f1; +} AUXGETDEVCAPS16; +typedef AUXGETDEVCAPS16 UNALIGNED *PAUXGETDEVCAPS16; + +typedef struct _AUXGETVOLUME16 { /* mm352 */ + VPDWORD f2; + WORD f1; +} AUXGETVOLUME16; +typedef AUXGETVOLUME16 UNALIGNED *PAUXGETVOLUME16; + +typedef struct _AUXSETVOLUME16 { /* mm353 */ + DWORD f2; + WORD f1; +} AUXSETVOLUME16; +typedef AUXSETVOLUME16 UNALIGNED *PAUXSETVOLUME16; + +typedef struct _AUXOUTMESSAGE3216 { /* mm354 */ + DWORD f4; + DWORD f3; + WORD f2; + WORD f1; +} AUXOUTMESSAGE3216; +typedef AUXOUTMESSAGE3216 UNALIGNED *PAUXOUTMESSAGE3216; + +#ifdef NULLSTRUCT +typedef struct _WAVEOUTGETNUMDEVS16 { /* mm401 */ +} WAVEOUTGETNUMDEVS16; +typedef WAVEOUTGETNUMDEVS16 UNALIGNED *PWAVEOUTGETNUMDEVS16; +#endif + +typedef struct _WAVEOUTGETDEVCAPS16 { /* mm402 */ + WORD f3; + VPWAVEOUTCAPS16 f2; + WORD f1; +} WAVEOUTGETDEVCAPS16; +typedef WAVEOUTGETDEVCAPS16 UNALIGNED *PWAVEOUTGETDEVCAPS16; + +typedef struct _WAVEOUTGETERRORTEXT16 { /* mm403 */ + WORD f3; + VPSTR f2; + WORD f1; +} WAVEOUTGETERRORTEXT16; +typedef WAVEOUTGETERRORTEXT16 UNALIGNED *PWAVEOUTGETERRORTEXT16; + +typedef struct _WAVEOUTOPEN16 { /* mm404 */ + DWORD f6; + DWORD f5; + DWORD f4; + VPWAVEFORMAT16 f3; + WORD f2; + VPHWAVEOUT16 f1; +} WAVEOUTOPEN16; +typedef WAVEOUTOPEN16 UNALIGNED *PWAVEOUTOPEN16; + +typedef struct _WAVEOUTCLOSE16 { /* mm405 */ + HWAVEOUT16 f1; +} WAVEOUTCLOSE16; +typedef WAVEOUTCLOSE16 UNALIGNED *PWAVEOUTCLOSE16; + +typedef struct _WAVEOUTPREPAREHEADER3216 { /* mm406 */ + WORD f3; + VPWAVEHDR16 f2; + HWAVEOUT16 f1; +} WAVEOUTPREPAREHEADER3216; +typedef WAVEOUTPREPAREHEADER3216 UNALIGNED *PWAVEOUTPREPAREHEADER3216; + +typedef struct _WAVEOUTUNPREPAREHEADER3216 { /* mm407 */ + WORD f3; + VPWAVEHDR16 f2; + HWAVEOUT16 f1; +} WAVEOUTUNPREPAREHEADER3216; +typedef WAVEOUTUNPREPAREHEADER3216 UNALIGNED *PWAVEOUTUNPREPAREHEADER3216; + +typedef struct _WAVEOUTWRITE16 { /* mm408 */ + WORD f3; + VPWAVEHDR16 f2; + HWAVEOUT16 f1; +} WAVEOUTWRITE16; +typedef WAVEOUTWRITE16 UNALIGNED *PWAVEOUTWRITE16; + +typedef struct _WAVEOUTPAUSE16 { /* mm409 */ + HWAVEOUT16 f1; +} WAVEOUTPAUSE16; +typedef WAVEOUTPAUSE16 UNALIGNED *PWAVEOUTPAUSE16; + +typedef struct _WAVEOUTRESTART16 { /* mm410 */ + HWAVEOUT16 f1; +} WAVEOUTRESTART16; +typedef WAVEOUTRESTART16 UNALIGNED *PWAVEOUTRESTART16; + +typedef struct _WAVEOUTRESET16 { /* mm411 */ + HWAVEOUT16 f1; +} WAVEOUTRESET16; +typedef WAVEOUTRESET16 UNALIGNED *PWAVEOUTRESET16; + +typedef struct _WAVEOUTGETPOSITION16 { /* mm412 */ + WORD f3; + VPMMTIME16 f2; + HWAVEOUT16 f1; +} WAVEOUTGETPOSITION16; +typedef WAVEOUTGETPOSITION16 UNALIGNED *PWAVEOUTGETPOSITION16; + +typedef struct _WAVEOUTGETPITCH16 { /* mm413 */ + VPDWORD f2; + HWAVEOUT16 f1; +} WAVEOUTGETPITCH16; +typedef WAVEOUTGETPITCH16 UNALIGNED *PWAVEOUTGETPITCH16; + +typedef struct _WAVEOUTSETPITCH16 { /* mm414 */ + DWORD f2; + HWAVEOUT16 f1; +} WAVEOUTSETPITCH16; +typedef WAVEOUTSETPITCH16 UNALIGNED *PWAVEOUTSETPITCH16; + +typedef struct _WAVEOUTGETVOLUME16 { /* mm415 */ + VPDWORD f2; + WORD f1; +} WAVEOUTGETVOLUME16; +typedef WAVEOUTGETVOLUME16 UNALIGNED *PWAVEOUTGETVOLUME16; + +typedef struct _WAVEOUTSETVOLUME16 { /* mm416 */ + DWORD f2; + WORD f1; +} WAVEOUTSETVOLUME16; +typedef WAVEOUTSETVOLUME16 UNALIGNED *PWAVEOUTSETVOLUME16; + +typedef struct _WAVEOUTGETPLAYBACKRATE16 { /* mm417 */ + VPDWORD f2; + HWAVEOUT16 f1; +} WAVEOUTGETPLAYBACKRATE16; +typedef WAVEOUTGETPLAYBACKRATE16 UNALIGNED *PWAVEOUTGETPLAYBACKRATE16; + +typedef struct _WAVEOUTSETPLAYBACKRATE16 { /* mm418 */ + DWORD f2; + HWAVEOUT16 f1; +} WAVEOUTSETPLAYBACKRATE16; +typedef WAVEOUTSETPLAYBACKRATE16 UNALIGNED *PWAVEOUTSETPLAYBACKRATE16; + +typedef struct _WAVEOUTBREAKLOOP16 { /* mm419 */ + HWAVEOUT16 f1; +} WAVEOUTBREAKLOOP16; +typedef WAVEOUTBREAKLOOP16 UNALIGNED *PWAVEOUTBREAKLOOP16; + +typedef struct _WAVEOUTGETID16 { /* mm420 */ + VPWORD f2; + HWAVEOUT16 f1; +} WAVEOUTGETID16; +typedef WAVEOUTGETID16 UNALIGNED *PWAVEOUTGETID16; + +typedef struct _WAVEOUTMESSAGE3216 { /* mm421 */ + DWORD f4; + DWORD f3; + WORD f2; + HWAVEOUT16 f1; +} WAVEOUTMESSAGE3216; +typedef WAVEOUTMESSAGE3216 UNALIGNED *PWAVEOUTMESSAGE3216; + +#ifdef NULLSTRUCT +typedef struct _WAVEINGETNUMDEVS16 { /* mm501 */ +} WAVEINGETNUMDEVS16; +typedef WAVEINGETNUMDEVS16 UNALIGNED *PWAVEINGETNUMDEVS16; +#endif + +typedef struct _WAVEINGETDEVCAPS16 { /* mm502 */ + WORD f3; + VPWAVEINCAPS16 f2; + WORD f1; +} WAVEINGETDEVCAPS16; +typedef WAVEINGETDEVCAPS16 UNALIGNED *PWAVEINGETDEVCAPS16; + +typedef struct _WAVEINGETERRORTEXT16 { /* mm503 */ + WORD f3; + VPSTR f2; + WORD f1; +} WAVEINGETERRORTEXT16; +typedef WAVEINGETERRORTEXT16 UNALIGNED *PWAVEINGETERRORTEXT16; + +typedef struct _WAVEINOPEN16 { /* mm504 */ + DWORD f6; + DWORD f5; + DWORD f4; + VPWAVEFORMAT16 f3; + WORD f2; + VPHWAVEIN16 f1; +} WAVEINOPEN16; +typedef WAVEINOPEN16 UNALIGNED *PWAVEINOPEN16; + +typedef struct _WAVEINCLOSE16 { /* mm505 */ + HWAVEIN16 f1; +} WAVEINCLOSE16; +typedef WAVEINCLOSE16 UNALIGNED *PWAVEINCLOSE16; + +typedef struct _WAVEINPREPAREHEADER3216 { /* mm506 */ + WORD f3; + VPWAVEHDR16 f2; + HWAVEIN16 f1; +} WAVEINPREPAREHEADER3216; +typedef WAVEINPREPAREHEADER3216 UNALIGNED *PWAVEINPREPAREHEADER3216; + +typedef struct _WAVEINUNPREPAREHEADER3216 { /* mm507 */ + WORD f3; + VPWAVEHDR16 f2; + HWAVEIN16 f1; +} WAVEINUNPREPAREHEADER3216; +typedef WAVEINUNPREPAREHEADER3216 UNALIGNED *PWAVEINUNPREPAREHEADER3216; + +typedef struct _WAVEINADDBUFFER16 { /* mm508 */ + WORD f3; + VPWAVEHDR16 f2; + HWAVEIN16 f1; +} WAVEINADDBUFFER16; +typedef WAVEINADDBUFFER16 UNALIGNED *PWAVEINADDBUFFER16; + +typedef struct _WAVEINSTART16 { /* mm509 */ + HWAVEIN16 f1; +} WAVEINSTART16; +typedef WAVEINSTART16 UNALIGNED *PWAVEINSTART16; + +typedef struct _WAVEINSTOP16 { /* mm510 */ + HWAVEIN16 f1; +} WAVEINSTOP16; +typedef WAVEINSTOP16 UNALIGNED *PWAVEINSTOP16; + +typedef struct _WAVEINRESET16 { /* mm511 */ + HWAVEIN16 f1; +} WAVEINRESET16; +typedef WAVEINRESET16 UNALIGNED *PWAVEINRESET16; + +typedef struct _WAVEINGETPOSITION16 { /* mm512 */ + WORD f3; + VPMMTIME16 f2; + HWAVEIN16 f1; +} WAVEINGETPOSITION16; +typedef WAVEINGETPOSITION16 UNALIGNED *PWAVEINGETPOSITION16; + +typedef struct _WAVEINGETID16 { /* mm513 */ + VPWORD f2; + HWAVEIN16 f1; +} WAVEINGETID16; +typedef WAVEINGETID16 UNALIGNED *PWAVEINGETID16; + +typedef struct _WAVEINMESSAGE3216 { /* mm514 */ + DWORD f4; + DWORD f3; + WORD f2; + HWAVEIN16 f1; +} WAVEINMESSAGE3216; +typedef WAVEINMESSAGE3216 UNALIGNED *PWAVEINMESSAGE3216; + +typedef struct _TIMEGETSYSTEMTIME16 { /* mm601 */ + WORD f2; + VPMMTIME16 f1; +} TIMEGETSYSTEMTIME16; +typedef TIMEGETSYSTEMTIME16 UNALIGNED *PTIMEGETSYSTEMTIME16; + +#ifdef NULLSTRUCT +typedef struct _TIMEGETTIME16 { /* mm607 */ +} TIMEGETTIME16; +typedef TIMEGETTIME16 UNALIGNED *PTIMEGETTIME16; +#endif + +typedef struct _TIMESETEVENT16 { /* mm602 */ + WORD f5; + DWORD f4; + VPTIMECALLBACK16 f3; + WORD f2; + WORD f1; +} TIMESETEVENT16; +typedef TIMESETEVENT16 UNALIGNED *PTIMESETEVENT16; + +typedef struct _TIMEKILLEVENT16 { /* mm603 */ + WORD f1; +} TIMEKILLEVENT16; +typedef TIMEKILLEVENT16 UNALIGNED *PTIMEKILLEVENT16; + +typedef struct _TIMEGETDEVCAPS16 { /* mm604 */ + WORD f2; + VPTIMECAPS16 f1; +} TIMEGETDEVCAPS16; +typedef TIMEGETDEVCAPS16 UNALIGNED *PTIMEGETDEVCAPS16; + +typedef struct _TIMEBEGINPERIOD16 { /* mm605 */ + WORD f1; +} TIMEBEGINPERIOD16; +typedef TIMEBEGINPERIOD16 UNALIGNED *PTIMEBEGINPERIOD16; + +typedef struct _TIMEENDPERIOD16 { /* mm606 */ + WORD f1; +} TIMEENDPERIOD16; +typedef TIMEENDPERIOD16 UNALIGNED *PTIMEENDPERIOD16; + +typedef struct _MCISENDCOMMAND16 { /* mm701 */ + DWORD f4; + DWORD f3; + WORD f2; + WORD f1; +} MCISENDCOMMAND16; +typedef MCISENDCOMMAND16 UNALIGNED *PMCISENDCOMMAND16; + +typedef struct _MCISENDSTRING16 { /* mm702 */ + HWND16 f4; + WORD f3; + VPSTR f2; + VPCSTR f1; +} MCISENDSTRING16; +typedef MCISENDSTRING16 UNALIGNED *PMCISENDSTRING16; + +typedef struct _MCIGETDEVICEID16 { /* mm703 */ + VPCSTR f1; +} MCIGETDEVICEID16; +typedef MCIGETDEVICEID16 UNALIGNED *PMCIGETDEVICEID16; + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +typedef struct _MCIPARSECOMMAND16 { mm704 + BOOL16 f6; + VPWORD f5; + VPSTR f4; + VPCSTR f3; + VPSTR f2; + WORD f1; +} MCIPARSECOMMAND16; +typedef MCIPARSECOMMAND16 UNALIGNED *PMCIPARSECOMMAND16; + +typedef struct _MCILOADCOMMANDRESOURCE16 { mm705 + WORD f3; + VPCSTR f2; + HAND16 f1; +} MCILOADCOMMANDRESOURCE16; +typedef MCILOADCOMMANDRESOURCE16 UNALIGNED *PMCILOADCOMMANDRESOURCE16; + +------------------------------------------------------------------------------*/ + +typedef struct _MCIGETERRORSTRING16 { /* mm706 */ + WORD f3; + VPSTR f2; + DWORD f1; +} MCIGETERRORSTRING16; +typedef MCIGETERRORSTRING16 UNALIGNED *PMCIGETERRORSTRING16; + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +typedef struct _MCISETDRIVERDATA16 { mm707 + DWORD f2; + WORD f1; +} MCISETDRIVERDATA16; +typedef MCISETDRIVERDATA16 UNALIGNED *PMCISETDRIVERDATA16; + +typedef struct _MCIGETDRIVERDATA16 { mm708 + WORD f1; +} MCIGETDRIVERDATA16; +typedef MCIGETDRIVERDATA16 UNALIGNED *PMCIGETDRIVERDATA16; + +typedef struct _MCIDRIVERYIELD16 { mm710 + WORD f1; +} MCIDRIVERYIELD16; +typedef MCIDRIVERYIELD16 UNALIGNED *PMCIDRIVERYIELD16; + +typedef struct _MCIDRIVERNOTIFY16 { mm711 + WORD f3; + WORD f2; + HWND16 f1; +} MCIDRIVERNOTIFY16; +typedef MCIDRIVERNOTIFY16 UNALIGNED *PMCIDRIVERNOTIFY16; + +------------------------------------------------------------------------------*/ + +typedef struct _MCIEXECUTE16 { /* mm712 */ + VPCSTR f1; +} MCIEXECUTE16; +typedef MCIEXECUTE16 UNALIGNED *PMCIEXECUTE16; + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +typedef struct _MCIFREECOMMANDRESOURCE16 { mm713 + WORD f1; +} MCIFREECOMMANDRESOURCE16; +typedef MCIFREECOMMANDRESOURCE16 UNALIGNED *PMCIFREECOMMANDRESOURCE16; + +------------------------------------------------------------------------------*/ + +typedef struct _MCISETYIELDPROC16 { /* mm714 */ + DWORD f3; + DWORD f2; //YIELDPROC + WORD f1; +} MCISETYIELDPROC16; +typedef MCISETYIELDPROC16 UNALIGNED *PMCISETYIELDPROC16; + + +typedef struct _MCIGETDEVICEIDFROMELEMENTID16 { /* mm715 */ + VPCSTR f2; + DWORD f1; +} MCIGETDEVICEIDFROMELEMENTID16; +typedef MCIGETDEVICEIDFROMELEMENTID16 UNALIGNED *PMCIGETDEVICEIDFROMELEMENTID16; + +typedef struct _MCIGETYIELDPROC16 { /* mm716 */ + VPDWORD f2; + WORD f1; +} MCIGETYIELDPROC16; +typedef MCIGETYIELDPROC16 UNALIGNED *PMCIGETYIELDPROC16; + + +typedef struct _MCIGETCREATORTASK16 { /* mm717 */ + WORD f1; +} MCIGETCREATORTASK16; +typedef MCIGETCREATORTASK16 UNALIGNED *PMCIGETCREATORTASK16; + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + The following calls have all been zapped for the time being. + +typedef struct _MMTASKCREATE16 { mm900 + DWORD f3; + HAND16 f2; + VPTASKCALLBACK16 f1; +} MMTASKCREATE16; +typedef MMTASKCREATE16 UNALIGNED *PMMTASKCREATE16; + +typedef struct _MMTASKBLOCK16 { mm902 + HAND16 f1; +} MMTASKBLOCK16; +typedef MMTASKBLOCK16 UNALIGNED *PMMTASKBLOCK16; + +typedef struct _MMTASKSIGNAL16 { mm903 + HAND16 f1; +} MMTASKSIGNAL16; +typedef MMTASKSIGNAL16 UNALIGNED *PMMTASKSIGNAL16; + +#ifdef NULLSTRUCT +typedef struct _MMGETCURRENTTASK16 { mm904 +} MMGETCURRENTTASK16; +typedef MMGETCURRENTTASK16 UNALIGNED *PMMGETCURRENTTASK16; +#endif + +#ifdef NULLSTRUCT +typedef struct _MMTASKYIELD16 { mm905 +} MMTASKYIELD16; +typedef MMTASKYIELD16 UNALIGNED *PMMTASKYIELD16; +#endif + +typedef struct _DRVCLOSE16 { mm1100 + DWORD f3; + DWORD f2; + HDRVR16 f1; +} DRVCLOSE16; +typedef DRVCLOSE16 UNALIGNED *PDRVCLOSE16; + +typedef struct _DRVOPEN16 { mm1101 + DWORD f3; + VPSTR f2; + VPSTR f1; +} DRVOPEN16; +typedef DRVOPEN16 UNALIGNED *PDRVOPEN16; + +typedef struct _DRVSENDMESSAGE16 { mm1102 + DWORD f4; + DWORD f3; + WORD f2; + HDRVR16 f1; +} DRVSENDMESSAGE16; +typedef DRVSENDMESSAGE16 UNALIGNED *PDRVSENDMESSAGE16; + +typedef struct _DRVGETMODULEHANDLE16 { mm1103 + HDRVR16 f1; +} DRVGETMODULEHANDLE16; +typedef DRVGETMODULEHANDLE16 UNALIGNED *PDRVGETMODULEHANDLE; + +#ifdef NULLSTRUCT +typedef struct _DRVDEFDRIVERPROC16{ mm1104 +} DRVDEFDRIVERPROC16; +typedef DRVDEFDRIVERPROC16 UNALIGNED *PDRVDEFDRIVERPROC; +#endif + +------------------------------------------------------------------------------*/ + +typedef struct _MMIOOPEN16 { /* mm1210 */ + DWORD f3; + VPMMIOINFO16 f2; + VPSTR f1; +} MMIOOPEN16; +typedef MMIOOPEN16 UNALIGNED *PMMIOOPEN16; + +typedef struct _MMIOCLOSE16 { /* mm1211 */ + WORD f2; + HMMIO16 f1; +} MMIOCLOSE16; +typedef MMIOCLOSE16 UNALIGNED *PMMIOCLOSE16; + +typedef struct _MMIOREAD16 { /* mm1212 */ + LONG f3; + HPSTR16 f2; + HMMIO16 f1; +} MMIOREAD16; +typedef MMIOREAD16 UNALIGNED *PMMIOREAD16; + +typedef struct _MMIOWRITE16 { /* mm1213 */ + LONG f3; + HPSTR16 f2; + HMMIO16 f1; +} MMIOWRITE16; +typedef MMIOWRITE16 UNALIGNED *PMMIOWRITE16; + +typedef struct _MMIOSEEK16 { /* mm1214 */ + INT16 f3; + LONG f2; + HMMIO16 f1; +} MMIOSEEK16; +typedef MMIOSEEK16 UNALIGNED *PMMIOSEEK16; + +typedef struct _MMIOGETINFO16 { /* mm1215 */ + WORD f3; + VPMMIOINFO16 f2; + HMMIO16 f1; +} MMIOGETINFO16; +typedef MMIOGETINFO16 UNALIGNED *PMMIOGETINFO16; + +typedef struct _MMIOSETINFO16 { /* mm1216 */ + WORD f3; + VPMMIOINFO16 f2; + HMMIO16 f1; +} MMIOSETINFO16; +typedef MMIOSETINFO16 UNALIGNED *PMMIOSETINFO16; + +typedef struct _MMIOSETBUFFER16 { /* mm1217 */ + WORD f4; + LONG f3; + VPSTR f2; + HMMIO16 f1; +} MMIOSETBUFFER16; +typedef MMIOSETBUFFER16 UNALIGNED *PMMIOSETBUFFER16; + +typedef struct _MMIOFLUSH16 { /* mm1218 */ + WORD f2; + HMMIO16 f1; +} MMIOFLUSH16; +typedef MMIOFLUSH16 UNALIGNED *PMMIOFLUSH16; + +typedef struct _MMIOADVANCE16 { /* mm1219 */ + WORD f3; + VPMMIOINFO16 f2; + HMMIO16 f1; +} MMIOADVANCE16; +typedef MMIOADVANCE16 UNALIGNED *PMMIOADVANCE16; + +typedef struct _MMIOSTRINGTOFOURCC16 { /* mm1220 */ + WORD f2; + VPCSTR f1; +} MMIOSTRINGTOFOURCC16; +typedef MMIOSTRINGTOFOURCC16 UNALIGNED *PMMIOSTRINGTOFOURCC16; + +typedef struct _MMIOINSTALLIOPROC16 { /* mm1221 */ + DWORD f3; + VPMMIOPROC16 f2; + FOURCC f1; +} MMIOINSTALLIOPROC16; +typedef MMIOINSTALLIOPROC16 UNALIGNED *PMMIOINSTALLIOPROC16; + +typedef struct _MMIOSENDMESSAGE16 { /* mm1222 */ + LPARAM f4; + LPARAM f3; + WORD f2; + HMMIO16 f1; +} MMIOSENDMESSAGE16; +typedef MMIOSENDMESSAGE16 UNALIGNED *PMMIOSENDMESSAGE16; + +typedef struct _MMIODESCEND16 { /* mm1223 */ + WORD f4; + VPMMCKINFO16 f3; + VPMMCKINFO16 f2; + HMMIO16 f1; +} MMIODESCEND16; +typedef MMIODESCEND16 UNALIGNED *PMMIODESCEND16; + +typedef struct _MMIOASCEND16 { /* mm1224 */ + WORD f3; + VPMMCKINFO16 f2; + HMMIO16 f1; +} MMIOASCEND16; +typedef MMIOASCEND16 UNALIGNED *PMMIOASCEND16; + +typedef struct _MMIOCREATECHUNK16 { /* mm1225 */ + WORD f3; + VPMMCKINFO16 f2; + HMMIO16 f1; +} MMIOCREATECHUNK16; +typedef MMIOCREATECHUNK16 UNALIGNED *PMMIOCREATECHUNK16; + +typedef struct _MMIORENAME16 { /* mm1226 */ + DWORD f4; + VPMMIOINFO16 f3; + VPCSTR f2; + VPCSTR f1; +} MMIORENAME16; +typedef MMIORENAME16 UNALIGNED *PMMIORENAME16; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ + diff --git a/private/mvdm/inc/wowshell.h b/private/mvdm/inc/wowshell.h new file mode 100644 index 000000000..15d269742 --- /dev/null +++ b/private/mvdm/inc/wowshell.h @@ -0,0 +1,172 @@ +/*++ BUILD Version: 0001 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWSHELL.H + * 16-bit SHELL API argument structures + * + * History: + * Created 14-April-1992 by Chandan S. Chauhan (ChandanC) + * +--*/ + +/* SHELL API IDs + */ +#define FUN_REGOPENKEY 1 +#define FUN_REGCREATEKEY 2 +#define FUN_REGCLOSEKEY 3 +#define FUN_REGDELETEKEY 4 +#define FUN_REGSETVALUE 5 +#define FUN_REGQUERYVALUE 6 +#define FUN_REGENUMKEY 7 +#define FUN_DRAGACCEPTFILES 9 +#define FUN_DRAGQUERYFILE 11 +#define FUN_DRAGFINISH 12 +#define FUN_DRAGQUERYPOINT 13 +#define FUN_SHELLEXECUTE 20 +#define FUN_FINDEXECUTABLE 21 +#define FUN_SHELLABOUT 22 +#define FUN_WCI 32 +#define FUN_ABOUTDLGPROC 33 +#define FUN_EXTRACTICON 34 +#define FUN_EXTRACTASSOCIATEDICON 36 +#define FUN_DOENVIRONMENTSUBST 37 +#define FUN_FINDENVIRONMENTSTRING 38 +#define FUN_INTERNALEXTRACTICON 39 +#define FUN_HERETHARBETYGARS 100 +#define FUN_FINDEXEDLGPROC 101 +#define FUN_REGISTERSHELLHOOK 102 +#define FUN_SHELLHOOKPROC 103 + + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +typedef struct _REGOPENKEY16 { /* s1 */ + VPVOID f3; + VPVOID f2; + DWORD f1; +} REGOPENKEY16; +typedef REGOPENKEY16 UNALIGNED *PREGOPENKEY16; + +typedef struct _REGCREATEKEY16 { /* s2 */ + VPVOID f3; + VPVOID f2; + DWORD f1; +} REGCREATEKEY16; +typedef REGCREATEKEY16 UNALIGNED *PREGCREATEKEY16; + +typedef struct _REGCLOSEKEY16 { /* s3 */ + DWORD f1; +} REGCLOSEKEY16; +typedef REGCLOSEKEY16 UNALIGNED *PREGCLOSEKEY16; + +typedef struct _REGDELETEKEY16 { /* s4 */ + VPVOID f2; + DWORD f1; +} REGDELETEKEY16; +typedef REGDELETEKEY16 UNALIGNED *PREGDELETEKEY16; + +typedef struct _REGSETVALUE16 { /* s5 */ + DWORD f5; + VPVOID f4; + DWORD f3; + VPVOID f2; + DWORD f1; +} REGSETVALUE16; +typedef REGSETVALUE16 UNALIGNED *PREGSETVALUE16; + +typedef struct _REGQUERYVALUE16 { /* s6 */ + VPVOID f4; + VPVOID f3; + VPVOID f2; + DWORD f1; +} REGQUERYVALUE16; +typedef REGQUERYVALUE16 UNALIGNED *PREGQUERYVALUE16; + +typedef struct _REGENUMKEY16 { /* s7 */ + DWORD f4; + VPVOID f3; + DWORD f2; + DWORD f1; +} REGENUMKEY16; +typedef REGENUMKEY16 UNALIGNED *PREGENUMKEY16; + +typedef struct _DRAGACCEPTFILES16 { /* s9 */ + SHORT f2; + HAND16 f1; +} DRAGACCEPTFILES16; +typedef DRAGACCEPTFILES16 UNALIGNED *PDRAGACCEPTFILES16; + +typedef struct _DRAGQUERYFILE16 { /* s11 */ + WORD f4; + VPVOID f3; + WORD f2; + HAND16 f1; +} DRAGQUERYFILE16; +typedef DRAGQUERYFILE16 UNALIGNED *PDRAGQUERYFILE16; + +typedef struct _DRAGFINISH16 { /* s12 */ + HAND16 f1; +} DRAGFINISH16; +typedef DRAGFINISH16 UNALIGNED *PDRAGFINISH16; + +typedef struct _DRAGQUERYPOINT16 { /* s13 */ + VPVOID f2; + HAND16 f1; +} DRAGQUERYPOINT16; +typedef DRAGQUERYPOINT16 UNALIGNED *PDRAGQUERYPOINT16; + +typedef struct _SHELLABOUT16 { /* s22 */ + HAND16 f4; + VPVOID f3; + VPVOID f2; + HAND16 f1; +} SHELLABOUT16; +typedef SHELLABOUT16 UNALIGNED *PSHELLABOUT16; + + +typedef struct _SHELLEXECUTE16 { /* s20 */ + WORD f6; + VPVOID f5; + VPVOID f4; + VPVOID f3; + VPVOID f2; + HAND16 f1; +} SHELLEXECUTE16; +typedef SHELLEXECUTE16 UNALIGNED *PSHELLEXECUTE16; + +typedef struct _FINDEXECUTABLE16 { /* s21 */ + VPVOID f3; + VPVOID f2; + VPVOID f1; +} FINDEXECUTABLE16; +typedef FINDEXECUTABLE16 UNALIGNED *PFINDEXECUTABLE16; + +typedef struct _EXTRACTICON16 { /* s34 */ + WORD f3; + VPVOID f2; + HAND16 f1; +} EXTRACTICON16; +typedef EXTRACTICON16 UNALIGNED *PEXTRACTICON16; + +typedef struct _EXTRACTASSOCIATEDICON16 { /* s36 */ + VPVOID f3; + VPVOID f2; + HAND16 f1; +} EXTRACTASSOCIATEDICON16; +typedef EXTRACTASSOCIATEDICON16 UNALIGNED *PEXTRACTASSOCIATEDICON16; + +typedef struct _DOENVIRONMENTSUBST16 { /* s37 */ + WORD cch; + VPVOID vpsz; +} DOENVIRONMENTSUBST16; +typedef DOENVIRONMENTSUBST16 UNALIGNED *PDOENVIRONMENTSUBST16; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ + diff --git a/private/mvdm/inc/wowsnd.h b/private/mvdm/inc/wowsnd.h new file mode 100644 index 000000000..7e469c23d --- /dev/null +++ b/private/mvdm/inc/wowsnd.h @@ -0,0 +1,146 @@ +/*++ BUILD Version: 0001 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWSND.H + * 16-bit Sound API argument structures + * + * History: + * Created 02-Feb-1991 by Jeff Parsons (jeffpar) +--*/ + + +/* Sound API IDs + */ +#define FUN_CLOSESOUND 2 // +#define FUN_COUNTVOICENOTES 13 // +#define FUN_DOBEEP 17 // Internal +#define FUN_GETTHRESHOLDEVENT 14 // +#define FUN_GETTHRESHOLDSTATUS 15 // +#define FUN_MYOPENSOUND 18 // Internal +#define FUN_OPENSOUND 1 // +#define FUN_SETSOUNDNOISE 7 // +#define FUN_SETVOICEACCENT 5 // +#define FUN_SETVOICEENVELOPE 6 // +#define FUN_SETVOICENOTE 4 // +#define FUN_SETVOICEQUEUESIZE 3 // +#define FUN_SETVOICESOUND 8 // +#define FUN_SETVOICETHRESHOLD 16 // +#define FUN_SOUND_WEP 0 // Export by name +#define FUN_STARTSOUND 9 // +#define FUN_STOPSOUND 10 // +#define FUN_SYNCALLVOICES 12 // +#define FUN_WAITSOUNDSTATE 11 // + + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +#ifdef NULLSTRUCT +typedef struct _CLOSESOUND16 { /* s2 */ +} CLOSESOUND16; +typedef CLOSESOUND16 UNALIGNED *PCLOSESOUND16; +#endif + +typedef struct _COUNTVOICENOTES16 { /* s13 */ + SHORT f1; +} COUNTVOICENOTES16; +typedef COUNTVOICENOTES16 UNALIGNED *PCOUNTVOICENOTES16; + +#ifdef NULLSTRUCT +typedef struct _GETTHRESHOLDEVENT16 { /* s14 */ +} GETTHRESHOLDEVENT16; +typedef GETTHRESHOLDEVENT16 UNALIGNED *PGETTHRESHOLDEVENT16; +#endif + +#ifdef NULLSTRUCT +typedef struct _GETTHRESHOLDSTATUS16 { /* s15 */ +} GETTHRESHOLDSTATUS16; +typedef GETTHRESHOLDSTATUS16 UNALIGNED *PGETTHRESHOLDSTATUS16; +#endif + +#ifdef NULLSTRUCT +typedef struct _OPENSOUND16 { /* s1 */ +} OPENSOUND16; +typedef OPENSOUND16 UNALIGNED *POPENSOUND16; +#endif + +typedef struct _SETSOUNDNOISE16 { /* s7 */ + SHORT f1; + SHORT f2; +} SETSOUNDNOISE16; +typedef SETSOUNDNOISE16 UNALIGNED *PSETSOUNDNOISE16; + +typedef struct _SETVOICEACCENT16 { /* s5 */ + SHORT f1; + SHORT f2; + SHORT f3; + SHORT f4; + SHORT f5; +} SETVOICEACCENT16; +typedef SETVOICEACCENT16 UNALIGNED *PSETVOICEACCENT16; + +typedef struct _SETVOICEENVELOPE16 { /* s6 */ + SHORT f1; + SHORT f2; + SHORT f3; +} SETVOICEENVELOPE16; +typedef SETVOICEENVELOPE16 UNALIGNED *PSETVOICEENVELOPE16; + +typedef struct _SETVOICENOTE16 { /* s4 */ + SHORT f1; + SHORT f2; + SHORT f3; + SHORT f4; +} SETVOICENOTE16; +typedef SETVOICENOTE16 UNALIGNED *PSETVOICENOTE16; + +typedef struct _SETVOICEQUEUESIZE16 { /* s3 */ + SHORT f1; + SHORT f2; +} SETVOICEQUEUESIZE16; +typedef SETVOICEQUEUESIZE16 UNALIGNED *PSETVOICEQUEUESIZE16; + +typedef struct _SETVOICESOUND16 { /* s8 */ + SHORT f1; + LONG f2; + SHORT f3; +} SETVOICESOUND16; +typedef SETVOICESOUND16 UNALIGNED *PSETVOICESOUND16; + +typedef struct _SETVOICETHRESHOLD16 { /* s16 */ + SHORT f1; + SHORT f2; +} SETVOICETHRESHOLD16; +typedef SETVOICETHRESHOLD16 UNALIGNED *PSETVOICETHRESHOLD16; + +#ifdef NULLSTRUCT +typedef struct _STARTSOUND16 { /* s9 */ +} STARTSOUND16; +typedef STARTSOUND16 UNALIGNED *PSTARTSOUND16; +#endif + +#ifdef NULLSTRUCT +typedef struct _STOPSOUND16 { /* s10 */ +} STOPSOUND16; +typedef STOPSOUND16 UNALIGNED *PSTOPSOUND16; +#endif + +#ifdef NULLSTRUCT +typedef struct _SYNCALLVOICES16 { /* s12 */ +} SYNCALLVOICES16; +typedef SYNCALLVOICES16 UNALIGNED *PSYNCALLVOICES16; +#endif + +typedef struct _WAITSOUNDSTATE16 { /* s11 */ + SHORT f1; +} WAITSOUNDSTATE16; +typedef WAITSOUNDSTATE16 UNALIGNED *PWAITSOUNDSTATE16; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ + diff --git a/private/mvdm/inc/wowth.h b/private/mvdm/inc/wowth.h new file mode 100644 index 000000000..f8e9b4333 --- /dev/null +++ b/private/mvdm/inc/wowth.h @@ -0,0 +1,39 @@ +/*++ BUILD Version: 0001 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWTH.H + * 16-bit ToolHelp thunked API argument structures + * + * History: + * 12-Nov-92 Dave Hart (davehart) created using wowkrn.h as template +--*/ + + +/* ToolHelp API IDs + */ +#define FUN_CLASSFIRST 1 +#define FUN_CLASSNEXT 2 + + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + + +typedef struct _CLASSFIRST16 { /* th1 */ + VPVOID f1; +} CLASSFIRST16; +typedef CLASSFIRST16 UNALIGNED *PCLASSFIRST16; + +typedef struct _CLASSNEXT16 { /* th2 */ + VPVOID f1; +} CLASSNEXT16; +typedef CLASSNEXT16 UNALIGNED *PCLASSNEXT16; + + +/* XLATOFF */ +#pragma pack() +/* XLATON */ diff --git a/private/mvdm/inc/wowusr.h b/private/mvdm/inc/wowusr.h new file mode 100644 index 000000000..b5f487c30 --- /dev/null +++ b/private/mvdm/inc/wowusr.h @@ -0,0 +1,3214 @@ +/*++ BUILD Version: 0001 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWUSR.H + * 16-bit User API argument structures + * + * History: + * Created 02-Feb-1991 by Jeff Parsons (jeffpar) + * Added Win 3.1 APIs on 19-March-1992 Chandan S. Chauhan (ChandanC) + * +--*/ + +/* User API IDs + */ +#define FUN_ADJUSTWINDOWRECT 102 // +#define FUN_ADJUSTWINDOWRECTEX 454 // +#define FUN_ANSILOWER 432 // +#define FUN_ANSILOWERBUFF 438 // +#define FUN_ANSINEXT 472 // +#define FUN_ANSIPREV 473 // +#define FUN_ANSIUPPER 431 // +#define FUN_ANSIUPPERBUFF 437 // +#define FUN_ANYPOPUP 52 // +#define FUN_APPENDMENU 411 // +#define FUN_ARRANGEICONICWINDOWS 170 // Internal, proto +#define FUN_BEGINDEFERWINDOWPOS 259 // Internal, proto +#define FUN_BEGINPAINT 39 // +#define FUN_BRINGWINDOWTOTOP 45 // +#define FUN_BROADCASTMESSAGE 355 // Internal +#define FUN_BUILDCOMMDCB 213 // +#define FUN_BUTTONWNDPROC 303 // Internal +#define FUN_CALCCHILDSCROLL 462 // Internal +#define FUN_CALLMSGFILTER 123 // +#define FUN_CALLWINDOWPROC 122 // +#define FUN_CARETBLINKPROC 311 // Internal +#define FUN_CASCADECHILDWINDOWS 198 // Internal +#define FUN_CHANGECLIPBOARDCHAIN 149 // +#define FUN_CHANGEMENU 153 // +#define FUN_CHECKDLGBUTTON 97 // +#define FUN_CHECKMENUITEM 154 // +#define FUN_CHECKRADIOBUTTON 96 // +#define FUN_CHILDWINDOWFROMPOINT 191 // +#define FUN_CLEARCOMMBREAK 211 // +#define FUN_CLIENTTOSCREEN 28 // +#define FUN_CLIPCURSOR 16 // +#define FUN_CLOSECLIPBOARD 138 // +#define FUN_CLOSECOMM 207 // +#define FUN_CLOSEWINDOW 43 // +#define FUN_COMBOBOXCTLWNDPROC 344 // Internal +#define FUN_COMPUPDATERECT 316 // Internal +#define FUN_COMPUPDATERGN 317 // Internal +#define FUN_CONTROLPANELINFO 273 // Internal +#define FUN_CONTSCROLL 310 // Internal +#define FUN_COPYRECT 74 // +#define FUN_COUNTCLIPBOARDFORMATS 143 // +#define FUN_CREATECARET 163 // +#define FUN_CREATECURSOR 406 // +#define FUN_CREATECURSORICONINDIRECT 408 // Internal +#define FUN_CREATEDIALOG 89 // +#define FUN_CREATEDIALOGINDIRECT 219 // +#define FUN_CREATEDIALOGINDIRECTPARAM 242 // +#define FUN_CREATEDIALOGPARAM 241 // +#define FUN_CREATEICON 407 // +#define FUN_CREATEMENU 151 // +#define FUN_CREATEPOPUPMENU 415 // +#define FUN_CREATEWINDOW 41 // +#define FUN_CREATEWINDOWEX 452 // +#define FUN_DEFDLGPROC 308 // +#define FUN_DEFDLGPROCTHUNK 534 // +#define FUN_DEFERWINDOWPOS 260 // Internal, proto +#define FUN_DEFFRAMEPROC 445 // +#define FUN_DEFHOOKPROC 235 // +#define FUN_DEFMDICHILDPROC 447 // +#define FUN_DEFWINDOWPROC 107 // +#define FUN_DELETEMENU 413 // +#define FUN_DESKTOPWNDPROC 305 // Internal +#define FUN_DESTROYCARET 164 // +#define FUN_DESTROYCURSOR 458 // +#define FUN_DESTROYICON 457 // +#define FUN_DESTROYMENU 152 // +#define FUN_DESTROYWINDOW 53 // +#define FUN_DIALOGBOX 87 // +#define FUN_DIALOGBOXINDIRECT 218 // +#define FUN_DIALOGBOXINDIRECTPARAM 240 // +#define FUN_DIALOGBOXPARAM 239 // +#define FUN_DISABLEOEMLAYER 4 // Internal +#define FUN_DISPATCHMESSAGE 114 // +#define FUN_DLGDIRLIST 100 // +#define FUN_DLGDIRLISTCOMBOBOX 195 // +#define FUN_DLGDIRSELECT 99 // +#define FUN_DLGDIRSELECTCOMBOBOX 194 // +#define FUN_DRAGDETECT 465 // Internal +#define FUN_DRAGOBJECT 464 // Internal +#define FUN_DRAWFOCUSRECT 466 // +#define FUN_DRAWICON 84 // +#define FUN_DRAWMENUBAR 160 // +#define FUN_DRAWTEXT 85 // +#define FUN_DUMPICON 459 // Internal +#define FUN_EDITWNDPROC 301 // Internal +#define FUN_EMPTYCLIPBOARD 139 // +#define FUN_ENABLEHARDWAREINPUT 331 // +#define FUN_ENABLEMENUITEM 155 // +#define FUN_ENABLEOEMLAYER 3 // Internal +#define FUN_ENABLEWINDOW 34 // +#define FUN_ENDDEFERWINDOWPOS 261 // Internal, proto +#define FUN_ENDDIALOG 88 // +#define FUN_ENDMENU 187 // Internal +#define FUN_ENDPAINT 40 // +#define FUN_ENUMCHILDWINDOWS 55 // +#define FUN_ENUMCLIPBOARDFORMATS 144 // +#define FUN_ENUMPROPS 27 // +#define FUN_ENUMTASKWINDOWS 225 // +#define FUN_ENUMWINDOWS 54 // +#define FUN_EQUALRECT 244 // +#define FUN_ESCAPECOMMFUNCTION 214 // +#define FUN_EXCLUDEUPDATERGN 238 // +#define FUN_EXITWINDOWS 7 // Internal, proto +#define FUN_FARCALLNETDRIVER 500 // Internal +#define FUN_FILEPORTDLGPROC 346 // Internal +#define FUN_FILLRECT 81 // +#define FUN_FILLWINDOW 324 // Internal +#define FUN_FINALUSERINIT 400 // Internal +#define FUN_FINDWINDOW 50 // +#define FUN_FLASHWINDOW 105 // +#define FUN_FLUSHCOMM 215 // +#define FUN_FRAMERECT 83 // +#define FUN_GETACTIVEWINDOW 60 // +#define FUN_GETASYNCKEYSTATE 249 // +#define FUN_GETCAPTURE 236 // +#define FUN_GETCARETBLINKTIME 169 // +#define FUN_GETCARETPOS 183 // +#define FUN_GETCLASSINFO 404 // +#define FUN_GETCLASSLONG 131 // +#define FUN_GETCLASSNAME 58 // +#define FUN_GETCLASSWORD 129 // +#define FUN_GETCLIENTRECT 33 // +#define FUN_GETCLIPBOARDDATA 142 // +#define FUN_GETCLIPBOARDFORMATNAME 146 // +#define FUN_GETCLIPBOARDOWNER 140 // +#define FUN_GETCLIPBOARDVIEWER 148 // +#define FUN_GETCOMMERROR 203 // +#define FUN_GETCOMMEVENTMASK 209 // +#define FUN_GETCOMMSTATE 202 // +#define FUN_GETCONTROLBRUSH 326 // Internal +#define FUN_GETCURRENTTIME 15 // +#define FUN_GETSYSTEMMSECCOUNT 15 // This system.drv rtn gets thunked to GetCurrentTime +#define FUN_GETCURSORPOS 17 // +#define FUN_GETDC 66 // +#define FUN_GETDESKTOPHWND 278 // Internal, proto +#define FUN_GETDESKTOPWINDOW 286 // +#define FUN_GETDIALOGBASEUNITS 243 // +#define FUN_GETDLGCTRLID 277 // Internal, proto +#define FUN_GETDLGITEM 91 // +#define FUN_GETDLGITEMINT 95 // +#define FUN_GETDLGITEMTEXT 93 // +#define FUN_GETDOUBLECLICKTIME 21 // +#define FUN_GETFILEPORTNAME 343 // Internal +#define FUN_GETFOCUS 23 // +#define FUN_GETICONID 455 // Internal +#define FUN_GETINPUTSTATE 335 // +#define FUN_GETINTERNALWINDOWPOS 460 // Internal +#define FUN_GETKEYBOARDSTATE 222 // +#define FUN_GETKEYSTATE 106 // +#define FUN_GETLASTACTIVEPOPUP 287 // +#define FUN_GETMENU 157 // +#define FUN_GETMENUCHECKMARKDIMENSIONS 417 // +#define FUN_GETMENUITEMCOUNT 263 // +#define FUN_GETMENUITEMID 264 // +#define FUN_GETMENUSTATE 250 // +#define FUN_GETMENUSTRING 161 // +#define FUN_GETMESSAGE 108 // +#define FUN_GETMESSAGE2 323 // Internal +#define FUN_GETMESSAGEPOS 119 // +#define FUN_GETMESSAGETIME 120 // +#define FUN_GETMOUSEEVENTPROC 337 // Internal +#define FUN_GETNEXTDLGGROUPITEM 227 // +#define FUN_GETNEXTDLGTABITEM 228 // +#define FUN_GETNEXTQUEUEWINDOW 274 // Internal +#define FUN_GETNEXTWINDOW 230 // +#define FUN_GETPARENT 46 // +#define FUN_GETPRIORITYCLIPBOARDFORMAT 402 // +#define FUN_GETPROP 25 // +#define FUN_GETQUEUESTATUS 334 // Internal +#define FUN_GETSCROLLPOS 63 // +#define FUN_GETSCROLLRANGE 65 // +#define FUN_GETSUBMENU 159 // +#define FUN_GETSYSCOLOR 180 // +#define FUN_GETSYSMODALWINDOW 189 // +#define FUN_GETSYSTEMMENU 156 // +#define FUN_GETSYSTEMMETRICS 179 // +#define FUN_GETTABBEDTEXTEXTENT 197 // +#define FUN_GETTASKFROMHWND 117 // Internal +#define FUN_GETTICKCOUNT 13 // +#define FUN_GETTIMERRESOLUTION 14 // Internal +#define FUN_GETTOPWINDOW 229 // +#define FUN_GETUPDATERECT 190 // +#define FUN_GETUPDATERGN 237 // +#define FUN_GETWC2 318 // Internal +#define FUN_GETWINDOW 262 // +#define FUN_GETWINDOWDC 67 // +#define FUN_GETWINDOWLONG 135 // +#define FUN_GETWINDOWRECT 32 // +#define FUN_GETWINDOWTASK 224 // +#define FUN_GETWINDOWTEXT 36 // +#define FUN_GETWINDOWTEXTLENGTH 38 // +#define FUN_GETWINDOWWORD 133 // +#define FUN_GLOBALADDATOM 268 // +#define FUN_GLOBALDELETEATOM 269 // +#define FUN_GLOBALFINDATOM 270 // +#define FUN_GLOBALGETATOMNAME 271 // +#define FUN_GRAYSTRING 185 // +#define FUN_HIDECARET 166 // +#define FUN_HILITEMENUITEM 162 // +#define FUN_ICONSIZE 86 // Internal +#define FUN_INFLATERECT 78 // +#define FUN_INITAPP 5 // No proto +#define FUN_INSENDMESSAGE 192 // +#define FUN_INSERTMENU 410 // +#define FUN_INTERSECTRECT 79 // +#define FUN_INVALIDATERECT 125 // +#define FUN_INVALIDATERGN 126 // +#define FUN_INVERTRECT 82 // +#define FUN_ISCHARALPHA 433 // +#define FUN_ISCHARALPHANUMERIC 434 // +#define FUN_ISCHARLOWER 436 // +#define FUN_ISCHARUPPER 435 // +#define FUN_ISCHILD 48 // +#define FUN_ISCLIPBOARDFORMATAVAILABLE 193 // +#define FUN_ISDIALOGMESSAGE 90 // +#define FUN_ISDLGBUTTONCHECKED 98 // +#define FUN_ISICONIC 31 // +#define FUN_ISRECTEMPTY 75 // +#define FUN_ISTWOBYTECHARPREFIX 51 // Internal, proto +#define FUN_ISUSERIDLE 333 // Internal +#define FUN_ISWINDOW 47 // +#define FUN_ISWINDOWENABLED 35 // +#define FUN_ISWINDOWVISIBLE 49 // +#define FUN_ISZOOMED 272 // +#define FUN_KILLSYSTEMTIMER 182 // Internal +#define FUN_KILLTIMER 12 // +#define FUN_KILLTIMER2 327 // Internal +#define FUN_LBOXCARETBLINKER 453 // Internal +#define FUN_LBOXCTLWNDPROC 307 // Internal +#define FUN_LOADACCELERATORS 177 // +#define FUN_LOADBITMAP 175 // +#define FUN_LOADCURSOR 173 // +#define FUN_LOADCURSORICONHANDLER 336 // Internal +#define FUN_LOADDIBCURSORHANDLER 356 // Internal +#define FUN_LOADDIBICONHANDLER 357 // Internal +#define FUN_LOADICON 174 // +#define FUN_LOADICONHANDLER 456 // Internal +#define FUN_LOADMENU 150 // +#define FUN_LOADMENUINDIRECT 220 // +#define FUN_LOADSTRING 176 // +#define FUN_LOCKMYTASK 276 // Internal +#define FUN_LOOKUPMENUHANDLE 217 // Internal +#define FUN_LSTRCMP 430 // +#define FUN_LSTRCMPI 471 // +#define FUN_MAPDIALOGRECT 103 // +#define FUN_MB_DLGPROC 409 // Internal +#define FUN_MDICLIENTWNDPROC 444 // Internal +#define FUN_MENUITEMSTATE 329 // Internal +#define FUN_MENUWNDPROC 306 // Internal +#define FUN_MESSAGEBEEP 104 // +#define FUN_MESSAGEBOX 1 // +#define FUN_MODIFYMENU 414 // +#define FUN_MOVEWINDOW 56 // +#define FUN_OFFSETRECT 77 // +#define FUN_OLDEXITWINDOWS 2 // Internal +#define FUN_OPENCLIPBOARD 137 // +#define FUN_OPENCOMM 200 // +#define FUN_OPENICON 44 // +#define FUN_PAINTRECT 325 // Internal +#define FUN_PEEKMESSAGE 109 // +#define FUN_POSTAPPMESSAGE 116 // +#define FUN_POSTMESSAGE 110 // +#define FUN_POSTMESSAGE2 313 // Internal +#define FUN_POSTQUITMESSAGE 6 // +#define FUN_PTINRECT 76 // +#define FUN_READCOMM 204 // +#define FUN_REALIZEPALETTE 283 // +#define FUN_REGISTERCLASS 57 // +#define FUN_REGISTERCLIPBOARDFORMAT 145 // +#define FUN_REGISTERWINDOWMESSAGE 118 // +#define FUN_RELEASECAPTURE 19 // +#define FUN_RELEASEDC 68 // +#define FUN_REMOVEMENU 412 // +#define FUN_REMOVEPROP 24 // +#define FUN_REPAINTSCREEN 275 // No proto +#define FUN_REPLYMESSAGE 115 // +#define FUN_SBWNDPROC 304 // Internal +#define FUN_SCREENTOCLIENT 29 // +#define FUN_SCROLLCHILDREN 463 // Internal +#define FUN_SCROLLDC 221 // +#define FUN_SCROLLWINDOW 61 // +#define FUN_SELECTPALETTE 282 // +#define FUN_SENDDLGITEMMESSAGE 101 // +#define FUN_SENDMESSAGE 111 // +#define FUN_SENDMESSAGE2 312 // Internal +#define FUN_SETACTIVEWINDOW 59 // +#define FUN_SETCAPTURE 18 // +#define FUN_SETCARETBLINKTIME 168 // +#define FUN_SETCARETPOS 165 // +#define FUN_SETCLASSLONG 132 // +#define FUN_SETCLASSWORD 130 // +#define FUN_SETCLIPBOARDDATA 141 // +#define FUN_SETCLIPBOARDVIEWER 147 // +#define FUN_SETCOMMBREAK 210 // +#define FUN_SETCOMMEVENTMASK 208 // +#define FUN_SETCOMMSTATE 201 // +#define FUN_SETCURSOR 69 // +#define FUN_SETCURSORPOS 70 // +#define FUN_SETDESKPATTERN 279 // Internal +#define FUN_SETDESKWALLPAPER 285 // Internal +#define FUN_SETDLGITEMINT 94 // +#define FUN_SETDLGITEMTEXT 92 // +#define FUN_SETDOUBLECLICKTIME 20 // +#define FUN_SETEVENTHOOK 321 // Internal +#define FUN_SETFOCUS 22 // +#define FUN_SETGETKBDSTATE 330 // Internal +#define FUN_SETGRIDGRANULARITY 284 // Internal +#define FUN_SETINTERNALWINDOWPOS 461 // Internal +#define FUN_SETKEYBOARDSTATE 223 // +#define FUN_SETMENU 158 // +#define FUN_SETMENUITEMBITMAPS 418 // +#define FUN_SETMESSAGEQUEUE 266 // +#define FUN_SETPARENT 233 // +#define FUN_SETPROP 26 // +#define FUN_SETRECT 72 // +#define FUN_SETRECTEMPTY 73 // +#define FUN_SETSCROLLPOS 62 // +#define FUN_SETSCROLLRANGE 64 // +#define FUN_SETSYSCOLORS 181 // +#define FUN_SETSYSMODALWINDOW 188 // +#define FUN_SETSYSTEMMENU 280 // Internal +#define FUN_SETSYSTEMTIMER 11 // Internal +#define FUN_SETTIMER 10 // +#define FUN_SETTIMER2 328 // Internal +#define FUN_SETWC2 319 // Internal +#define FUN_SETWINDOWLONG 136 // +#define FUN_SETWINDOWPOS 232 // +#define FUN_SETWINDOWSHOOKINTERNAL 121 // Internal +#define FUN_SETWINDOWTEXT 37 // +#define FUN_SETWINDOWWORD 134 // +#define FUN_SHOWCARET 167 // +#define FUN_SHOWCURSOR 71 // +#define FUN_SHOWOWNEDPOPUPS 265 // +#define FUN_SHOWSCROLLBAR 267 // +#define FUN_SHOWWINDOW 42 // +#define FUN_SIGNALPROC 314 // Internal +#define FUN_SNAPWINDOW 281 // Internal +#define FUN_STATICWNDPROC 302 // Internal +#define FUN_STRINGFUNC 470 // Internal +#define FUN_SWAPMOUSEBUTTON 186 // +#define FUN_SWITCHTOTHISWINDOW 172 // Internal +#define FUN_SWITCHWNDPROC 347 // Internal +#define FUN_SYSERRORBOX 320 // Internal +#define FUN_TABBEDTEXTOUT 196 // +#define FUN_TABTHETEXTOUTFORWIMPS 354 // Internal +#define FUN_TILECHILDWINDOWS 199 // Internal +#define FUN_TITLEWNDPROC 345 // Internal +#define FUN_TRACKPOPUPMENU 416 // +#define FUN_TRANSLATEACCELERATOR 178 // +#define FUN_TRANSLATEMDISYSACCEL 451 // +#define FUN_TRANSLATEMESSAGE 113 // +#define FUN_TRANSMITCOMMCHAR 206 // +#define FUN_UNGETCOMMCHAR 212 // +#define FUN_UNHOOKWINDOWSHOOK 234 // +#define FUN_UNIONRECT 80 // +#define FUN_UNREGISTERCLASS 403 // +#define FUN_UPDATEWINDOW 124 // +#define FUN_USERYIELD 332 // Internal +#define FUN_VALIDATERECT 127 // +#define FUN_VALIDATERGN 128 // +#define FUN_WAITMESSAGE 112 // +#define FUN_WINDOWFROMPOINT 30 // +#define FUN_WINFARFRAME 340 // Internal +#define FUN_WINHELP 171 // +#define FUN_WINOLDAPPHACKOMATIC 322 // Internal +#define FUN_WNETADDCONNECTION 517 // Internal +#define FUN_WNETBROWSEDIALOG 515 // Internal +#define FUN_WNETCANCELCONNECTION 518 // Internal +#define FUN_WNETCANCELJOB 506 // Internal +#define FUN_WNETCLOSEJOB 502 // Internal +#define FUN_WNETDEVICEMODE 514 // Internal +#define FUN_WNETGETCAPS 513 // Internal +#define FUN_WNETGETCONNECTION 512 // Internal +#define FUN_WNETGETERROR 519 // Internal +#define FUN_WNETGETERRORTEXT 520 // Internal +#define FUN_WNETGETUSER 516 // Internal +#define FUN_WNETHOLDJOB 504 // Internal +#define FUN_WNETLOCKQUEUEDATA 510 // Internal +#define FUN_WNETOPENJOB 501 // Internal +#define FUN_WNETRELEASEJOB 505 // Internal +#define FUN_WNETSETJOBCOPIES 507 // Internal +#define FUN_WNETUNLOCKQUEUEDATA 511 // Internal +#define FUN_WNETUNWATCHQUEUE 509 // Internal +#define FUN_WNETWATCHQUEUE 508 // Internal +#define FUN_WRITECOMM 205 // +#define FUN_WVSPRINTF 421 // +#define FUN_XCSTODS 315 // Internal +#define FUN__FFFE_FARFRAME 341 // No proto +#define FUN__WSPRINTF 420 // +#define FUN_SETWINDOWSHOOKEX 291 // win31 api +#define FUN_UNHOOKWINDOWSHOOKEX 292 // win31 api +#define FUN_CALLNEXTHOOKEX 293 // win31 api +#define FUN_CLOSEDRIVER 253 +#define FUN_COPYCURSOR 369 +#define FUN_COPYICON 368 +#define FUN_DEFDRIVERPROC 255 +#define FUN_ENABLESCROLLBAR 482 +#define FUN_GETCLIPCURSOR 309 +#define FUN_GETCURSOR 247 +#define FUN_GETDCEX 359 +#define FUN_GETDRIVERMODULEHANDLE 254 +#define FUN_GETDRIVERINFO 256 +#define FUN_GETFREESYSTEMRESOURCES 284 +#define FUN_GETMESSAGEEXTRAINFO 288 +#define FUN_GETNEXTDRIVER 257 +#define FUN_GETOPENCLIPBOARDWINDOW 248 +#define FUN_GETQUEUESTATUS 334 +#define FUN_GETSYSTEMDEBUGSTATE 231 +#define FUN_GETTIMERRESOLUTION 14 +#define FUN_GETWINDOWPLACEMENT 370 +#define FUN_ISMENU 358 +#define FUN_LOCKINPUT 226 +#define FUN_LOCKWINDOWUPDATE 294 +#define FUN_MAPWINDOWPOINTS 258 +#define FUN_OPENDRIVER 252 +#define FUN_QUERYSENDMESSAGE 184 +#define FUN_REDRAWWINDOW 290 +#define FUN_SCROLLWINDOWEX 319 +#define FUN_SENDDRIVERMESSAGE 251 +#define FUN_SETWINDOWPLACEMENT 371 +#define FUN_SUBTRACTRECT 373 +#define FUN_SYSTEMPARAMETERSINFO 483 + +#define FUN_TILECHILDWzINDOWS 199 +#define FUN_USERSEEUSERDO 216 +#define FUN_ENABLECOMMNOTIFICATION 245 +#define FUN_EXITWINDOWSEXEC 246 +#define FUN_OLDSETDESKPATTERN 279 +#define FUN_OLDSETDESKWALLPAPER 285 +#define FUN_KEYBD_EVENT 289 +#define FUN_MOUSE_EVENT 299 +#define FUN_BOZOSLIVEHERE 301 +#define FUN_MENUWINDOWPROC 306 +#define FUN_GETINTERNALICONHEADER 372 +#define FUN_DLGDIRSELECTEX 422 +#define FUN_DLGDIRSELECTCOMBOBOXEX 423 +#define FUN_GETUSERLOCALOBJTYPE 480 +#define FUN_HARDWARE_EVENT 481 +#define FUN_DCHOOK 362 +#define FUN_WNETERRORTEXT 499 +#define FUN_WNETABORTJOB 503 +#define FUN_WNETENABLE 521 +#define FUN_WNETDISABLE 522 +#define FUN_WNETRESTORECONNECTION 523 +#define FUN_WNETWRITEJOB 524 +#define FUN_WNETCONNECTDIALOG 525 +#define FUN_WNETDISCONNECTDIALOG 526 +#define FUN_WNETCONNECTIONDIALOG 527 +#define FUN_WNETVIEWQUEUEDIALOG 528 +#define FUN_WNETPROPERTYDIALOG 529 +#define FUN_WNETGETDIRECTORYTYPE 530 +#define FUN_WNETDIRECTORYNOTIFY 531 +#define FUN_WNETGETPROPERTYTEXT 532 +#define FUN_NOTIFYWOW 533 +#define FUN_WOWGETIDFROMDIRECTORY 534 +#define FUN_WOWWORDBREAKPROC 535 +#define FUN_MOUSEEVENT 537 +#define FUN_KEYBDEVENT 538 + +/* XLATOFF */ +#pragma pack(2) +/* XLATON */ + +typedef struct _ADJUSTWINDOWRECT16 { /* u102 */ + BOOL16 f3; + LONG f2; + VPRECT16 f1; +} ADJUSTWINDOWRECT16; +typedef ADJUSTWINDOWRECT16 UNALIGNED *PADJUSTWINDOWRECT16; + +typedef struct _ADJUSTWINDOWRECTEX16 { /* u454 */ + DWORD f4; + BOOL16 f3; + LONG f2; + VPRECT16 f1; +} ADJUSTWINDOWRECTEX16; +typedef ADJUSTWINDOWRECTEX16 UNALIGNED *PADJUSTWINDOWRECTEX16; + +typedef struct _ANSILOWER16 { /* u432 */ + VPSTR f1; +} ANSILOWER16; +typedef ANSILOWER16 UNALIGNED *PANSILOWER16; + +typedef struct _ANSILOWERBUFF16 { /* u438 */ + WORD f2; + VPSTR f1; +} ANSILOWERBUFF16; +typedef ANSILOWERBUFF16 UNALIGNED *PANSILOWERBUFF16; + +typedef struct _ANSINEXT16 { /* u472 */ + VPSTR f1; +} ANSINEXT16; +typedef ANSINEXT16 UNALIGNED *PANSINEXT16; + +typedef struct _ANSIPREV16 { /* u473 */ + VPSTR f2; + VPSTR f1; +} ANSIPREV16; +typedef ANSIPREV16 UNALIGNED *PANSIPREV16; + +typedef struct _ANSIUPPER16 { /* u431 */ + VPSTR f1; +} ANSIUPPER16; +typedef ANSIUPPER16 UNALIGNED *PANSIUPPER16; + +typedef struct _ANSIUPPERBUFF16 { /* u437 */ + WORD f2; + VPSTR f1; +} ANSIUPPERBUFF16; +typedef ANSIUPPERBUFF16 UNALIGNED *PANSIUPPERBUFF16; + +#ifdef NULLSTRUCT +typedef struct _ANYPOPUP16 { /* u52 */ +} ANYPOPUP16; +typedef ANYPOPUP16 UNALIGNED *PANYPOPUP16; +#endif + +typedef struct _APPENDMENU16 { /* u411 */ + VPSTR f4; + WORD f3; + WORD f2; + HMENU16 f1; +} APPENDMENU16; +typedef APPENDMENU16 UNALIGNED *PAPPENDMENU16; + +typedef struct _ARRANGEICONICWINDOWS16 { /* u170 */ + HWND16 hwnd; +} ARRANGEICONICWINDOWS16; +typedef ARRANGEICONICWINDOWS16 UNALIGNED *PARRANGEICONICWINDOWS16; + +typedef struct _BEGINDEFERWINDOWPOS16 { /* u259 */ + SHORT f1; +} BEGINDEFERWINDOWPOS16; +typedef BEGINDEFERWINDOWPOS16 UNALIGNED *PBEGINDEFERWINDOWPOS16; + +typedef struct _BEGINPAINT16 { /* u39 */ + VPPAINTSTRUCT16 vpPaint; + HWND16 hwnd; +} BEGINPAINT16; +typedef BEGINPAINT16 UNALIGNED *PBEGINPAINT16; + +typedef struct _BRINGWINDOWTOTOP16 { /* u45 */ + HWND16 f1; +} BRINGWINDOWTOTOP16; +typedef BRINGWINDOWTOTOP16 UNALIGNED *PBRINGWINDOWTOTOP16; + +typedef struct _BROADCASTMESSAGE16 { /* u355 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} BROADCASTMESSAGE16; +typedef BROADCASTMESSAGE16 UNALIGNED *PBROADCASTMESSAGE16; + +typedef struct _BUILDCOMMDCB16 { /* u213 */ + VPDCB16 f2; + VPSTR f1; +} BUILDCOMMDCB16; +typedef BUILDCOMMDCB16 UNALIGNED *PBUILDCOMMDCB16; + +typedef struct _CALCCHILDSCROLL16 { /* u462 */ + WORD f2; + HWND16 f1; +} CALCCHILDSCROLL16; +typedef CALCCHILDSCROLL16 UNALIGNED *PCALCCHILDSCROLL16; + +typedef struct _CALLMSGFILTER16 { /* u123 */ + SHORT f2; + VPMSG16 f1; +} CALLMSGFILTER16; +typedef CALLMSGFILTER16 UNALIGNED *PCALLMSGFILTER16; + +typedef struct _CALLWINDOWPROC16 { /* u122 */ + LONG f5; + WORD f4; + WORD f3; + HWND16 f2; + VPPROC f1; +} CALLWINDOWPROC16; +typedef CALLWINDOWPROC16 UNALIGNED *PCALLWINDOWPROC16; + +typedef struct _CARETBLINKPROC16 { /* u311 */ + DWORD f4; + WORD f3; + WORD f2; + HWND16 f1; +} CARETBLINKPROC16; +typedef CARETBLINKPROC16 UNALIGNED *PCARETBLINKPROC16; + +typedef struct _CASCADECHILDWINDOWS16 { /* u198 */ + WORD f2; + HWND16 f1; +} CASCADECHILDWINDOWS16; +typedef CASCADECHILDWINDOWS16 UNALIGNED *PCASCADECHILDWINDOWS16; + +typedef struct _CHANGECLIPBOARDCHAIN16 { /* u149 */ + HWND16 f2; + HWND16 f1; +} CHANGECLIPBOARDCHAIN16; +typedef CHANGECLIPBOARDCHAIN16 UNALIGNED *PCHANGECLIPBOARDCHAIN16; + +typedef struct _CHANGEMENU16 { /* u153 */ + WORD f5; + WORD f4; + VPSTR f3; + WORD f2; + HMENU16 f1; +} CHANGEMENU16; +typedef CHANGEMENU16 UNALIGNED *PCHANGEMENU16; + +typedef struct _CHECKDLGBUTTON16 { /* u97 */ + WORD f3; + SHORT f2; + HWND16 f1; +} CHECKDLGBUTTON16; +typedef CHECKDLGBUTTON16 UNALIGNED *PCHECKDLGBUTTON16; + +typedef struct _CHECKMENUITEM16 { /* u154 */ + WORD f3; + WORD f2; + HMENU16 f1; +} CHECKMENUITEM16; +typedef CHECKMENUITEM16 UNALIGNED *PCHECKMENUITEM16; + +typedef struct _CHECKRADIOBUTTON16 { /* u96 */ + SHORT f4; + SHORT f3; + SHORT f2; + HWND16 f1; +} CHECKRADIOBUTTON16; +typedef CHECKRADIOBUTTON16 UNALIGNED *PCHECKRADIOBUTTON16; + +typedef struct _CHILDWINDOWFROMPOINT16 { /* u191 */ + POINT16 f2; + HWND16 f1; +} CHILDWINDOWFROMPOINT16; +typedef CHILDWINDOWFROMPOINT16 UNALIGNED *PCHILDWINDOWFROMPOINT16; + +typedef struct _CLEARCOMMBREAK16 { /* u211 */ + SHORT f1; +} CLEARCOMMBREAK16; +typedef CLEARCOMMBREAK16 UNALIGNED *PCLEARCOMMBREAK16; + +typedef struct _CLIENTTOSCREEN16 { /* u28 */ + VPPOINT16 f2; + HWND16 f1; +} CLIENTTOSCREEN16; +typedef CLIENTTOSCREEN16 UNALIGNED *PCLIENTTOSCREEN16; + +typedef struct _CLIPCURSOR16 { /* u16 */ + VPRECT16 f1; +} CLIPCURSOR16; +typedef CLIPCURSOR16 UNALIGNED *PCLIPCURSOR16; + +#ifdef NULLSTRUCT +typedef struct _CLOSECLIPBOARD16 { /* u138 */ +} CLOSECLIPBOARD16; +typedef CLOSECLIPBOARD16 UNALIGNED *PCLOSECLIPBOARD16; +#endif + +typedef struct _CLOSECOMM16 { /* u207 */ + VPDWORD f2; /* added for SetCommEventMask() support */ + SHORT f1; +} CLOSECOMM16; +typedef CLOSECOMM16 UNALIGNED *PCLOSECOMM16; + +typedef struct _CLOSEWINDOW16 { /* u43 */ + HWND16 f1; +} CLOSEWINDOW16; +typedef CLOSEWINDOW16 UNALIGNED *PCLOSEWINDOW16; + +typedef struct _COMPUPDATERECT16 { /* u316 */ + WORD f4; + BOOL16 f3; + VPRECT16 f2; + HWND16 f1; +} COMPUPDATERECT16; +typedef COMPUPDATERECT16 UNALIGNED *PCOMPUPDATERECT16; + +typedef struct _COMPUPDATERGN16 { /* u317 */ + WORD f4; + BOOL16 f3; + HRGN16 f2; + HWND16 f1; +} COMPUPDATERGN16; +typedef COMPUPDATERGN16 UNALIGNED *PCOMPUPDATERGN16; + +typedef struct _CONTROLPANELINFO16 { /* u273 */ + VPVOID f3; + WORD f2; + WORD f1; +} CONTROLPANELINFO16; +typedef CONTROLPANELINFO16 UNALIGNED *PCONTROLPANELINFO16; + +typedef struct _CONTSCROLL16 { /* u310 */ + DWORD f4; + WORD f3; + WORD f2; + HWND16 f1; +} CONTSCROLL16; +typedef CONTSCROLL16 UNALIGNED *PCONTSCROLL16; + +typedef struct _COPYRECT16 { /* u74 */ + VPRECT16 f2; + VPRECT16 f1; +} COPYRECT16; +typedef COPYRECT16 UNALIGNED *PCOPYRECT16; + +#ifdef NULLSTRUCT +typedef struct _COUNTCLIPBOARDFORMATS16 { /* u143 */ +} COUNTCLIPBOARDFORMATS16; +typedef COUNTCLIPBOARDFORMATS16 UNALIGNED *PCOUNTCLIPBOARDFORMATS16; +#endif + +typedef struct _CREATECARET16 { /* u163 */ + SHORT f4; + SHORT f3; + HBM16 f2; + HWND16 f1; +} CREATECARET16; +typedef CREATECARET16 UNALIGNED *PCREATECARET16; + +typedef struct _CREATECURSOR16 { /* u406 */ + VPSTR f7; + VPSTR f6; + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HAND16 f1; +} CREATECURSOR16; +typedef CREATECURSOR16 UNALIGNED *PCREATECURSOR16; + +typedef struct _CREATECURSORICONINDIRECT16 { /* u408 */ + VPSTR f4; + VPSTR f3; + VPSTR f2; + HAND16 f1; +} CREATECURSORICONINDIRECT16; +typedef CREATECURSORICONINDIRECT16 UNALIGNED *PCREATECURSORICONINDIRECT16; + +typedef struct _CREATEDIALOG16 { /* u89 */ + VPPROC f4; + HWND16 f3; + VPSTR f2; + HAND16 f1; +} CREATEDIALOG16; +typedef CREATEDIALOG16 UNALIGNED *PCREATEDIALOG16; + +typedef struct _CREATEDIALOGINDIRECT16 { /* u219 */ + VPPROC f4; + HWND16 f3; + VPSTR f2; + HAND16 f1; +} CREATEDIALOGINDIRECT16; +typedef CREATEDIALOGINDIRECT16 UNALIGNED *PCREATEDIALOGINDIRECT16; + +typedef struct _CREATEDIALOGINDIRECTPARAM16 { /* u242 */ + LONG f5; + VPPROC f4; + HWND16 f3; + VPSTR f2; + HAND16 f1; +} CREATEDIALOGINDIRECTPARAM16; +typedef CREATEDIALOGINDIRECTPARAM16 UNALIGNED *PCREATEDIALOGINDIRECTPARAM16; + +typedef struct _CREATEDIALOGPARAM16 { /* u241 */ + DWORD f6; + LONG f5; + VPPROC f4; + HWND16 f3; + VPSTR f2; + HAND16 f1; +} CREATEDIALOGPARAM16; +typedef CREATEDIALOGPARAM16 UNALIGNED *PCREATEDIALOGPARAM16; + +typedef struct _CREATEICON16 { /* u407 */ + VPSTR f7; + VPSTR f6; + WORD f5; + WORD f4; + SHORT f3; + SHORT f2; + HAND16 f1; +} CREATEICON16; +typedef CREATEICON16 UNALIGNED *PCREATEICON16; + +#ifdef NULLSTRUCT +typedef struct _CREATEMENU16 { /* u151 */ +} CREATEMENU16; +typedef CREATEMENU16 UNALIGNED *PCREATEMENU16; +#endif + +#ifdef NULLSTRUCT +typedef struct _CREATEPOPUPMENU16 { /* u415 */ +} CREATEPOPUPMENU16; +typedef CREATEPOPUPMENU16 UNALIGNED *PCREATEPOPUPMENU16; +#endif + +typedef struct _CREATEWINDOW16 { /* u41 */ + VPBYTE vpParam; + HAND16 hInstance; + HMENU16 hMenu; + HWND16 hwndParent; + SHORT cy; + SHORT cx; + SHORT y; + SHORT x; + DWORD dwStyle; + VPSTR vpszWindow; + VPSTR vpszClass; +} CREATEWINDOW16; +typedef CREATEWINDOW16 UNALIGNED *PCREATEWINDOW16; + +typedef struct _CREATEWINDOWEX16 { /* u452 */ + VPSTR f12; + HAND16 f11; + HMENU16 f10; + HWND16 f9; + SHORT f8; + SHORT f7; + SHORT f6; + SHORT f5; + DWORD f4; + VPSTR f3; + VPSTR f2; + DWORD f1; +} CREATEWINDOWEX16; +typedef CREATEWINDOWEX16 UNALIGNED *PCREATEWINDOWEX16; + +typedef struct _DCHOOK16 { /* u362 */ + DWORD f4; + DWORD f3; + WORD f2; + HDC16 f1; +} DCHOOK16; +typedef DCHOOK16 UNALIGNED *PDCHOOK16; + +typedef struct _DEFDLGPROC16 { /* u308 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} DEFDLGPROC16; +typedef DEFDLGPROC16 UNALIGNED *PDEFDLGPROC16; + +typedef struct _DEFERWINDOWPOS16 { /* u260 */ + WORD f8; + SHORT f7; + SHORT f6; + SHORT f5; + SHORT f4; + HWND16 f3; + HWND16 f2; + HAND16 f1; +} DEFERWINDOWPOS16; +typedef DEFERWINDOWPOS16 UNALIGNED *PDEFERWINDOWPOS16; + +typedef struct _DEFFRAMEPROC16 { /* u445 */ + LONG f5; + WORD f4; + WORD f3; + HWND16 f2; + HWND16 f1; +} DEFFRAMEPROC16; +typedef DEFFRAMEPROC16 UNALIGNED *PDEFFRAMEPROC16; + +typedef struct _DEFHOOKPROC16 { /* u235 */ + VPPROC f4; + DWORD f3; + WORD f2; + SHORT f1; +} DEFHOOKPROC16; +typedef DEFHOOKPROC16 UNALIGNED *PDEFHOOKPROC16; + +typedef struct _DEFMDICHILDPROC16 { /* u447 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} DEFMDICHILDPROC16; +typedef DEFMDICHILDPROC16 UNALIGNED *PDEFMDICHILDPROC16; + +typedef struct _DEFWINDOWPROC16 { /* u107 */ + LONG lParam; + WORD wParam; + WORD wMsg; + HWND16 hwnd; +} DEFWINDOWPROC16; +typedef DEFWINDOWPROC16 UNALIGNED *PDEFWINDOWPROC16; + +typedef struct _DELETEMENU16 { /* u413 */ + WORD f3; + WORD f2; + HMENU16 f1; +} DELETEMENU16; +typedef DELETEMENU16 UNALIGNED *PDELETEMENU16; + +typedef struct _DESKTOPWNDPROC16 { /* u305 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} DESKTOPWNDPROC16; +typedef DESKTOPWNDPROC16 UNALIGNED *PDESKTOPWNDPROC16; + +#ifdef NULLSTRUCT +typedef struct _DESTROYCARET16 { /* u164 */ +} DESTROYCARET16; +typedef DESTROYCARET16 UNALIGNED *PDESTROYCARET16; +#endif + +typedef struct _DESTROYCURSOR16 { /* u458 */ + HCUR16 f1; +} DESTROYCURSOR16; +typedef DESTROYCURSOR16 UNALIGNED *PDESTROYCURSOR16; + +typedef struct _DESTROYICON16 { /* u457 */ + HICON16 f1; +} DESTROYICON16; +typedef DESTROYICON16 UNALIGNED *PDESTROYICON16; + +typedef struct _DESTROYMENU16 { /* u152 */ + HMENU16 f1; +} DESTROYMENU16; +typedef DESTROYMENU16 UNALIGNED *PDESTROYMENU16; + +typedef struct _DESTROYWINDOW16 { /* u53 */ + HWND16 f1; +} DESTROYWINDOW16; +typedef DESTROYWINDOW16 UNALIGNED *PDESTROYWINDOW16; + +typedef struct _DIALOGBOX16 { /* u87 */ + VPPROC f4; + HWND16 f3; + VPSTR f2; + HAND16 f1; +} DIALOGBOX16; +typedef DIALOGBOX16 UNALIGNED *PDIALOGBOX16; + +typedef struct _DIALOGBOXINDIRECT16 { /* u218 */ + VPPROC f4; + HWND16 f3; + HAND16 f2; + HAND16 f1; +} DIALOGBOXINDIRECT16; +typedef DIALOGBOXINDIRECT16 UNALIGNED *PDIALOGBOXINDIRECT16; + +typedef struct _DIALOGBOXINDIRECTPARAM16 { /* u240 */ + LONG f5; + VPPROC f4; + HWND16 f3; + HAND16 f2; + HAND16 f1; +} DIALOGBOXINDIRECTPARAM16; +typedef DIALOGBOXINDIRECTPARAM16 UNALIGNED *PDIALOGBOXINDIRECTPARAM16; + +typedef struct _DIALOGBOXPARAM16 { /* u239 */ + WORD f7; + DWORD f6; + LONG f5; + VPPROC f4; + HWND16 f3; + VPSTR f2; + HAND16 f1; +} DIALOGBOXPARAM16; +typedef DIALOGBOXPARAM16 UNALIGNED *PDIALOGBOXPARAM16; + +#ifdef NULLSTRUCT +typedef struct _DISABLEOEMLAYER16 { /* u4 */ +} DISABLEOEMLAYER16; +typedef DISABLEOEMLAYER16 UNALIGNED *PDISABLEOEMLAYER16; +#endif + +typedef struct _DISPATCHMESSAGE16 { /* u114 */ + VPMSG16 f1; +} DISPATCHMESSAGE16; +typedef DISPATCHMESSAGE16 UNALIGNED *PDISPATCHMESSAGE16; + +typedef struct _DLGDIRLIST16 { /* u100 */ + WORD f5; + SHORT f4; + SHORT f3; + VPSTR f2; + HWND16 f1; +} DLGDIRLIST16; +typedef DLGDIRLIST16 UNALIGNED *PDLGDIRLIST16; + +typedef struct _DLGDIRLISTCOMBOBOX16 { /* u195 */ + WORD f5; + SHORT f4; + SHORT f3; + VPSTR f2; + HWND16 f1; +} DLGDIRLISTCOMBOBOX16; +typedef DLGDIRLISTCOMBOBOX16 UNALIGNED *PDLGDIRLISTCOMBOBOX16; + +typedef struct _DLGDIRSELECT16 { /* u99 */ + SHORT f3; + VPSTR f2; + HWND16 f1; +} DLGDIRSELECT16; +typedef DLGDIRSELECT16 UNALIGNED *PDLGDIRSELECT16; + +typedef struct _DLGDIRSELECTCOMBOBOX16 { /* u194 */ + SHORT f3; + VPSTR f2; + HWND16 f1; +} DLGDIRSELECTCOMBOBOX16; +typedef DLGDIRSELECTCOMBOBOX16 UNALIGNED *PDLGDIRSELECTCOMBOBOX16; + +typedef struct _DLGDIRSELECTEX16 { /* u422 */ + SHORT f4; + SHORT f3; + VPSTR f2; + HWND16 f1; +} DLGDIRSELECTEX16; +typedef DLGDIRSELECTEX16 UNALIGNED *PDLGDIRSELECTEX16; + +typedef struct _DLGDIRSELECTCOMBOBOXEX16 { /* u423 */ + SHORT f4; + SHORT f3; + VPSTR f2; + HWND16 f1; +} DLGDIRSELECTCOMBOBOXEX16; +typedef DLGDIRSELECTCOMBOBOXEX16 UNALIGNED *PDLGDIRSELECTCOMBOBOXEX16; + +typedef struct _DRAGDETECT16 { /* u465 */ + POINT16 pt; + HWND16 hwnd; +} DRAGDETECT16; +typedef DRAGDETECT16 UNALIGNED *PDRAGDETECT16; + +typedef struct _DRAGOBJECT16 { /* u464 */ + HAND16 f5; + LONG f4; + WORD f3; + HWND16 f2; + HWND16 f1; +} DRAGOBJECT16; +typedef DRAGOBJECT16 UNALIGNED *PDRAGOBJECT16; + +typedef struct _DRAWFOCUSRECT16 { /* u466 */ + VPRECT16 f2; + HDC16 f1; +} DRAWFOCUSRECT16; +typedef DRAWFOCUSRECT16 UNALIGNED *PDRAWFOCUSRECT16; + +typedef struct _DRAWICON16 { /* u84 */ + HICON16 f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} DRAWICON16; +typedef DRAWICON16 UNALIGNED *PDRAWICON16; + +typedef struct _DRAWMENUBAR16 { /* u160 */ + HWND16 f1; +} DRAWMENUBAR16; +typedef DRAWMENUBAR16 UNALIGNED *PDRAWMENUBAR16; + +typedef struct _DRAWTEXT16 { /* u85 */ + WORD wFormat; + VPRECT16 vpRect; + SHORT nCount; + VPSTR vpString; + HDC16 hdc; +} DRAWTEXT16; +typedef DRAWTEXT16 UNALIGNED *PDRAWTEXT16; + +typedef struct _DUMPICON16 { /* u459 */ + VPSTR f4; + VPSTR f3; + VPWORD f2; + VPSTR f1; +} DUMPICON16; +typedef DUMPICON16 UNALIGNED *PDUMPICON16; + +#ifdef NULLSTRUCT +typedef struct _EMPTYCLIPBOARD16 { /* u139 */ +} EMPTYCLIPBOARD16; +typedef EMPTYCLIPBOARD16 UNALIGNED *PEMPTYCLIPBOARD16; +#endif + +typedef struct _ENABLECOMMNOTIFICATION16 { /* u245 */ + SHORT f4; + SHORT f3; + HWND16 f2; + SHORT f1; +} ENABLECOMMNOTIFICATION16; +typedef ENABLECOMMNOTIFICATION16 UNALIGNED *PENABLECOMMNOTIFICATION16; + + +typedef struct _ENABLEHARDWAREINPUT16 { /* u331 */ + BOOL16 f1; +} ENABLEHARDWAREINPUT16; +typedef ENABLEHARDWAREINPUT16 UNALIGNED *PENABLEHARDWAREINPUT16; + +typedef struct _ENABLEMENUITEM16 { /* u155 */ + WORD f3; + WORD f2; + HMENU16 f1; +} ENABLEMENUITEM16; +typedef ENABLEMENUITEM16 UNALIGNED *PENABLEMENUITEM16; + +#ifdef NULLSTRUCT +typedef struct _ENABLEOEMLAYER16 { /* u3 */ +} ENABLEOEMLAYER16; +typedef ENABLEOEMLAYER16 UNALIGNED *PENABLEOEMLAYER16; +#endif + +typedef struct _ENABLEWINDOW16 { /* u34 */ + BOOL16 f2; + HWND16 f1; +} ENABLEWINDOW16; +typedef ENABLEWINDOW16 UNALIGNED *PENABLEWINDOW16; + +typedef struct _ENDDEFERWINDOWPOS16 { /* u261 */ + HAND16 f1; +} ENDDEFERWINDOWPOS16; +typedef ENDDEFERWINDOWPOS16 UNALIGNED *PENDDEFERWINDOWPOS16; + +typedef struct _ENDDIALOG16 { /* u88 */ + SHORT f2; + HWND16 f1; +} ENDDIALOG16; +typedef ENDDIALOG16 UNALIGNED *PENDDIALOG16; + +#ifdef NULLSTRUCT +typedef struct _ENDMENU16 { /* u187 */ +} ENDMENU16; +typedef ENDMENU16 UNALIGNED *PENDMENU16; +#endif + +typedef struct _ENDPAINT16 { /* u40 */ + VPPAINTSTRUCT16 vpPaint; + HWND16 hwnd; +} ENDPAINT16; +typedef ENDPAINT16 UNALIGNED *PENDPAINT16; + +typedef struct _ENUMCHILDWINDOWS16 { /* u55 */ + LONG f3; + VPPROC f2; + HWND16 f1; +} ENUMCHILDWINDOWS16; +typedef ENUMCHILDWINDOWS16 UNALIGNED *PENUMCHILDWINDOWS16; + +typedef struct _ENUMCLIPBOARDFORMATS16 { /* u144 */ + WORD f1; +} ENUMCLIPBOARDFORMATS16; +typedef ENUMCLIPBOARDFORMATS16 UNALIGNED *PENUMCLIPBOARDFORMATS16; + +typedef struct _ENUMPROPS16 { /* u27 */ + VPPROC f2; + HWND16 f1; +} ENUMPROPS16; +typedef ENUMPROPS16 UNALIGNED *PENUMPROPS16; + +typedef struct _ENUMTASKWINDOWS16 { /* u225 */ + LONG f3; + VPPROC f2; + HAND16 f1; +} ENUMTASKWINDOWS16; +typedef ENUMTASKWINDOWS16 UNALIGNED *PENUMTASKWINDOWS16; + +typedef struct _ENUMWINDOWS16 { /* u54 */ + LONG f2; + VPPROC f1; +} ENUMWINDOWS16; +typedef ENUMWINDOWS16 UNALIGNED *PENUMWINDOWS16; + +typedef struct _EQUALRECT16 { /* u244 */ + VPRECT16 f2; + VPRECT16 f1; +} EQUALRECT16; +typedef EQUALRECT16 UNALIGNED *PEQUALRECT16; + +typedef struct _ESCAPECOMMFUNCTION16 { /* u214 */ + SHORT f2; + SHORT f1; +} ESCAPECOMMFUNCTION16; +typedef ESCAPECOMMFUNCTION16 UNALIGNED *PESCAPECOMMFUNCTION16; + +typedef struct _EXCLUDEUPDATERGN16 { /* u238 */ + HWND16 f2; + HDC16 f1; +} EXCLUDEUPDATERGN16; +typedef EXCLUDEUPDATERGN16 UNALIGNED *PEXCLUDEUPDATERGN16; + +typedef struct _EXITWINDOWS16 { /* u7 */ + WORD wReturnCode; + DWORD dwReserved; +} EXITWINDOWS16; +typedef EXITWINDOWS16 UNALIGNED *PEXITWINDOWS16; + +typedef struct _EXITWINDOWSEXEC16 { /* u246 */ + VPSTR vpCmdLine; + VPSTR vpProgName; +} EXITWINDOWSEXEC16; +typedef EXITWINDOWSEXEC16 UNALIGNED *PEXITWINDOWSEXEC16; + +#ifdef NULLSTRUCT +typedef struct _FARCALLNETDRIVER16 { /* u500 */ +} FARCALLNETDRIVER16; +typedef FARCALLNETDRIVER16 UNALIGNED *PFARCALLNETDRIVER16; +#endif + +typedef struct _FILEPORTDLGPROC16 { /* u346 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} FILEPORTDLGPROC16; +typedef FILEPORTDLGPROC16 UNALIGNED *PFILEPORTDLGPROC16; + +typedef struct _FILLRECT16 { /* u81 */ + HBRSH16 f3; + VPRECT16 f2; + HDC16 f1; +} FILLRECT16; +typedef FILLRECT16 UNALIGNED *PFILLRECT16; + +#ifdef NULLSTRUCT +typedef struct _FINALUSERINIT16 { /* u400 */ +} FINALUSERINIT16; +typedef FINALUSERINIT16 UNALIGNED *PFINALUSERINIT16; +#endif + +typedef struct _FINDWINDOW16 { /* u50 */ + VPSTR f2; + VPSTR f1; +} FINDWINDOW16; +typedef FINDWINDOW16 UNALIGNED *PFINDWINDOW16; + +typedef struct _FLASHWINDOW16 { /* u105 */ + BOOL16 f2; + HWND16 f1; +} FLASHWINDOW16; +typedef FLASHWINDOW16 UNALIGNED *PFLASHWINDOW16; + +typedef struct _FLUSHCOMM16 { /* u215 */ + SHORT f2; + SHORT f1; +} FLUSHCOMM16; +typedef FLUSHCOMM16 UNALIGNED *PFLUSHCOMM16; + +typedef struct _FRAMERECT16 { /* u83 */ + HBRSH16 f3; + VPRECT16 f2; + HDC16 f1; +} FRAMERECT16; +typedef FRAMERECT16 UNALIGNED *PFRAMERECT16; + +#ifdef NULLSTRUCT +typedef struct _GETACTIVEWINDOW16 { /* u60 */ +} GETACTIVEWINDOW16; +typedef GETACTIVEWINDOW16 UNALIGNED *PGETACTIVEWINDOW16; +#endif + +typedef struct _GETASYNCKEYSTATE16 { /* u249 */ + SHORT f1; +} GETASYNCKEYSTATE16; +typedef GETASYNCKEYSTATE16 UNALIGNED *PGETASYNCKEYSTATE16; + +#ifdef NULLSTRUCT +typedef struct _GETCAPTURE16 { /* u236 */ +} GETCAPTURE16; +typedef GETCAPTURE16 UNALIGNED *PGETCAPTURE16; +#endif + +#ifdef NULLSTRUCT +typedef struct _GETCARETBLINKTIME16 { /* u169 */ +} GETCARETBLINKTIME16; +typedef GETCARETBLINKTIME16 UNALIGNED *PGETCARETBLINKTIME16; +#endif + +typedef struct _GETCARETPOS16 { /* u183 */ + VPPOINT16 f1; +} GETCARETPOS16; +typedef GETCARETPOS16 UNALIGNED *PGETCARETPOS16; + +typedef struct _GETCLASSINFO16 { /* u404 */ + VPWNDCLASS16 f3; + VPSTR f2; + HAND16 f1; +} GETCLASSINFO16; +typedef GETCLASSINFO16 UNALIGNED *PGETCLASSINFO16; + +typedef struct _GETCLASSLONG16 { /* u131 */ + SHORT f2; + HWND16 f1; +} GETCLASSLONG16; +typedef GETCLASSLONG16 UNALIGNED *PGETCLASSLONG16; + +typedef struct _GETCLASSNAME16 { /* u58 */ + SHORT f3; + VPSTR f2; + HWND16 f1; +} GETCLASSNAME16; +typedef GETCLASSNAME16 UNALIGNED *PGETCLASSNAME16; + +typedef struct _GETCLASSWORD16 { /* u129 */ + SHORT f2; + HWND16 f1; +} GETCLASSWORD16; +typedef GETCLASSWORD16 UNALIGNED *PGETCLASSWORD16; + +typedef struct _GETCLIENTRECT16 { /* u33 */ + VPRECT16 vpRect; + HWND16 hwnd; +} GETCLIENTRECT16; +typedef GETCLIENTRECT16 UNALIGNED *PGETCLIENTRECT16; + +typedef struct _GETCLIPBOARDDATA16 { /* u142 */ + WORD f1; +} GETCLIPBOARDDATA16; +typedef GETCLIPBOARDDATA16 UNALIGNED *PGETCLIPBOARDDATA16; + +typedef struct _GETCLIPBOARDFORMATNAME16 { /* u146 */ + SHORT f3; + VPSTR f2; + WORD f1; +} GETCLIPBOARDFORMATNAME16; +typedef GETCLIPBOARDFORMATNAME16 UNALIGNED *PGETCLIPBOARDFORMATNAME16; + +#ifdef NULLSTRUCT +typedef struct _GETCLIPBOARDOWNER16 { /* u140 */ +} GETCLIPBOARDOWNER16; +typedef GETCLIPBOARDOWNER16 UNALIGNED *PGETCLIPBOARDOWNER16; +#endif + +#ifdef NULLSTRUCT +typedef struct _GETCLIPBOARDVIEWER16 { /* u148 */ +} GETCLIPBOARDVIEWER16; +typedef GETCLIPBOARDVIEWER16 UNALIGNED *PGETCLIPBOARDVIEWER16; +#endif + +typedef struct _GETCOMMERROR16 { /* u203 */ + VPCOMSTAT16 f2; + SHORT f1; +} GETCOMMERROR16; +typedef GETCOMMERROR16 UNALIGNED *PGETCOMMERROR16; + +typedef struct _GETCOMMEVENTMASK16 { /* u209 */ + SHORT f2; + SHORT f1; +} GETCOMMEVENTMASK16; +typedef GETCOMMEVENTMASK16 UNALIGNED *PGETCOMMEVENTMASK16; + +typedef struct _GETCOMMSTATE16 { /* u202 */ + VPDCB16 f2; + SHORT f1; +} GETCOMMSTATE16; +typedef GETCOMMSTATE16 UNALIGNED *PGETCOMMSTATE16; + +typedef struct _GETCONTROLBRUSH16 { /* u326 */ + WORD f3; + HDC16 f2; + HWND16 f1; +} GETCONTROLBRUSH16; +typedef GETCONTROLBRUSH16 UNALIGNED *PGETCONTROLBRUSH16; + +#ifdef NULLSTRUCT +typedef struct _GETCURRENTTIME16 { /* u15 */ +} GETCURRENTTIME16; +typedef GETCURRENTTIME16 UNALIGNED *PGETCURRENTTIME16; +#endif + +typedef struct _GETCURSORPOS16 { /* u17 */ + VPPOINT16 f1; +} GETCURSORPOS16; +typedef GETCURSORPOS16 UNALIGNED *PGETCURSORPOS16; + +typedef struct _GETDC16 { /* u66 */ + HWND16 f1; +} GETDC16; +typedef GETDC16 UNALIGNED *PGETDC16; + +#ifdef NULLSTRUCT +typedef struct _GETDESKTOPHWND16 { /* u278 */ +} GETDESKTOPHWND16; +typedef GETDESKTOPHWND16 UNALIGNED *PGETDESKTOPHWND16; +#endif + +#ifdef NULLSTRUCT +typedef struct _GETDESKTOPWINDOW16 { /* u286 */ +} GETDESKTOPWINDOW16; +typedef GETDESKTOPWINDOW16 UNALIGNED *PGETDESKTOPWINDOW16; +#endif + +#ifdef NULLSTRUCT +typedef struct _GETDIALOGBASEUNITS16 { /* u243 */ +} GETDIALOGBASEUNITS16; +typedef GETDIALOGBASEUNITS16 UNALIGNED *PGETDIALOGBASEUNITS16; +#endif + +typedef struct _GETDLGCTRLID16 { /* u277 */ + HWND16 f1; +} GETDLGCTRLID16; +typedef GETDLGCTRLID16 UNALIGNED *PGETDLGCTRLID16; + +typedef struct _GETDLGITEM16 { /* u91 */ + SHORT f2; + HWND16 f1; +} GETDLGITEM16; +typedef GETDLGITEM16 UNALIGNED *PGETDLGITEM16; + +typedef struct _GETDLGITEMINT16 { /* u95 */ + BOOL16 f4; + VPBOOL16 f3; + SHORT f2; + HWND16 f1; +} GETDLGITEMINT16; +typedef GETDLGITEMINT16 UNALIGNED *PGETDLGITEMINT16; + +typedef struct _GETDLGITEMTEXT16 { /* u93 */ + SHORT f4; + VPSTR f3; + SHORT f2; + HWND16 f1; +} GETDLGITEMTEXT16; +typedef GETDLGITEMTEXT16 UNALIGNED *PGETDLGITEMTEXT16; + +#ifdef NULLSTRUCT +typedef struct _GETDOUBLECLICKTIME16 { /* u21 */ +} GETDOUBLECLICKTIME16; +typedef GETDOUBLECLICKTIME16 UNALIGNED *PGETDOUBLECLICKTIME16; +#endif + +typedef struct _GETFILEPORTNAME16 { /* u343 */ + VPSTR f1; +} GETFILEPORTNAME16; +typedef GETFILEPORTNAME16 UNALIGNED *PGETFILEPORTNAME16; + +#ifdef NULLSTRUCT +typedef struct _GETFOCUS16 { /* u23 */ +} GETFOCUS16; +typedef GETFOCUS16 UNALIGNED *PGETFOCUS16; +#endif + +typedef struct _GETICONID16 { /* u455 */ + VPSTR f2; + HAND16 f1; +} GETICONID16; +typedef GETICONID16 UNALIGNED *PGETICONID16; + +#ifdef NULLSTRUCT +typedef struct _GETINPUTSTATE16 { /* u335 */ +} GETINPUTSTATE16; +typedef GETINPUTSTATE16 UNALIGNED *PGETINPUTSTATE16; +#endif + +typedef struct _GETINTERNALICONHEADER16 { /* u372 */ + VPSTR f2; + VPSTR f1; +} GETINTERNALICONHEADER16; +typedef GETINTERNALICONHEADER16 UNALIGNED *PGETINTERNALICONHEADER16; + +typedef struct _GETINTERNALWINDOWPOS16 { /* u460 */ + VPPOINT16 f3; + VPRECT16 f2; + HWND16 f1; +} GETINTERNALWINDOWPOS16; +typedef GETINTERNALWINDOWPOS16 UNALIGNED *PGETINTERNALWINDOWPOS16; + +typedef struct _GETKEYBOARDSTATE16 { /* u222 */ + VPBYTE f1; +} GETKEYBOARDSTATE16; +typedef GETKEYBOARDSTATE16 UNALIGNED *PGETKEYBOARDSTATE16; + +typedef struct _GETKEYSTATE16 { /* u106 */ + SHORT f1; +} GETKEYSTATE16; +typedef GETKEYSTATE16 UNALIGNED *PGETKEYSTATE16; + +typedef struct _GETLASTACTIVEPOPUP16 { /* u287 */ + HWND16 f1; +} GETLASTACTIVEPOPUP16; +typedef GETLASTACTIVEPOPUP16 UNALIGNED *PGETLASTACTIVEPOPUP16; + +typedef struct _GETMENU16 { /* u157 */ + HWND16 f1; +} GETMENU16; +typedef GETMENU16 UNALIGNED *PGETMENU16; + +#ifdef NULLSTRUCT +typedef struct _GETMENUCHECKMARKDIMENSIONS16 { /* u417 */ +} GETMENUCHECKMARKDIMENSIONS16; +typedef GETMENUCHECKMARKDIMENSIONS16 UNALIGNED *PGETMENUCHECKMARKDIMENSIONS16; +#endif + +typedef struct _GETMENUITEMCOUNT16 { /* u263 */ + HMENU16 f1; +} GETMENUITEMCOUNT16; +typedef GETMENUITEMCOUNT16 UNALIGNED *PGETMENUITEMCOUNT16; + +typedef struct _GETMENUITEMID16 { /* u264 */ + SHORT f2; + HMENU16 f1; +} GETMENUITEMID16; +typedef GETMENUITEMID16 UNALIGNED *PGETMENUITEMID16; + +typedef struct _GETMENUSTATE16 { /* u250 */ + WORD f3; + WORD f2; + HMENU16 f1; +} GETMENUSTATE16; +typedef GETMENUSTATE16 UNALIGNED *PGETMENUSTATE16; + +typedef struct _GETMENUSTRING16 { /* u161 */ + WORD f5; + SHORT f4; + VPSTR f3; + WORD f2; + HMENU16 f1; +} GETMENUSTRING16; +typedef GETMENUSTRING16 UNALIGNED *PGETMENUSTRING16; + +typedef struct _GETMESSAGE16 { /* u108 */ + WORD wMax; + WORD wMin; + HWND16 hwnd; + VPMSG16 vpMsg; +} GETMESSAGE16; +typedef GETMESSAGE16 UNALIGNED *PGETMESSAGE16; + +typedef struct _GETMESSAGE216 { /* u323 */ + BOOL16 f6; + WORD f5; + WORD f4; + WORD f3; + HWND16 f2; + VPMSG16 f1; +} GETMESSAGE216; +typedef GETMESSAGE216 UNALIGNED *PGETMESSAGE216; + +#ifdef NULLSTRUCT +typedef struct _GETMESSAGEPOS16 { /* u119 */ +} GETMESSAGEPOS16; +typedef GETMESSAGEPOS16 UNALIGNED *PGETMESSAGEPOS16; +#endif + +#ifdef NULLSTRUCT +typedef struct _GETMESSAGETIME16 { /* u120 */ +} GETMESSAGETIME16; +typedef GETMESSAGETIME16 UNALIGNED *PGETMESSAGETIME16; +#endif + +typedef struct _GETNEXTDLGGROUPITEM16 { /* u227 */ + BOOL16 f3; + HWND16 f2; + HWND16 f1; +} GETNEXTDLGGROUPITEM16; +typedef GETNEXTDLGGROUPITEM16 UNALIGNED *PGETNEXTDLGGROUPITEM16; + +typedef struct _GETNEXTDLGTABITEM16 { /* u228 */ + BOOL16 f3; + HWND16 f2; + HWND16 f1; +} GETNEXTDLGTABITEM16; +typedef GETNEXTDLGTABITEM16 UNALIGNED *PGETNEXTDLGTABITEM16; + +typedef struct _GETNEXTQUEUEWINDOW16 { /* u274 */ + BOOL16 f2; + HWND16 f1; +} GETNEXTQUEUEWINDOW16; +typedef GETNEXTQUEUEWINDOW16 UNALIGNED *PGETNEXTQUEUEWINDOW16; + +typedef struct _GETNEXTWINDOW16 { /* u230 */ + WORD f2; + HWND16 f1; +} GETNEXTWINDOW16; +typedef GETNEXTWINDOW16 UNALIGNED *PGETNEXTWINDOW16; + +typedef struct _GETPARENT16 { /* u46 */ + HWND16 f1; +} GETPARENT16; +typedef GETPARENT16 UNALIGNED *PGETPARENT16; + +typedef struct _GETPRIORITYCLIPBOARDFORMAT16 { /* u402 */ + SHORT f2; + VPWORD f1; +} GETPRIORITYCLIPBOARDFORMAT16; +typedef GETPRIORITYCLIPBOARDFORMAT16 UNALIGNED *PGETPRIORITYCLIPBOARDFORMAT16; + +typedef struct _GETPROP16 { /* u25 */ + VPSTR f2; + HWND16 f1; +} GETPROP16; +typedef GETPROP16 UNALIGNED *PGETPROP16; + +typedef struct _GETSCROLLPOS16 { /* u63 */ + SHORT f2; + HWND16 f1; +} GETSCROLLPOS16; +typedef GETSCROLLPOS16 UNALIGNED *PGETSCROLLPOS16; + +typedef struct _GETSCROLLRANGE16 { /* u65 */ + VPSHORT f4; + VPSHORT f3; + SHORT f2; + HWND16 f1; +} GETSCROLLRANGE16; +typedef GETSCROLLRANGE16 UNALIGNED *PGETSCROLLRANGE16; + +typedef struct _GETSUBMENU16 { /* u159 */ + SHORT f2; + HMENU16 f1; +} GETSUBMENU16; +typedef GETSUBMENU16 UNALIGNED *PGETSUBMENU16; + +typedef struct _GETSYSCOLOR16 { /* u180 */ + SHORT f1; +} GETSYSCOLOR16; +typedef GETSYSCOLOR16 UNALIGNED *PGETSYSCOLOR16; + +#ifdef NULLSTRUCT +typedef struct _GETSYSMODALWINDOW16 { /* u189 */ +} GETSYSMODALWINDOW16; +typedef GETSYSMODALWINDOW16 UNALIGNED *PGETSYSMODALWINDOW16; +#endif + +typedef struct _GETSYSTEMMENU16 { /* u156 */ + BOOL16 f2; + HWND16 f1; +} GETSYSTEMMENU16; +typedef GETSYSTEMMENU16 UNALIGNED *PGETSYSTEMMENU16; + +typedef struct _GETSYSTEMMETRICS16 { /* u179 */ + SHORT f1; +} GETSYSTEMMETRICS16; +typedef GETSYSTEMMETRICS16 UNALIGNED *PGETSYSTEMMETRICS16; + +typedef struct _GETTABBEDTEXTEXTENT16 { /* u197 */ + VPSHORT f5; + SHORT f4; + SHORT f3; + VPSTR f2; + HDC16 f1; +} GETTABBEDTEXTEXTENT16; +typedef GETTABBEDTEXTEXTENT16 UNALIGNED *PGETTABBEDTEXTEXTENT16; + +typedef struct _GETTASKFROMHWND16 { /* u117 */ + HWND16 f1; +} GETTASKFROMHWND16; +typedef GETTASKFROMHWND16 UNALIGNED *PGETTASKFROMHWND16; + +#ifdef NULLSTRUCT +typedef struct _GETTICKCOUNT16 { /* u13 */ +} GETTICKCOUNT16; +typedef GETTICKCOUNT16 UNALIGNED *PGETTICKCOUNT16; +#endif + +#ifdef NULLSTRUCT +typedef struct _GETTIMERRESOLUTION16 { /* u14 */ +} GETTIMERRESOLUTION16; +typedef GETTIMERRESOLUTION16 UNALIGNED *PGETTIMERRESOLUTION16; +#endif + +typedef struct _GETTOPWINDOW16 { /* u229 */ + HWND16 f1; +} GETTOPWINDOW16; +typedef GETTOPWINDOW16 UNALIGNED *PGETTOPWINDOW16; + +typedef struct _GETUPDATERECT16 { /* u190 */ + BOOL16 f3; + VPRECT16 f2; + HWND16 f1; +} GETUPDATERECT16; +typedef GETUPDATERECT16 UNALIGNED *PGETUPDATERECT16; + +typedef struct _GETUPDATERGN16 { /* u237 */ + BOOL16 f3; + HRGN16 f2; + HWND16 f1; +} GETUPDATERGN16; +typedef GETUPDATERGN16 UNALIGNED *PGETUPDATERGN16; + +typedef struct _GETUSERLOCALOBJTYPE16 { /* u480 */ + HAND16 f1; +} GETUSERLOCALOBJTYPE16; +typedef GETUSERLOCALOBJTYPE16 UNALIGNED *PGETUSERLOCALOBJTYPE16; + +typedef struct _GETWC216 { /* u318 */ + SHORT f2; + HWND16 f1; +} GETWC216; +typedef GETWC216 UNALIGNED *PGETWC216; + +typedef struct _GETWINDOW16 { /* u262 */ + WORD f2; + HWND16 f1; +} GETWINDOW16; +typedef GETWINDOW16 UNALIGNED *PGETWINDOW16; + +typedef struct _GETWINDOWDC16 { /* u67 */ + HWND16 f1; +} GETWINDOWDC16; +typedef GETWINDOWDC16 UNALIGNED *PGETWINDOWDC16; + +typedef struct _GETWINDOWLONG16 { /* u135 */ + SHORT f2; + HWND16 f1; +} GETWINDOWLONG16; +typedef GETWINDOWLONG16 UNALIGNED *PGETWINDOWLONG16; + +typedef struct _GETWINDOWRECT16 { /* u32 */ + VPRECT16 f2; + HWND16 f1; +} GETWINDOWRECT16; +typedef GETWINDOWRECT16 UNALIGNED *PGETWINDOWRECT16; + +typedef struct _GETWINDOWTASK16 { /* u224 */ + HWND16 f1; +} GETWINDOWTASK16; +typedef GETWINDOWTASK16 UNALIGNED *PGETWINDOWTASK16; + +typedef struct _GETWINDOWTEXT16 { /* u36 */ + WORD f3; + VPSTR f2; + HWND16 f1; +} GETWINDOWTEXT16; +typedef GETWINDOWTEXT16 UNALIGNED *PGETWINDOWTEXT16; + +typedef struct _GETWINDOWTEXTLENGTH16 { /* u38 */ + HWND16 f1; +} GETWINDOWTEXTLENGTH16; +typedef GETWINDOWTEXTLENGTH16 UNALIGNED *PGETWINDOWTEXTLENGTH16; + +typedef struct _GETWINDOWWORD16 { /* u133 */ + SHORT f2; + HWND16 f1; +} GETWINDOWWORD16; +typedef GETWINDOWWORD16 UNALIGNED *PGETWINDOWWORD16; + +typedef struct _GLOBALADDATOM16 { /* u268 */ + VPSTR f1; +} GLOBALADDATOM16; +typedef GLOBALADDATOM16 UNALIGNED *PGLOBALADDATOM16; + +typedef struct _GLOBALDELETEATOM16 { /* u269 */ + ATOM f1; +} GLOBALDELETEATOM16; +typedef GLOBALDELETEATOM16 UNALIGNED *PGLOBALDELETEATOM16; + +typedef struct _GLOBALFINDATOM16 { /* u270 */ + VPSTR f1; +} GLOBALFINDATOM16; +typedef GLOBALFINDATOM16 UNALIGNED *PGLOBALFINDATOM16; + +typedef struct _GLOBALGETATOMNAME16 { /* u271 */ + SHORT f3; + VPSTR f2; + ATOM f1; +} GLOBALGETATOMNAME16; +typedef GLOBALGETATOMNAME16 UNALIGNED *PGLOBALGETATOMNAME16; + +typedef struct _GRAYSTRING16 { /* u185 */ + SHORT f9; + SHORT f8; + SHORT f7; + SHORT f6; + SHORT f5; + DWORD f4; + VPPROC f3; + HBRSH16 f2; + HDC16 f1; +} GRAYSTRING16; +typedef GRAYSTRING16 UNALIGNED *PGRAYSTRING16; + +#ifdef NULLSTRUCT +typedef struct _HARDWARE_EVENT16 { /* u481 */ +} HARDWARE_EVENT16; +typedef HARDWARE_EVENT16 UNALIGNED *PHARDWARE_EVENT16; +#endif + +typedef struct _HIDECARET16 { /* u166 */ + HWND16 f1; +} HIDECARET16; +typedef HIDECARET16 UNALIGNED *PHIDECARET16; + +typedef struct _HILITEMENUITEM16 { /* u162 */ + WORD f4; + WORD f3; + HMENU16 f2; + HWND16 f1; +} HILITEMENUITEM16; +typedef HILITEMENUITEM16 UNALIGNED *PHILITEMENUITEM16; + +#ifdef NULLSTRUCT +typedef struct _ICONSIZE16 { /* u86 */ +} ICONSIZE16; +typedef ICONSIZE16 UNALIGNED *PICONSIZE16; +#endif + +typedef struct _INFLATERECT16 { /* u78 */ + SHORT f3; + SHORT f2; + VPRECT16 f1; +} INFLATERECT16; +typedef INFLATERECT16 UNALIGNED *PINFLATERECT16; + +typedef struct _INITAPP16 { /* u5 */ + HAND16 hInstance; +} INITAPP16; +typedef INITAPP16 UNALIGNED *PINITAPP16; + +#ifdef NULLSTRUCT +typedef struct _INSENDMESSAGE16 { /* u192 */ +} INSENDMESSAGE16; +typedef INSENDMESSAGE16 UNALIGNED *PINSENDMESSAGE16; +#endif + +typedef struct _INSERTMENU16 { /* u410 */ + VPSTR f5; + WORD f4; + WORD f3; + WORD f2; + HMENU16 f1; +} INSERTMENU16; +typedef INSERTMENU16 UNALIGNED *PINSERTMENU16; + +typedef struct _INTERSECTRECT16 { /* u79 */ + VPRECT16 f3; + VPRECT16 f2; + VPRECT16 f1; +} INTERSECTRECT16; +typedef INTERSECTRECT16 UNALIGNED *PINTERSECTRECT16; + +typedef struct _INVALIDATERECT16 { /* u125 */ + BOOL16 f3; + VPRECT16 f2; + HWND16 f1; +} INVALIDATERECT16; +typedef INVALIDATERECT16 UNALIGNED *PINVALIDATERECT16; + +typedef struct _INVALIDATERGN16 { /* u126 */ + BOOL16 f3; + HRGN16 f2; + HWND16 f1; +} INVALIDATERGN16; +typedef INVALIDATERGN16 UNALIGNED *PINVALIDATERGN16; + +typedef struct _INVERTRECT16 { /* u82 */ + VPRECT16 f2; + HDC16 f1; +} INVERTRECT16; +typedef INVERTRECT16 UNALIGNED *PINVERTRECT16; + +typedef struct _ISCHARALPHA16 { /* u433 */ + SHORT f1; +} ISCHARALPHA16; +typedef ISCHARALPHA16 UNALIGNED *PISCHARALPHA16; + +typedef struct _ISCHARALPHANUMERIC16 { /* u434 */ + SHORT f1; +} ISCHARALPHANUMERIC16; +typedef ISCHARALPHANUMERIC16 UNALIGNED *PISCHARALPHANUMERIC16; + +typedef struct _ISCHARLOWER16 { /* u436 */ + SHORT f1; +} ISCHARLOWER16; +typedef ISCHARLOWER16 UNALIGNED *PISCHARLOWER16; + +typedef struct _ISCHARUPPER16 { /* u435 */ + SHORT f1; +} ISCHARUPPER16; +typedef ISCHARUPPER16 UNALIGNED *PISCHARUPPER16; + +typedef struct _ISCHILD16 { /* u48 */ + HWND16 f2; + HWND16 f1; +} ISCHILD16; +typedef ISCHILD16 UNALIGNED *PISCHILD16; + +typedef struct _ISCLIPBOARDFORMATAVAILABLE16 { /* u193 */ + WORD f1; +} ISCLIPBOARDFORMATAVAILABLE16; +typedef ISCLIPBOARDFORMATAVAILABLE16 UNALIGNED *PISCLIPBOARDFORMATAVAILABLE16; + +typedef struct _ISDIALOGMESSAGE16 { /* u90 */ + VPMSG16 f2; + HWND16 f1; +} ISDIALOGMESSAGE16; +typedef ISDIALOGMESSAGE16 UNALIGNED *PISDIALOGMESSAGE16; + +typedef struct _ISDLGBUTTONCHECKED16 { /* u98 */ + SHORT f2; + HWND16 f1; +} ISDLGBUTTONCHECKED16; +typedef ISDLGBUTTONCHECKED16 UNALIGNED *PISDLGBUTTONCHECKED16; + +typedef struct _ISICONIC16 { /* u31 */ + HWND16 f1; +} ISICONIC16; +typedef ISICONIC16 UNALIGNED *PISICONIC16; + +typedef struct _ISRECTEMPTY16 { /* u75 */ + VPRECT16 f1; +} ISRECTEMPTY16; +typedef ISRECTEMPTY16 UNALIGNED *PISRECTEMPTY16; + +typedef struct _ISTWOBYTECHARPREFIX16 { /* u51 */ + SHORT f1; +} ISTWOBYTECHARPREFIX16; +typedef ISTWOBYTECHARPREFIX16 UNALIGNED *PISTWOBYTECHARPREFIX16; + +#ifdef NULLSTRUCT +typedef struct _ISUSERIDLE16 { /* u59 */ +} ISUSERIDLE16; +typedef ISUSERIDLE16 UNALIGNED *PISUSERIDLE16; +#endif + +typedef struct _ISWINDOW16 { /* u47 */ + HWND16 f1; +} ISWINDOW16; +typedef ISWINDOW16 UNALIGNED *PISWINDOW16; + +typedef struct _ISWINDOWENABLED16 { /* u35 */ + HWND16 f1; +} ISWINDOWENABLED16; +typedef ISWINDOWENABLED16 UNALIGNED *PISWINDOWENABLED16; + +typedef struct _ISWINDOWVISIBLE16 { /* u49 */ + HWND16 f1; +} ISWINDOWVISIBLE16; +typedef ISWINDOWVISIBLE16 UNALIGNED *PISWINDOWVISIBLE16; + +typedef struct _ISZOOMED16 { /* u272 */ + HWND16 f1; +} ISZOOMED16; +typedef ISZOOMED16 UNALIGNED *PISZOOMED16; + +#ifdef NULLSTRUCT +typedef struct _KEYBD_EVENT16 { /* u289 */ +} KEYBD_EVENT16; +typedef KEYBD_EVENT16 UNALIGNED *PKEYBD_EVENT16; +#endif + +typedef struct _KEYBDEVENT16 { /* u538 */ + DWORD dwExtraInfo; + WORD bScanCode; + WORD bVirtualKey; +} KEYBDEVENT16; +typedef KEYBDEVENT16 UNALIGNED *PKEYBDEVENT16; + +typedef struct _KILLSYSTEMTIMER16 { /* u182 */ + SHORT f2; + HWND16 f1; +} KILLSYSTEMTIMER16; +typedef KILLSYSTEMTIMER16 UNALIGNED *PKILLSYSTEMTIMER16; + +typedef struct _KILLTIMER16 { /* u12 */ + SHORT f2; + HWND16 f1; +} KILLTIMER16; +typedef KILLTIMER16 UNALIGNED *PKILLTIMER16; + +typedef struct _KILLTIMER216 { /* u327 */ + SHORT f2; + HWND16 f1; +} KILLTIMER216; +typedef KILLTIMER216 UNALIGNED *PKILLTIMER216; + +typedef struct _LBOXCARETBLINKER16 { /* u453 */ + DWORD f4; + WORD f3; + WORD f2; + HWND16 f1; +} LBOXCARETBLINKER16; +typedef LBOXCARETBLINKER16 UNALIGNED *PLBOXCARETBLINKER16; + +typedef struct _LOADACCELERATORS16 { /* u177 */ + VPSTR f2; + HAND16 f1; +} LOADACCELERATORS16; +typedef LOADACCELERATORS16 UNALIGNED *PLOADACCELERATORS16; + +typedef struct _LOADBITMAP16 { /* u175 */ + DWORD f4; + DWORD f3; + VPSTR f2; + HAND16 f1; +} LOADBITMAP16; +typedef LOADBITMAP16 UNALIGNED *PLOADBITMAP16; + +typedef struct _LOADCURSOR16 { /* u173 */ + WORD f7; + WORD f6; + WORD f5; + DWORD f4; + DWORD f3; + VPSTR f2; + HAND16 f1; +} LOADCURSOR16; +typedef LOADCURSOR16 UNALIGNED *PLOADCURSOR16; + +typedef struct _LOADCURSORICONHANDLER16 { /* u336 */ + HAND16 f3; + HAND16 f2; + HAND16 f1; +} LOADCURSORICONHANDLER16; +typedef LOADCURSORICONHANDLER16 UNALIGNED *PLOADCURSORICONHANDLER16; + +typedef struct _LOADDIBCURSORHANDLER16 { /* u356 */ + HAND16 f3; + HAND16 f2; + HAND16 f1; +} LOADDIBCURSORHANDLER16; +typedef LOADDIBCURSORHANDLER16 UNALIGNED *PLOADDIBCURSORHANDLER16; + +typedef struct _LOADDIBICONHANDLER16 { /* u357 */ + HAND16 f3; + HAND16 f2; + HAND16 f1; +} LOADDIBICONHANDLER16; +typedef LOADDIBICONHANDLER16 UNALIGNED *PLOADDIBICONHANDLER16; + +typedef struct _LOADICON16 { /* u174 */ + WORD f6; + WORD f5; + DWORD f4; + DWORD f3; + VPSTR f2; + HAND16 f1; +} LOADICON16; +typedef LOADICON16 UNALIGNED *PLOADICON16; + +typedef struct _LOADICONHANDLER16 { /* u456 */ + BOOL16 f2; + HICON16 f1; +} LOADICONHANDLER16; +typedef LOADICONHANDLER16 UNALIGNED *PLOADICONHANDLER16; + +typedef struct _LOADMENU16 { /* u150 */ + WORD f5; + DWORD f4; + DWORD f3; + VPSTR f2; + HAND16 f1; +} LOADMENU16; +typedef LOADMENU16 UNALIGNED *PLOADMENU16; + +typedef struct _LOADMENUINDIRECT16 { /* u220 */ + VPSTR f1; +} LOADMENUINDIRECT16; +typedef LOADMENUINDIRECT16 UNALIGNED *PLOADMENUINDIRECT16; + +typedef struct _LOADSTRING16 { /* u176 */ + SHORT f4; + VPSTR f3; + WORD f2; + HAND16 f1; +} LOADSTRING16; +typedef LOADSTRING16 UNALIGNED *PLOADSTRING16; + +typedef struct _LOCKMYTASK16 { /* u276 */ + BOOL16 f1; +} LOCKMYTASK16; +typedef LOCKMYTASK16 UNALIGNED *PLOCKMYTASK16; + +typedef struct _LOOKUPMENUHANDLE16 { /* u217 */ + WORD f2; + HMENU16 f1; +} LOOKUPMENUHANDLE16; +typedef LOOKUPMENUHANDLE16 UNALIGNED *PLOOKUPMENUHANDLE16; + +typedef struct _LSTRCMP16 { /* u430 */ + VPSTR f2; + VPSTR f1; +} LSTRCMP16; +typedef LSTRCMP16 UNALIGNED *PLSTRCMP16; + +typedef struct _LSTRCMPI16 { /* u471 */ + VPSTR f2; + VPSTR f1; +} LSTRCMPI16; +typedef LSTRCMPI16 UNALIGNED *PLSTRCMPI16; + +typedef struct _MAPDIALOGRECT16 { /* u103 */ + VPRECT16 f2; + HWND16 f1; +} MAPDIALOGRECT16; +typedef MAPDIALOGRECT16 UNALIGNED *PMAPDIALOGRECT16; + +typedef struct _MB_DLGPROC16 { /* u409 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} MB_DLGPROC16; +typedef MB_DLGPROC16 UNALIGNED *PMB_DLGPROC16; + +typedef struct _MENUITEMSTATE16 { /* u329 */ + WORD f3; + WORD f2; + HMENU16 f1; +} MENUITEMSTATE16; +typedef MENUITEMSTATE16 UNALIGNED *PMENUITEMSTATE16; + +typedef struct _MESSAGEBEEP16 { /* u104 */ + WORD f1; +} MESSAGEBEEP16; +typedef MESSAGEBEEP16 UNALIGNED *PMESSAGEBEEP16; + +typedef struct _MESSAGEBOX16 { /* u1 */ + WORD f4; + VPSTR f3; + VPSTR f2; + HWND16 f1; +} MESSAGEBOX16; +typedef MESSAGEBOX16 UNALIGNED *PMESSAGEBOX16; + +typedef struct _MODIFYMENU16 { /* u414 */ + VPSTR f5; + WORD f4; + WORD f3; + WORD f2; + HMENU16 f1; +} MODIFYMENU16; +typedef MODIFYMENU16 UNALIGNED *PMODIFYMENU16; + +#ifdef NULLSTRUCT +typedef struct _MOUSE_EVENT16 { /* u299 */ +} MOUSE_EVENT16; +typedef MOUSE_EVENT16 UNALIGNED *PMOUSE_EVENT16; +#endif + +typedef struct _MOUSEEVENT16 { /* u537 */ + DWORD dwExtraInfo; + WORD cButtons; + WORD dy; + WORD dx; + WORD wFlags; +} MOUSEEVENT16; +typedef MOUSEEVENT16 UNALIGNED *PMOUSEEVENT16; + + +typedef struct _MOVEWINDOW16 { /* u56 */ + BOOL16 f6; + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + HWND16 f1; +} MOVEWINDOW16; +typedef MOVEWINDOW16 UNALIGNED *PMOVEWINDOW16; + +typedef struct _OFFSETRECT16 { /* u77 */ + SHORT f3; + SHORT f2; + VPRECT16 f1; +} OFFSETRECT16; +typedef OFFSETRECT16 UNALIGNED *POFFSETRECT16; + +typedef struct _OPENCLIPBOARD16 { /* u137 */ + HWND16 f1; +} OPENCLIPBOARD16; +typedef OPENCLIPBOARD16 UNALIGNED *POPENCLIPBOARD16; + +typedef struct _OPENCOMM16 { /* u200 */ + DWORD f4; /* added for SetCommEventMask() support */ + WORD f3; + WORD f2; + VPSTR f1; +} OPENCOMM16; +typedef OPENCOMM16 UNALIGNED *POPENCOMM16; + +typedef struct _OPENICON16 { /* u44 */ + HWND16 f1; +} OPENICON16; +typedef OPENICON16 UNALIGNED *POPENICON16; + +typedef struct _PAINTRECT16 { /* u325 */ + VPRECT16 f5; + HBRSH16 f4; + HDC16 f3; + HWND16 f2; + HWND16 f1; +} PAINTRECT16; +typedef PAINTRECT16 UNALIGNED *PPAINTRECT16; + +typedef struct _PEEKMESSAGE16 { /* u109 */ + WORD f5; + WORD f4; + WORD f3; + HWND16 f2; + VPMSG16 f1; +} PEEKMESSAGE16; +typedef PEEKMESSAGE16 UNALIGNED *PPEEKMESSAGE16; + +typedef struct _POSTAPPMESSAGE16 { /* u116 */ + LONG f4; + WORD f3; + WORD f2; + HAND16 f1; +} POSTAPPMESSAGE16; +typedef POSTAPPMESSAGE16 UNALIGNED *PPOSTAPPMESSAGE16; + +typedef struct _POSTMESSAGE16 { /* u110 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} POSTMESSAGE16; +typedef POSTMESSAGE16 UNALIGNED *PPOSTMESSAGE16; + +typedef struct _POSTMESSAGE216 { /* u313 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} POSTMESSAGE216; +typedef POSTMESSAGE216 UNALIGNED *PPOSTMESSAGE216; + +typedef struct _POSTQUITMESSAGE16 { /* u6 */ + SHORT wExitCode; +} POSTQUITMESSAGE16; +typedef POSTQUITMESSAGE16 UNALIGNED *PPOSTQUITMESSAGE16; + +typedef struct _PTINRECT16 { /* u76 */ + POINT16 f2; + VPRECT16 f1; +} PTINRECT16; +typedef PTINRECT16 UNALIGNED *PPTINRECT16; + +typedef struct _READCOMM16 { /* u204 */ + SHORT f3; + VPSTR f2; + SHORT f1; +} READCOMM16; +typedef READCOMM16 UNALIGNED *PREADCOMM16; + +typedef struct _REALIZEPALETTE16 { /* u283 */ + HDC16 f1; +} REALIZEPALETTE16; +typedef REALIZEPALETTE16 UNALIGNED *PREALIZEPALETTE16; + +typedef struct _REGISTERCLASS16 { /* u57 */ + VPWNDCLASS16 vpWndClass; +} REGISTERCLASS16; +typedef REGISTERCLASS16 UNALIGNED *PREGISTERCLASS16; + +typedef struct _REGISTERCLIPBOARDFORMAT16 { /* u145 */ + VPSTR f1; +} REGISTERCLIPBOARDFORMAT16; +typedef REGISTERCLIPBOARDFORMAT16 UNALIGNED *PREGISTERCLIPBOARDFORMAT16; + +typedef struct _REGISTERWINDOWMESSAGE16 { /* u118 */ + VPSTR f1; +} REGISTERWINDOWMESSAGE16; +typedef REGISTERWINDOWMESSAGE16 UNALIGNED *PREGISTERWINDOWMESSAGE16; + +#ifdef NULLSTRUCT +typedef struct _RELEASECAPTURE16 { /* u19 */ +} RELEASECAPTURE16; +typedef RELEASECAPTURE16 UNALIGNED *PRELEASECAPTURE16; +#endif + +typedef struct _RELEASEDC16 { /* u68 */ + HDC16 f2; + HWND16 f1; +} RELEASEDC16; +typedef RELEASEDC16 UNALIGNED *PRELEASEDC16; + +typedef struct _REMOVEMENU16 { /* u412 */ + WORD f3; + WORD f2; + HMENU16 f1; +} REMOVEMENU16; +typedef REMOVEMENU16 UNALIGNED *PREMOVEMENU16; + +typedef struct _REMOVEPROP16 { /* u24 */ + VPSTR f2; + HWND16 f1; +} REMOVEPROP16; +typedef REMOVEPROP16 UNALIGNED *PREMOVEPROP16; + +#ifdef NULLSTRUCT +typedef struct _REPAINTSCREEN16 { /* u275 */ +} REPAINTSCREEN16; +typedef REPAINTSCREEN16 UNALIGNED *PREPAINTSCREEN16; +#endif + +typedef struct _REPLYMESSAGE16 { /* u115 */ + LONG f1; +} REPLYMESSAGE16; +typedef REPLYMESSAGE16 UNALIGNED *PREPLYMESSAGE16; + +typedef struct _SCREENTOCLIENT16 { /* u29 */ + VPPOINT16 f2; + HWND16 f1; +} SCREENTOCLIENT16; +typedef SCREENTOCLIENT16 UNALIGNED *PSCREENTOCLIENT16; + +typedef struct _SCROLLCHILDREN16 { /* u463 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} SCROLLCHILDREN16; +typedef SCROLLCHILDREN16 UNALIGNED *PSCROLLCHILDREN16; + +typedef struct _SCROLLDC16 { /* u221 */ + VPRECT16 f7; + HRGN16 f6; + VPRECT16 f5; + VPRECT16 f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} SCROLLDC16; +typedef SCROLLDC16 UNALIGNED *PSCROLLDC16; + +typedef struct _SCROLLWINDOW16 { /* u61 */ + VPRECT16 f5; + VPRECT16 f4; + SHORT f3; + SHORT f2; + HWND16 f1; +} SCROLLWINDOW16; +typedef SCROLLWINDOW16 UNALIGNED *PSCROLLWINDOW16; + +typedef struct _SELECTPALETTE16 { /* u282 */ + BOOL16 f3; + HPAL16 f2; + HDC16 f1; +} SELECTPALETTE16; +typedef SELECTPALETTE16 UNALIGNED *PSELECTPALETTE16; + +typedef struct _SENDDLGITEMMESSAGE16 { /* u101 */ + LONG f5; + WORD f4; + WORD f3; + SHORT f2; + HWND16 f1; +} SENDDLGITEMMESSAGE16; +typedef SENDDLGITEMMESSAGE16 UNALIGNED *PSENDDLGITEMMESSAGE16; + +typedef struct _SENDMESSAGE16 { /* u111 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} SENDMESSAGE16; +typedef SENDMESSAGE16 UNALIGNED *PSENDMESSAGE16; + +typedef struct _SENDMESSAGE216 { /* u312 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} SENDMESSAGE216; +typedef SENDMESSAGE216 UNALIGNED *PSENDMESSAGE216; + +typedef struct _SETACTIVEWINDOW16 { /* u59 */ + HWND16 f1; +} SETACTIVEWINDOW16; +typedef SETACTIVEWINDOW16 UNALIGNED *PSETACTIVEWINDOW16; + +typedef struct _SETCAPTURE16 { /* u18 */ + HWND16 f1; +} SETCAPTURE16; +typedef SETCAPTURE16 UNALIGNED *PSETCAPTURE16; + +typedef struct _SETCARETBLINKTIME16 { /* u168 */ + WORD f1; +} SETCARETBLINKTIME16; +typedef SETCARETBLINKTIME16 UNALIGNED *PSETCARETBLINKTIME16; + +typedef struct _SETCARETPOS16 { /* u165 */ + SHORT f2; + SHORT f1; +} SETCARETPOS16; +typedef SETCARETPOS16 UNALIGNED *PSETCARETPOS16; + +typedef struct _SETCLASSLONG16 { /* u132 */ + LONG f3; + SHORT f2; + HWND16 f1; +} SETCLASSLONG16; +typedef SETCLASSLONG16 UNALIGNED *PSETCLASSLONG16; + +typedef struct _SETCLASSWORD16 { /* u130 */ + WORD f3; + SHORT f2; + HWND16 f1; +} SETCLASSWORD16; +typedef SETCLASSWORD16 UNALIGNED *PSETCLASSWORD16; + +typedef struct _SETCLIPBOARDDATA16 { /* u141 */ + HAND16 f2; + WORD f1; +} SETCLIPBOARDDATA16; +typedef SETCLIPBOARDDATA16 UNALIGNED *PSETCLIPBOARDDATA16; + +typedef struct _SETCLIPBOARDVIEWER16 { /* u147 */ + HWND16 f1; +} SETCLIPBOARDVIEWER16; +typedef SETCLIPBOARDVIEWER16 UNALIGNED *PSETCLIPBOARDVIEWER16; + +typedef struct _SETCOMMBREAK16 { /* u210 */ + SHORT f1; +} SETCOMMBREAK16; +typedef SETCOMMBREAK16 UNALIGNED *PSETCOMMBREAK16; + +typedef struct _SETCOMMEVENTMASK16 { /* u208 */ + WORD f2; + SHORT f1; +} SETCOMMEVENTMASK16; +typedef SETCOMMEVENTMASK16 UNALIGNED *PSETCOMMEVENTMASK16; + +typedef struct _SETCOMMSTATE16 { /* u201 */ + VPDCB16 f1; +} SETCOMMSTATE16; +typedef SETCOMMSTATE16 UNALIGNED *PSETCOMMSTATE16; + +typedef struct _SETCURSOR16 { /* u69 */ + HCUR16 f1; +} SETCURSOR16; +typedef SETCURSOR16 UNALIGNED *PSETCURSOR16; + +typedef struct _SETCURSORPOS16 { /* u70 */ + SHORT f2; + SHORT f1; +} SETCURSORPOS16; +typedef SETCURSORPOS16 UNALIGNED *PSETCURSORPOS16; + +typedef struct _SETDESKPATTERN16 { /* u279 */ + VPSTR f1; +} SETDESKPATTERN16; +typedef SETDESKPATTERN16 UNALIGNED *PSETDESKPATTERN16; + +typedef struct _SETDESKWALLPAPER16 { /* u285 */ + VPSTR f1; +} SETDESKWALLPAPER16; +typedef SETDESKWALLPAPER16 UNALIGNED *PSETDESKWALLPAPER16; + +typedef struct _SETDLGITEMINT16 { /* u94 */ + BOOL16 f4; + WORD f3; + SHORT f2; + HWND16 f1; +} SETDLGITEMINT16; +typedef SETDLGITEMINT16 UNALIGNED *PSETDLGITEMINT16; + +typedef struct _SETDLGITEMTEXT16 { /* u92 */ + VPSTR f3; + SHORT f2; + HWND16 f1; +} SETDLGITEMTEXT16; +typedef SETDLGITEMTEXT16 UNALIGNED *PSETDLGITEMTEXT16; + +typedef struct _SETDOUBLECLICKTIME16 { /* u20 */ + WORD f1; +} SETDOUBLECLICKTIME16; +typedef SETDOUBLECLICKTIME16 UNALIGNED *PSETDOUBLECLICKTIME16; + +typedef struct _SETFOCUS16 { /* u22 */ + HWND16 f1; +} SETFOCUS16; +typedef SETFOCUS16 UNALIGNED *PSETFOCUS16; + +typedef struct _SETGETKBDSTATE16 { /* u330 */ + VPBYTE f1; +} SETGETKBDSTATE16; +typedef SETGETKBDSTATE16 UNALIGNED *PSETGETKBDSTATE16; + +typedef struct _SETINTERNALWINDOWPOS16 { /* u461 */ + VPPOINT16 f4; + VPRECT16 f3; + WORD f2; + HWND16 f1; +} SETINTERNALWINDOWPOS16; +typedef SETINTERNALWINDOWPOS16 UNALIGNED *PSETINTERNALWINDOWPOS16; + +typedef struct _SETKEYBOARDSTATE16 { /* u223 */ + VPBYTE f1; +} SETKEYBOARDSTATE16; +typedef SETKEYBOARDSTATE16 UNALIGNED *PSETKEYBOARDSTATE16; + +typedef struct _SETMENU16 { /* u158 */ + HMENU16 f2; + HWND16 f1; +} SETMENU16; +typedef SETMENU16 UNALIGNED *PSETMENU16; + +typedef struct _SETMENUITEMBITMAPS16 { /* u418 */ + HBM16 f5; + HBM16 f4; + WORD f3; + WORD f2; + HMENU16 f1; +} SETMENUITEMBITMAPS16; +typedef SETMENUITEMBITMAPS16 UNALIGNED *PSETMENUITEMBITMAPS16; + +typedef struct _SETMESSAGEQUEUE16 { /* u266 */ + SHORT f1; +} SETMESSAGEQUEUE16; +typedef SETMESSAGEQUEUE16 UNALIGNED *PSETMESSAGEQUEUE16; + +typedef struct _SETPARENT16 { /* u233 */ + HWND16 f2; + HWND16 f1; +} SETPARENT16; +typedef SETPARENT16 UNALIGNED *PSETPARENT16; + +typedef struct _SETPROP16 { /* u26 */ + HAND16 f3; + VPSTR f2; + HWND16 f1; +} SETPROP16; +typedef SETPROP16 UNALIGNED *PSETPROP16; + +typedef struct _SETRECT16 { /* u72 */ + SHORT f5; + SHORT f4; + SHORT f3; + SHORT f2; + VPRECT16 f1; +} SETRECT16; +typedef SETRECT16 UNALIGNED *PSETRECT16; + +typedef struct _SETRECTEMPTY16 { /* u73 */ + VPRECT16 f1; +} SETRECTEMPTY16; +typedef SETRECTEMPTY16 UNALIGNED *PSETRECTEMPTY16; + +typedef struct _SETSCROLLPOS16 { /* u62 */ + BOOL16 f4; + SHORT f3; + SHORT f2; + HWND16 f1; +} SETSCROLLPOS16; +typedef SETSCROLLPOS16 UNALIGNED *PSETSCROLLPOS16; + +typedef struct _SETSCROLLRANGE16 { /* u64 */ + BOOL16 f5; + SHORT f4; + SHORT f3; + SHORT f2; + HWND16 f1; +} SETSCROLLRANGE16; +typedef SETSCROLLRANGE16 UNALIGNED *PSETSCROLLRANGE16; + +typedef struct _SETSYSCOLORS16 { /* u181 */ + VPLONG f3; + VPSHORT f2; + SHORT f1; +} SETSYSCOLORS16; +typedef SETSYSCOLORS16 UNALIGNED *PSETSYSCOLORS16; + +typedef struct _SETSYSMODALWINDOW16 { /* u188 */ + HWND16 f1; +} SETSYSMODALWINDOW16; +typedef SETSYSMODALWINDOW16 UNALIGNED *PSETSYSMODALWINDOW16; + +typedef struct _SETSYSTEMMENU16 { /* u280 */ + HMENU16 f2; + HWND16 f1; +} SETSYSTEMMENU16; +typedef SETSYSTEMMENU16 UNALIGNED *PSETSYSTEMMENU16; + +typedef struct _SETSYSTEMTIMER16 { /* u11 */ + VPPROC f4; + WORD f3; + SHORT f2; + HWND16 f1; +} SETSYSTEMTIMER16; +typedef SETSYSTEMTIMER16 UNALIGNED *PSETSYSTEMTIMER16; + +typedef struct _SETTIMER16 { /* u10 */ + VPPROC f4; + WORD f3; + SHORT f2; + HWND16 f1; +} SETTIMER16; +typedef SETTIMER16 UNALIGNED *PSETTIMER16; + +typedef struct _SETTIMER216 { /* u328 */ + VPPROC f4; + WORD f3; + SHORT f2; + HWND16 f1; +} SETTIMER216; +typedef SETTIMER216 UNALIGNED *PSETTIMER216; + +typedef struct _SETWINDOWLONG16 { /* u136 */ + LONG f3; + SHORT f2; + HWND16 f1; +} SETWINDOWLONG16; +typedef SETWINDOWLONG16 UNALIGNED *PSETWINDOWLONG16; + +typedef struct _SETWINDOWPOS16 { /* u232 */ + WORD f7; + SHORT f6; + SHORT f5; + SHORT f4; + SHORT f3; + HWND16 f2; + HWND16 f1; +} SETWINDOWPOS16; +typedef SETWINDOWPOS16 UNALIGNED *PSETWINDOWPOS16; + +typedef struct _SETWINDOWSHOOKINTERNAL16 { /* u121 */ + VPPROC f3; + SHORT f2; + SHORT f1; +} SETWINDOWSHOOKINTERNAL16; +typedef SETWINDOWSHOOKINTERNAL16 UNALIGNED *PSETWINDOWSHOOKINTERNAL16; + +typedef struct _SETWINDOWTEXT16 { /* u37 */ + VPSTR f2; + HWND16 f1; +} SETWINDOWTEXT16; +typedef SETWINDOWTEXT16 UNALIGNED *PSETWINDOWTEXT16; + +typedef struct _SETWINDOWWORD16 { /* u134 */ + WORD f3; + SHORT f2; + HWND16 f1; +} SETWINDOWWORD16; +typedef SETWINDOWWORD16 UNALIGNED *PSETWINDOWWORD16; + +typedef struct _SHOWCARET16 { /* u167 */ + HWND16 f1; +} SHOWCARET16; +typedef SHOWCARET16 UNALIGNED *PSHOWCARET16; + +typedef struct _SHOWCURSOR16 { /* u71 */ + BOOL16 f1; +} SHOWCURSOR16; +typedef SHOWCURSOR16 UNALIGNED *PSHOWCURSOR16; + +typedef struct _SHOWOWNEDPOPUPS16 { /* u265 */ + BOOL16 f2; + HWND16 f1; +} SHOWOWNEDPOPUPS16; +typedef SHOWOWNEDPOPUPS16 UNALIGNED *PSHOWOWNEDPOPUPS16; + +typedef struct _SHOWSCROLLBAR16 { /* u267 */ + BOOL16 f3; + WORD f2; + HWND16 f1; +} SHOWSCROLLBAR16; +typedef SHOWSCROLLBAR16 UNALIGNED *PSHOWSCROLLBAR16; + +typedef struct _SHOWWINDOW16 { /* u42 */ + SHORT f2; + HWND16 f1; +} SHOWWINDOW16; +typedef SHOWWINDOW16 UNALIGNED *PSHOWWINDOW16; + +typedef struct _SIGNALPROC16 { /* u314 */ + LONG f4; + WORD f3; + WORD f2; + HTASK16 f1; +} SIGNALPROC16; +typedef SIGNALPROC16 UNALIGNED *PSIGNALPROC16; + +typedef struct _SNAPWINDOW16 { /* u281 */ + HWND16 f1; +} SNAPWINDOW16; +typedef SNAPWINDOW16 UNALIGNED *PSNAPWINDOW16; + +typedef struct _SWAPMOUSEBUTTON16 { /* u186 */ + BOOL16 f1; +} SWAPMOUSEBUTTON16; +typedef SWAPMOUSEBUTTON16 UNALIGNED *PSWAPMOUSEBUTTON16; + +typedef struct _SWITCHTOTHISWINDOW16 { /* u172 */ + BOOL16 f2; + HWND16 f1; +} SWITCHTOTHISWINDOW16; +typedef SWITCHTOTHISWINDOW16 UNALIGNED *PSWITCHTOTHISWINDOW16; + +typedef struct _SWITCHWNDPROC16 { /* u347 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} SWITCHWNDPROC16; +typedef SWITCHWNDPROC16 UNALIGNED *PSWITCHWNDPROC16; + +typedef struct _SYSERRORBOX16 { /* u320 */ + SHORT sBtn3; + SHORT sBtn2; + SHORT sBtn1; + VPSZ vpszCaption; + VPSZ vpszText; +} SYSERRORBOX16; +typedef SYSERRORBOX16 UNALIGNED *PSYSERRORBOX16; + +typedef struct _TABBEDTEXTOUT16 { /* u196 */ + SHORT f8; + VPSHORT f7; + SHORT f6; + SHORT f5; + VPSTR f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} TABBEDTEXTOUT16; +typedef TABBEDTEXTOUT16 UNALIGNED *PTABBEDTEXTOUT16; + +typedef struct _TABTHETEXTOUTFORWIMPS16 { /* u354 */ + BOOL16 f9; + SHORT f8; + VPSHORT f7; + SHORT f6; + SHORT f5; + VPSTR f4; + SHORT f3; + SHORT f2; + HDC16 f1; +} TABTHETEXTOUTFORWIMPS16; +typedef TABTHETEXTOUTFORWIMPS16 UNALIGNED *PTABTHETEXTOUTFORWIMPS16; + +typedef struct _TILECHILDWINDOWS16 { /* u199 */ + WORD f2; + HWND16 f1; +} TILECHILDWINDOWS16; +typedef TILECHILDWINDOWS16 UNALIGNED *PTILECHILDWINDOWS16; + +typedef struct _TITLEWNDPROC16 { /* u345 */ + LONG f4; + WORD f3; + WORD f2; + HWND16 f1; +} TITLEWNDPROC16; +typedef TITLEWNDPROC16 UNALIGNED *PTITLEWNDPROC16; + +typedef struct _TRACKPOPUPMENU16 { /* u416 */ + VPRECT16 f7; + HWND16 f6; + SHORT f5; + SHORT f4; + SHORT f3; + WORD f2; + HMENU16 f1; +} TRACKPOPUPMENU16; +typedef TRACKPOPUPMENU16 UNALIGNED *PTRACKPOPUPMENU16; + +typedef struct _TRANSLATEACCELERATOR16 { /* u178 */ + VPMSG16 f3; + HAND16 f2; + HWND16 f1; +} TRANSLATEACCELERATOR16; +typedef TRANSLATEACCELERATOR16 UNALIGNED *PTRANSLATEACCELERATOR16; + +typedef struct _TRANSLATEMDISYSACCEL16 { /* u451 */ + VPMSG16 f2; + HWND16 f1; +} TRANSLATEMDISYSACCEL16; +typedef TRANSLATEMDISYSACCEL16 UNALIGNED *PTRANSLATEMDISYSACCEL16; + +typedef struct _TRANSLATEMESSAGE16 { /* u113 */ + VPMSG16 f1; +} TRANSLATEMESSAGE16; +typedef TRANSLATEMESSAGE16 UNALIGNED *PTRANSLATEMESSAGE16; + +typedef struct _TRANSMITCOMMCHAR16 { /* u206 */ + SHORT f2; + SHORT f1; +} TRANSMITCOMMCHAR16; +typedef TRANSMITCOMMCHAR16 UNALIGNED *PTRANSMITCOMMCHAR16; + +typedef struct _UNGETCOMMCHAR16 { /* u212 */ + SHORT f2; + SHORT f1; +} UNGETCOMMCHAR16; +typedef UNGETCOMMCHAR16 UNALIGNED *PUNGETCOMMCHAR16; + +typedef struct _UNHOOKWINDOWSHOOK16 { /* u234 */ + VPPROC f2; + SHORT f1; +} UNHOOKWINDOWSHOOK16; +typedef UNHOOKWINDOWSHOOK16 UNALIGNED *PUNHOOKWINDOWSHOOK16; + +typedef struct _UNIONRECT16 { /* u80 */ + VPRECT16 f3; + VPRECT16 f2; + VPRECT16 f1; +} UNIONRECT16; +typedef UNIONRECT16 UNALIGNED *PUNIONRECT16; + +typedef struct _UNREGISTERCLASS16 { /* u403 */ + HAND16 hInstance; + VPSTR vpszClass; +} UNREGISTERCLASS16; +typedef UNREGISTERCLASS16 UNALIGNED *PUNREGISTERCLASS16; + +typedef struct _UPDATEWINDOW16 { /* u124 */ + HWND16 f1; +} UPDATEWINDOW16; +typedef UPDATEWINDOW16 UNALIGNED *PUPDATEWINDOW16; + +typedef struct _USERSEEUSERDO16 { /* u216 */ + LONG f3; + WORD f2; + WORD f1; +} USERSEEUSERDO16; +typedef USERSEEUSERDO16 UNALIGNED *PUSERSEEUSERDO16; + +#ifdef NULLSTRUCT +typedef struct _USERYIELD16 { /* u332 */ +} USERYIELD16; +typedef USERYIELD16 UNALIGNED *PUSERYIELD16; +#endif + +typedef struct _VALIDATERECT16 { /* u127 */ + VPRECT16 f2; + HWND16 f1; +} VALIDATERECT16; +typedef VALIDATERECT16 UNALIGNED *PVALIDATERECT16; + +typedef struct _VALIDATERGN16 { /* u128 */ + HRGN16 f2; + HWND16 f1; +} VALIDATERGN16; +typedef VALIDATERGN16 UNALIGNED *PVALIDATERGN16; + +#ifdef NULLSTRUCT +typedef struct _WAITMESSAGE16 { /* u112 */ +} WAITMESSAGE16; +typedef WAITMESSAGE16 UNALIGNED *PWAITMESSAGE16; +#endif + +typedef struct _WINDOWFROMPOINT16 { /* u30 */ + POINT16 f1; +} WINDOWFROMPOINT16; +typedef WINDOWFROMPOINT16 UNALIGNED *PWINDOWFROMPOINT16; + +typedef struct _WINHELP16 { /* u171 */ + DWORD f4; + WORD f3; + VPSTR f2; + HWND16 f1; +} WINHELP16; +typedef WINHELP16 UNALIGNED *PWINHELP16; + +typedef struct _WINOLDAPPHACKOMATIC16 { /* u322 */ + LONG f1; +} WINOLDAPPHACKOMATIC16; +typedef WINOLDAPPHACKOMATIC16 UNALIGNED *PWINOLDAPPHACKOMATIC16; + +typedef struct _WRITECOMM16 { /* u205 */ + SHORT f3; + VPSTR f2; + SHORT f1; +} WRITECOMM16; +typedef WRITECOMM16 UNALIGNED *PWRITECOMM16; + +typedef struct _WSPRINTF16 { /* u420 */ + VPSTR f2; + VPSTR f1; +} WSPRINTF16; +typedef WSPRINTF16 UNALIGNED *PWSPRINTF16; + +typedef struct _WVSPRINTF16 { /* u421 */ + VPSTR f3; + VPSTR f2; + VPSTR f1; +} WVSPRINTF16; +typedef WVSPRINTF16 UNALIGNED *PWVSPRINTF16; + +#ifdef NULLSTRUCT +typedef struct _XCSTODS16 { /* u315 */ +} XCSTODS16; +typedef XCSTODS16 UNALIGNED *PXCSTODS16; +#endif + +typedef struct _SETWINDOWSHOOKEX16 { /* u291 */ + HTASK16 f4; + HAND16 f3; + VPPROC f2; + SHORT f1; +} SETWINDOWSHOOKEX16; +typedef SETWINDOWSHOOKEX16 UNALIGNED *PSETWINDOWSHOOKEX16; + +typedef struct _UNHOOKWINDOWSHOOKEX16 { /* u292 */ + HHOOK16 f1; +} UNHOOKWINDOWSHOOKEX16; +typedef UNHOOKWINDOWSHOOKEX16 UNALIGNED *PUNHOOKWINDOWSHOOKEX16; + +typedef struct _CALLNEXTHOOKEX16 { /* u293 */ + DWORD f4; + WORD f3; + SHORT f2; + HHOOK16 f1; +} CALLNEXTHOOKEX16; +typedef CALLNEXTHOOKEX16 UNALIGNED *PCALLNEXTHOOKEX16; + +typedef struct _CLOSEDRIVER16 { /* u253 */ + VPVOID f3; + VPVOID f2; + WORD f1; +} CLOSEDRIVER16; +typedef CLOSEDRIVER16 UNALIGNED *PCLOSEDRIVER16; + +typedef struct _COPYCURSOR16 { /* u369 */ + HAND16 f2; + HAND16 f1; +} COPYCURSOR16; +typedef COPYCURSOR16 UNALIGNED *PCOPYCURSOR16; + +typedef struct _COPYICON16 { /* u368 */ + HAND16 f2; + HAND16 f1; +} COPYICON16; +typedef COPYICON16 UNALIGNED *PCOPYICON16; + +typedef struct _DEFDRIVERPROC16 { /* u255 */ + VPVOID f5; + VPVOID f4; + WORD f3; + HAND16 f2; + DWORD f1; +} DEFDRIVERPROC16; +typedef DEFDRIVERPROC16 UNALIGNED *PDEFDRIVERPROC16; + +typedef struct _ENABLESCROLLBAR16 { /* u482 */ + WORD f3; + SHORT f2; + HAND16 f1; +} ENABLESCROLLBAR16; +typedef ENABLESCROLLBAR16 UNALIGNED *PENABLESCROLLBAR16; + +typedef struct _GETCLIPCURSOR16 { /* u309 */ + VPRECT16 f1; +} GETCLIPCURSOR16; +typedef GETCLIPCURSOR16 UNALIGNED *PGETCLIPCURSOR16; + +typedef struct _GETDCEX16 { /* u359 */ + DWORD f3; + WORD f2; + HAND16 f1; +} GETDCEX16; +typedef GETDCEX16 UNALIGNED *PGETDCEX16; + +typedef struct _GETDRIVERMODULEHANDLE16 { /* u254 */ + HAND16 f1; +} GETDRIVERMODULEHANDLE16; +typedef GETDRIVERMODULEHANDLE16 UNALIGNED *PGETDRIVERMODULEHANDLE16; + +typedef struct _GETDRIVERINFO16 { /* u256 */ + VPVOID f2; + HAND16 f1; +} GETDRIVERINFO16; +typedef GETDRIVERINFO16 UNALIGNED *PGETDRIVERINFO16; + +typedef struct _GETFREESYSTEMRESOURCES16 { /* u284 */ + WORD f1; +} GETFREESYSTEMRESOURCES16; +typedef GETFREESYSTEMRESOURCES16 UNALIGNED *PGETFREESYSTEMRESOURCES16; + +typedef struct _GETNEXTDRIVER16 { /* u257 */ + DWORD f2; + HAND16 f1; +} GETNEXTDRIVER16; +typedef GETNEXTDRIVER16 UNALIGNED *PGETNEXTDRIVER16; + +typedef struct _GETQUEUESTATUS16 { /* u334 */ + WORD f1; +} GETQUEUESTATUS16; +typedef GETQUEUESTATUS16 UNALIGNED *PGETQUEUESTATUS16; + +typedef struct _GETWINDOWPLACEMENT16 { /* u370 */ + VPVOID f2; + HAND16 f1; +} GETWINDOWPLACEMENT16; +typedef GETWINDOWPLACEMENT16 UNALIGNED *PGETWINDOWPLACEMENT16; + +typedef struct _ISMENU16 { /* u358 */ + HAND16 f1; +} ISMENU16; +typedef ISMENU16 UNALIGNED *PISMENU16; + +typedef struct _LOCKINPUT16 { /* u226 */ + BOOL16 f3; + HAND16 f2; + HAND16 f1; +} LOCKINPUT16; +typedef LOCKINPUT16 UNALIGNED *PLOCKINPUT16; + +typedef struct _LOCKWINDOWUPDATE16 { /* u294 */ + HAND16 f1; +} LOCKWINDOWUPDATE16; +typedef LOCKWINDOWUPDATE16 UNALIGNED *PLOCKWINDOWUPDATE16; + +typedef struct _MAPWINDOWPOINTS16 { /* u258 */ + WORD f4; + VPVOID f3; + HAND16 f2; + HAND16 f1; +} MAPWINDOWPOINTS16; +typedef MAPWINDOWPOINTS16 UNALIGNED *PMAPWINDOWPOINTS16; + +typedef struct _OPENDRIVER16 { /* u252 */ + VPVOID f3; + VPVOID f2; + VPVOID f1; +} OPENDRIVER16; +typedef OPENDRIVER16 UNALIGNED *POPENDRIVER16; + +typedef struct _QUERYSENDMESSAGE16 { /* u184 */ + VPVOID f4; + WORD f3; + WORD f2; + WORD f1; +} QUERYSENDMESSAGE16; +typedef QUERYSENDMESSAGE16 UNALIGNED *PQUERYSENDMESSAGE16; + +typedef struct _REDRAWWWINDOW16 { /* ux293 */ + WORD f4; + WORD f3; + VPVOID f2; + HAND16 f1; +} REDRAWWWINDOW16; +typedef REDRAWWWINDOW16 UNALIGNED *PREDRAWWWINDOW16; + +typedef struct _SCROLLWINDOWEX16 { /* u319 */ + WORD f8; + VPRECT16 f7; + WORD f6; + VPRECT16 f5; + VPRECT16 f4; + SHORT f3; + SHORT f2; + HAND16 f1; +} SCROLLWINDOWEX16; +typedef SCROLLWINDOWEX16 UNALIGNED *PSCROLLWINDOWEX16; + +typedef struct _SENDDRIVERMESSAGE16 { /* u251 */ + VPVOID f4; + VPVOID f3; + WORD f2; + HAND16 f1; +} SENDDRIVERMESSAGE16; +typedef SENDDRIVERMESSAGE16 UNALIGNED *PSENDDRIVERMESSAGE16; + +typedef struct _REDRAWWINDOW16 { /* u290 */ + WORD f4; + WORD f3; + VPVOID f2; + HAND16 f1; +} REDRAWWINDOW16; +typedef REDRAWWINDOW16 UNALIGNED *PREDRAWWINDOW16; + + +typedef struct _SETEVENTHOOK16 { /* u321 */ + VPPROC f1; +} SETEVENTHOOK16; +typedef SETEVENTHOOK16 UNALIGNED *PSETEVENTHOOK16; + +typedef struct _FILLWINDOW16 { /* u324 */ + HBRSH16 f4; + HDC16 f3; + HWND16 f2; + HWND16 f1; +} FILLWINDOW16; +typedef FILLWINDOW16 UNALIGNED *PFILLWINDOW16; + +typedef struct _SETWINDOWPLACEMENT16 { /* u371 */ + VPVOID f2; + HAND16 f1; +} SETWINDOWPLACEMENT16; +typedef SETWINDOWPLACEMENT16 UNALIGNED *PSETWINDOWPLACEMENT16; + +typedef struct _SUBTRACTRECT16 { /* u373 */ + VPVOID f3; + VPVOID f2; + VPVOID f1; +} SUBTRACTRECT16; +typedef SUBTRACTRECT16 UNALIGNED *PSUBTRACTRECT16; + +typedef struct _SYSTEMPARAMETERSINFO16 { /* u483 */ + WORD f4; + VPVOID f3; + WORD f2; + WORD f1; +} SYSTEMPARAMETERSINFO16; +typedef SYSTEMPARAMETERSINFO16 UNALIGNED *PSYSTEMPARAMETERSINFO16; + +typedef struct _CURSORSHAPE16 { /* curs */ + SHORT xHotSpot; + SHORT yHotSpot; + SHORT cx; + SHORT cy; + SHORT cbWidth; /* Bytes per row, accounting for word alignment. */ + BYTE Planes; + BYTE BitsPixel; +} CURSORSHAPE16; +typedef CURSORSHAPE16 UNALIGNED *PCURSORSHAPE16; + + +typedef struct _MULTIKEYHELP16 { /* mkh */ + WORD mkSize; + BYTE mkKeylist; + BYTE szKeyphrase[1]; +} MULTIKEYHELP16; +typedef MULTIKEYHELP16 UNALIGNED *PMULTIKEYHELP16; + + +typedef struct _HELPWININFO16 { /* hwinfo */ + SHORT wStructSize; + SHORT x; + SHORT y; + SHORT dx; + SHORT dy; + SHORT wMax; + BYTE rgchMember[2]; +} HELPWININFO16; +typedef HELPWININFO16 UNALIGNED *PHELPWININFO16; + +typedef struct _LOADACCEL16 { /* ldaccel */ + WORD hInst; + WORD hAccel; + VPVOID pAccel; + DWORD cbAccel; +} LOADACCEL16; +typedef LOADACCEL16 UNALIGNED FAR *PLOADACCEL16; + +typedef struct _NOTIFYWOW16 { /* notewow */ + VPVOID pData; + WORD Id; +} NOTIFYWOW16; +typedef NOTIFYWOW16 UNALIGNED *PNOTIFYWOW16; + + +typedef struct _ICONCUR16 { /* iconcur */ + WORD hInst; + VPVOID lpStr; +} ICONCUR16; +typedef ICONCUR16 UNALIGNED *PICONCUR16; + + +typedef struct _WNETADDCONNECTION16 { /* u517 */ + VPSTR f3; + VPSTR f2; + VPSTR f1; +} WNETADDCONNECTION16; +typedef WNETADDCONNECTION16 UNALIGNED *PWNETADDCONNECTION16; + +typedef struct _WNETGETCONNECTION16 { /* u512 */ + VPVOID f3; + VPSTR f2; + VPSTR f1; +} WNETGETCONNECTION16; +typedef WNETGETCONNECTION16 UNALIGNED *PWNETGETCONNECTION16; + +typedef struct _WNETCANCELCONNECTION16 { /* u518 */ + BOOL16 f2; + VPSTR f1; +} WNETCANCELCONNECTION16; +typedef WNETCANCELCONNECTION16 UNALIGNED *PWNETCANCELCONNECTION16; + +typedef struct _WINDOWPLACEMENT16 { /* wp16wow32only */ + WORD length; + WORD flags; + WORD showCmd; + POINT16 ptMinPosition; + POINT16 ptMaxPosition; + RECT16 rcNormalPosition; +} WINDOWPLACEMENT16; +typedef WINDOWPLACEMENT16 UNALIGNED *LPWINDOWPLACEMENT16; + +typedef struct _WOWGETIDFROMDIRECTORY16 { /* u534 */ + WORD f2; + VPVOID f1; +} WOWGETIDFROMDIRECTORY16; +typedef WOWGETIDFROMDIRECTORY16 UNALIGNED *PWOWGETIDFROMDIRECTORY16; + +typedef struct _WORDBREAKPROC16 { /* wordbreakproc */ + SHORT action; + SHORT cbEditText; + SHORT ichCurrentWord; + VPVOID lpszEditText; +} WORDBREAKPROC16; +typedef WORDBREAKPROC16 UNALIGNED *PWORDBREAKPROC16; + +typedef struct _USERCLIENTGLOBALS { /* uclg */ + WORD hInstance; + BYTE UNALIGNED **lpgpsi; + BYTE UNALIGNED **lpCsrFlag; + DWORD dwBldInfo; + VPWORD lpwMaxDWPMsg; + VPSTR lpDWPBits; + WORD cbDWPBits; +} USERCLIENTGLOBALS; +typedef USERCLIENTGLOBALS UNALIGNED *PUSERCLIENTGLOBALS; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ diff --git a/private/mvdm/inc/wowwsock.h b/private/mvdm/inc/wowwsock.h new file mode 100644 index 000000000..41332e550 --- /dev/null +++ b/private/mvdm/inc/wowwsock.h @@ -0,0 +1,467 @@ +/*++ BUILD Version: 0001 + * + * WOW v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * WOWWSOCK.H + * 16-bit Winsock API argument structures + * + * History: + * Created 02-Oct-1992 by David Treadwell (davidtr) +--*/ + +//#include <windows.h> +//#include <winsock.h> + +/* XLATOFF */ +#pragma pack(1) +/* XLATON */ + +/*++ + * + * Winsock data structures + * +--*/ + +typedef WORD HSOCKET16; +typedef DWORD IN_ADDR16; + +typedef struct _SOCKADDR16 { /* sa16 */ + WORD sa_family; + BYTE sa_data[14]; +} SOCKADDR16; +typedef SOCKADDR16 UNALIGNED *PSOCKADDR16; +typedef VPVOID VPSOCKADDR; + +#define FD_SETSIZE 64 + +typedef struct _FD_SET16 { /* fd16 */ + WORD fd_count; + HSOCKET16 fd_array[FD_SETSIZE]; +} FD_SET16; +typedef FD_SET16 UNALIGNED *PFD_SET16; +typedef VPVOID VPFD_SET16; + +#define WSADESCRIPTION_LEN 256 +#define WSASYS_STATUS_LEN 128 + +typedef struct _WSADATA16 { /* wd16 */ + WORD wVersion; + WORD wHighVersion; + CHAR szDescription[WSADESCRIPTION_LEN+1]; + CHAR szSystemStatus[WSASYS_STATUS_LEN+1]; + INT16 iMaxSockets; + INT16 iMaxUdpDg; + VPBYTE lpVendorInfo; +} WSADATA16; +typedef WSADATA16 UNALIGNED *PWSADATA16; +typedef VPVOID VPWSADATA16; + +typedef struct _TIMEVAL16 { /* tv16 */ + DWORD tv_sec; /* seconds */ + DWORD tv_usec; /* and microseconds */ +} TIMEVAL16; +typedef TIMEVAL16 *PTIMEVAL16; +typedef VPVOID VPTIMEVAL16; + +typedef struct _HOSTENT16 { /* he16 */ + VPSZ h_name; + VPVOID h_aliases; + WORD h_addrtype; + WORD h_length; + VPBYTE h_addr_list; +} HOSTENT16; +typedef HOSTENT16 *PHOSTENT16; +typedef VPVOID VPHOSTENT16; + +typedef struct _PROTOENT16 { /* pe16 */ + VPSZ p_name; + VPVOID p_aliases; + WORD p_proto; +} PROTOENT16; +typedef PROTOENT16 *PPROTOENT16; +typedef VPVOID VPPROTOENT16; + +typedef struct _SERVENT16 { /* se16 */ + VPSZ s_name; + VPVOID s_aliases; + WORD s_port; + VPSZ s_proto; +} SERVENT16; +typedef SERVENT16 *PSERVENT16; +typedef VPVOID VPSERVENT16; + +typedef struct _NETENT16 { /* ne16 */ + VPSZ n_name; + VPVOID n_aliases; + WORD n_addrtype; + DWORD n_net; +} NETENT16; +typedef NETENT16 *PNETENT16; +typedef VPVOID VPNETENT16; + +/*++ + * + * Winsock API IDs (equal to ordinal numbers) + * +--*/ + +#define FUN_ACCEPT 1 // +#define FUN_BIND 2 // +#define FUN_CLOSESOCKET 3 // +#define FUN_CONNECT 4 // +#define FUN_GETPEERNAME 5 // +#define FUN_GETSOCKNAME 6 // +#define FUN_GETSOCKOPT 7 // +#define FUN_HTONL 8 // +#define FUN_HTONS 9 // +#define FUN_INET_ADDR 10 // +#define FUN_INET_NTOA 11 // +#define FUN_IOCTLSOCKET 12 // +#define FUN_LISTEN 13 // +#define FUN_NTOHL 14 // +#define FUN_NTOHS 15 // +#define FUN_RECV 16 // +#define FUN_RECVFROM 17 // +#define FUN_SELECT 18 // +#define FUN_SEND 19 // +#define FUN_SENDTO 20 // +#define FUN_SETSOCKOPT 21 // +#define FUN_SHUTDOWN 22 // +#define FUN_SOCKET 23 // + +#define FUN_GETHOSTBYADDR 51 // +#define FUN_GETHOSTBYNAME 52 // +#define FUN_GETPROTOBYNAME 53 // +#define FUN_GETPROTOBYNUMBER 54 // +#define FUN_GETSERVBYNAME 55 // +#define FUN_GETSERVBYPORT 56 // +#define FUN_GETHOSTNAME 57 // + +#define FUN_WSAASYNCSELECT 101 // +#define FUN_WSAASYNCGETHOSTBYADDR 102 // +#define FUN_WSAASYNCGETHOSTBYNAME 103 // +#define FUN_WSAASYNCGETPROTOBYNUMBER 104 // +#define FUN_WSAASYNCGETPROTOBYNAME 105 // +#define FUN_WSAASYNCGETSERVBYPORT 106 // +#define FUN_WSAASYNCGETSERVBYNAME 107 // +#define FUN_WSACANCELASYNCREQUEST 108 // +#define FUN_WSASETBLOCKINGHOOK 109 // +#define FUN_WSAUNHOOKBLOCKINGHOOK 110 // +#define FUN_WSAGETLASTERROR 111 // +#define FUN_WSASETLASTERROR 112 // +#define FUN_WSACANCELBLOCKINGCALL 113 // +#define FUN_WSAISBLOCKING 114 // +#define FUN_WSASTARTUP 115 // +#define FUN_WSACLEANUP 116 // + +#define FUN___WSAFDISSET 151 // + +/*++ + + Winsock function prototypes - the seemingly unimportant number in the + comment on each function MUST match the ones in the list above!!! + + !! BE WARNED !! + +--*/ + +typedef struct _ACCEPT16 { /* ws1 */ + VPWORD AddressLength; + VPSOCKADDR Address; + HSOCKET16 hSocket; +} ACCEPT16; +typedef ACCEPT16 UNALIGNED *PACCEPT16; + +typedef struct _BIND16 { /* ws2 */ + WORD AddressLength; + VPSOCKADDR Address; + HSOCKET16 hSocket; +} BIND16; +typedef BIND16 UNALIGNED *PBIND16; + +typedef struct _CLOSESOCKET16 { /* ws3 */ + HSOCKET16 hSocket; +} CLOSESOCKET16; +typedef CLOSESOCKET16 UNALIGNED *PCLOSESOCKET16; + +typedef struct _CONNECT16 { /* ws4 */ + WORD AddressLength; + VPSOCKADDR Address; + HSOCKET16 hSocket; +} CONNECT16; +typedef CONNECT16 UNALIGNED *PCONNECT16; + +typedef struct _GETPEERNAME16 { /* ws5 */ + VPWORD AddressLength; + VPSOCKADDR Address; + HSOCKET16 hSocket; +} GETPEERNAME16; +typedef GETPEERNAME16 UNALIGNED *PGETPEERNAME16; + +typedef struct _GETSOCKNAME16 { /* ws6 */ + VPWORD AddressLength; + VPSOCKADDR Address; + HSOCKET16 hSocket; +} GETSOCKNAME16; +typedef GETSOCKNAME16 UNALIGNED *PGETSOCKNAME16; + +typedef struct _GETSOCKOPT16 { /* ws7 */ + VPWORD OptionLength; + VPBYTE OptionValue; + WORD OptionName; + WORD Level; + HSOCKET16 hSocket; +} GETSOCKOPT16; +typedef GETSOCKOPT16 UNALIGNED *PGETSOCKOPT16; + +typedef struct _HTONL16 { /* ws8 */ + DWORD HostLong; +} HTONL16; +typedef HTONL16 UNALIGNED *PHTONL16; + +typedef struct _HTONS16 { /* ws9 */ + WORD HostShort; +} HTONS16; +typedef HTONS16 UNALIGNED *PHTONS16; + +typedef struct _INET_ADDR16 { /* ws10 */ + VPSZ cp; +} INET_ADDR16; +typedef INET_ADDR16 UNALIGNED *PINET_ADDR16; + +typedef struct _INET_NTOA16 { /* ws11 */ + IN_ADDR16 in; +} INET_NTOA16; +typedef INET_NTOA16 UNALIGNED *PINET_NTOA16; + +typedef struct _IOCTLSOCKET16 { /* ws12 */ + VPDWORD Argument; + DWORD Command; + HSOCKET16 hSocket; +} IOCTLSOCKET16; +typedef IOCTLSOCKET16 UNALIGNED *PIOCTLSOCKET16; + +typedef struct _LISTEN16 { /* ws13 */ + WORD Backlog; + HSOCKET16 hSocket; +} LISTEN16; +typedef LISTEN16 UNALIGNED *PLISTEN16; + +typedef struct _NTOHL16 { /* ws14 */ + DWORD NetLong; +} NTOHL16; +typedef NTOHL16 UNALIGNED *PNTOHL16; + +typedef struct _NTOHS16 { /* ws15 */ + WORD NetShort; +} NTOHS16; +typedef NTOHS16 UNALIGNED *PNTOHS16; + +typedef struct _RECV16 { /* ws16 */ + WORD Flags; + WORD BufferLength; + VPBYTE Buffer; + HSOCKET16 hSocket; +} RECV16; +typedef RECV16 UNALIGNED *PRECV16; + +typedef struct _RECVFROM16 { /* ws17 */ + VPWORD AddressLength; + VPSOCKADDR Address; + WORD Flags; + WORD BufferLength; + VPBYTE Buffer; + HSOCKET16 hSocket; +} RECVFROM16; +typedef RECVFROM16 UNALIGNED *PRECVFROM16; + +typedef struct _SELECT16 { /* ws18 */ + VPTIMEVAL16 Timeout; + VPFD_SET16 Exceptfds; + VPFD_SET16 Writefds; + VPFD_SET16 Readfds; + WORD HandleCount; +} SELECT16; +typedef SELECT16 UNALIGNED *PSELECT16; + +typedef struct _SEND16 { /* ws19 */ + WORD Flags; + WORD BufferLength; + VPBYTE Buffer; + HSOCKET16 hSocket; +} SEND16; +typedef SEND16 UNALIGNED *PSEND16; + +typedef struct _SENDTO16 { /* ws20 */ + WORD AddressLength; + VPSOCKADDR Address; + WORD Flags; + WORD BufferLength; + VPBYTE Buffer; + HSOCKET16 hSocket; +} SENDTO16; +typedef SENDTO16 UNALIGNED *PSENDTO16; + +typedef struct _SETSOCKOPT16 { /* ws21 */ + WORD OptionLength; + VPBYTE OptionValue; + WORD OptionName; + WORD Level; + HSOCKET16 hSocket; +} SETSOCKOPT16; +typedef SETSOCKOPT16 UNALIGNED *PSETSOCKOPT16; + +typedef struct _SHUTDOWN16 { /* ws22 */ + WORD How; + HSOCKET16 hSocket; +} SHUTDOWN16; +typedef SHUTDOWN16 UNALIGNED *PSHUTDOWN16; + +typedef struct _SOCKET16 { /* ws23 */ + WORD Protocol; + WORD Type; + WORD AddressFamily; +} SOCKET16; +typedef SOCKET16 UNALIGNED *PSOCKET16; + +typedef struct _GETHOSTBYADDR16 { /* ws51 */ + WORD Type; + WORD Length; + VPBYTE Address; +} GETHOSTBYADDR16; +typedef GETHOSTBYADDR16 UNALIGNED *PGETHOSTBYADDR16; + +typedef struct _GETHOSTBYNAME16 { /* ws52 */ + VPSZ Name; +} GETHOSTBYNAME16; +typedef GETHOSTBYNAME16 UNALIGNED *PGETHOSTBYNAME16; + +typedef struct _GETPROTOBYNAME16 { /* ws53 */ + VPSZ Name; +} GETPROTOBYNAME16; +typedef GETPROTOBYNAME16 UNALIGNED *PGETPROTOBYNAME16; + +typedef struct _GETPROTOBYNUMBER16 { /* ws54 */ + WORD Protocol; +} GETPROTOBYNUMBER16; +typedef GETPROTOBYNUMBER16 UNALIGNED *PGETPROTOBYNUMBER16; + +typedef struct _GETSERVBYNAME16 { /* ws55 */ + VPSZ Protocol; + VPSZ Name; +} GETSERVBYNAME16; +typedef GETSERVBYNAME16 UNALIGNED *PGETSERVBYNAME16; + +typedef struct _GETSERVBYPORT16 { /* ws56 */ + VPSZ Protocol; + WORD Port; +} GETSERVBYPORT16; +typedef GETSERVBYPORT16 UNALIGNED *PGETSERVBYPORT16; + +typedef struct _GETHOSTNAME16 { /* ws57 */ + WORD NameLength; + VPSZ Name; +} GETHOSTNAME16; +typedef GETHOSTNAME16 UNALIGNED *PGETHOSTNAME16; + +typedef struct _WSAASYNCSELECT16 { /* ws101 */ + DWORD lEvent; + WORD wMsg; + HWND16 hWnd; + HSOCKET16 hSocket; +} WSAASYNCSELECT16; +typedef WSAASYNCSELECT16 UNALIGNED *PWSAASYNCSELECT16; + +typedef struct _WSAASYNCGETHOSTBYADDR16 { /* ws102 */ + WORD BufferLength; + VPBYTE Buffer; + WORD Type; + WORD Length; + VPBYTE Address; + WORD wMsg; + HWND16 hWnd; +} WSAASYNCGETHOSTBYADDR16; +typedef WSAASYNCGETHOSTBYADDR16 UNALIGNED *PWSAASYNCGETHOSTBYADDR16; + +typedef struct _WSAASYNCGETHOSTBYNAME16 { /* ws103 */ + WORD BufferLength; + VPBYTE Buffer; + VPSZ Name; + WORD wMsg; + HWND16 hWnd; +} WSAASYNCGETHOSTBYNAME16; +typedef WSAASYNCGETHOSTBYNAME16 UNALIGNED *PWSAASYNCGETHOSTBYNAME16; + +typedef struct _WSAASYNCGETPROTOBYNUMBER16 { /* ws104 */ + WORD BufferLength; + VPBYTE Buffer; + WORD Number; + WORD wMsg; + HWND16 hWnd; +} WSAASYNCGETPROTOBYNUMBER16; +typedef WSAASYNCGETPROTOBYNUMBER16 UNALIGNED *PWSAASYNCGETPROTOBYNUMBER16; + +typedef struct _WSAASYNCGETPROTOBYNAME16 { /* ws105 */ + WORD BufferLength; + VPBYTE Buffer; + VPSZ Name; + WORD wMsg; + HWND16 hWnd; +} WSAASYNCGETPROTOBYNAME16; +typedef WSAASYNCGETPROTOBYNAME16 UNALIGNED *PWSAASYNCGETPROTOBYNAME16; + +typedef struct _WSAASYNCGETSERVBYPORT16 { /* ws106 */ + WORD BufferLength; + VPBYTE Buffer; + VPSZ Protocol; + WORD Port; + WORD wMsg; + HWND16 hWnd; +} WSAASYNCGETSERVBYPORT16; +typedef WSAASYNCGETSERVBYPORT16 UNALIGNED *PWSAASYNCGETSERVBYPORT16; + +typedef struct _WSAASYNCGETSERVBYNAME16 { /* ws107 */ + WORD BufferLength; + VPBYTE Buffer; + VPSZ Protocol; + VPSZ Name; + WORD wMsg; + HWND16 hWnd; +} WSAASYNCGETSERVBYNAME16; +typedef WSAASYNCGETSERVBYNAME16 UNALIGNED *PWSAASYNCGETSERVBYNAME16; + +typedef struct _WSACANCELASYNCREQUEST16 { /* ws108 */ + WORD hAsyncTaskHandle; +} WSACANCELASYNCREQUEST16; +typedef WSACANCELASYNCREQUEST16 UNALIGNED *PWSACANCELASYNCREQUEST16; + +typedef struct _WSASETBLOCKINGHOOK16 { /* ws109 */ + VPWNDPROC lpBlockFunc; +} WSASETBLOCKINGHOOK16; +typedef WSASETBLOCKINGHOOK16 UNALIGNED *PWSASETBLOCKINGHOOK16; + +typedef struct _WSASETLASTERROR16 { /* ws112 */ + WORD Error; +} WSASETLASTERROR16; +typedef WSASETLASTERROR16 UNALIGNED *PWSASETLASTERROR16; + +typedef struct _WSASTARTUP16 { /* ws115 */ + VPWSADATA16 lpWSAData; + WORD wVersionRequired; +} WSASTARTUP16; +typedef WSASTARTUP16 UNALIGNED *PWSASTARTUP16; + +typedef struct ___WSAFDISSET16 { /* ws151 */ + VPFD_SET16 Set; + HSOCKET16 hSocket; +} __WSAFDISSET16; +typedef __WSAFDISSET16 UNALIGNED *P__WSAFDISSET16; + +/* XLATOFF */ +#pragma pack() +/* XLATON */ + +#define FUN___WSAFDISSET 151 // + diff --git a/private/mvdm/inc/x86def.h b/private/mvdm/inc/x86def.h new file mode 100644 index 000000000..83088bb2e --- /dev/null +++ b/private/mvdm/inc/x86def.h @@ -0,0 +1,129 @@ +/*++ BUILD Version: 0001 + +Copyright (c) 1990 Microsoft Corporation + +Module Name: + + X86PC.H + +Abstract: + + This file contains macros, function prototypes, and externs for the + x86 emulator NT version of SoftPC v3.0. + +Author: + + Dave Hastings (daveh) 4-11-91 + +Revision History: + + Jeff Parsons (jeffpar) 14-May-1991 + Essentially copied this file from V86PC.H, except that I had to define + X86CONTEXT as the x86-compatible version of CONTEXT. + +--*/ + + +// +// Define the size of the 80387 save area, which is in the context frame. +// + +#define SIZE_OF_80387_ENVIRONMENT 108 +#define SIZE_OF_80387_REGISTERS 80 + +typedef struct _FLOATING_SAVE_AREA { + ULONG ControlWord; + ULONG StatusWord; + ULONG TagWord; + ULONG ErrorOffset; + ULONG ErrorSelector; + ULONG DataOffset; + ULONG DataSelector; + UCHAR RegisterArea[SIZE_OF_80387_REGISTERS]; +} FLOATING_SAVE_AREA; + +typedef FLOATING_SAVE_AREA *PFLOATING_SAVE_AREA; + + +// x86 Context Frame (copied from nti386.h) +// +// The layout of the record conforms to a standard call frame. +// + +typedef struct _X86CONTEXT { + + // + // The flags values within this flag control the contents of + // a CONTEXT record. + // + // If the context record is used as an input parameter, then + // for each portion of the context record controlled by a flag + // whose value is set, it is assumed that that portion of the + // context record contains valid context. If the context record + // is being used to modify a threads context, then only that + // portion of the threads context will be modified. + // + // If the context record is used as an IN OUT parameter to capture + // the context of a thread, then only those portions of the thread's + // context corresponding to set flags will be returned. + // + // The context record is never used as an OUT only parameter. + // + + ULONG ContextFlags; + + // + // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is + // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT + // included in CONTEXT_FULL. + // + + ULONG Dr0; + ULONG Dr1; + ULONG Dr2; + ULONG Dr3; + ULONG Dr6; + ULONG Dr7; + + // + // This section is specified/returned if the + // ContextFlags word contians the flag CONTEXT_FLOATING_POINT. + // + + FLOATING_SAVE_AREA FloatSave; + + // + // This section is specified/returned if the + // ContextFlags word contians the flag CONTEXT_SEGMENTS. + // + + ULONG SegGs; + ULONG SegFs; + ULONG SegEs; + ULONG SegDs; + + // + // This section is specified/returned if the + // ContextFlags word contians the flag CONTEXT_INTEGER. + // + + ULONG Edi; + ULONG Esi; + ULONG Ebx; + ULONG Edx; + ULONG Ecx; + ULONG Eax; + + // + // This section is specified/returned if the + // ContextFlags word contians the flag CONTEXT_CONTROL. + // + + ULONG Ebp; + ULONG Eip; + ULONG SegCs; // MUST BE SANITIZED + ULONG EFlags; // MUST BE SANITIZED + ULONG Esp; + ULONG SegSs; + +} X86CONTEXT, *PX86CONTEXT; diff --git a/private/mvdm/inc/xmsexp.h b/private/mvdm/inc/xmsexp.h new file mode 100644 index 000000000..f95de6d5b --- /dev/null +++ b/private/mvdm/inc/xmsexp.h @@ -0,0 +1,24 @@ +/*++ BUILD Version: 0001 + * + * MVDM v1.0 + * + * Copyright (c) 1991, Microsoft Corporation + * + * XMSEXP.H + * XMS exports + * + * History: + * 15-May-1991 Sudeep Bharati (sudeepb) + * Created. +--*/ + +extern BOOL XMSDispatch(ULONG iXMSSvc); +extern BOOL XMSInit(int argc, char *argv[]); + +/* + * handle for extended memory tracking. + * this is used by DPMI on risc so that + * DPMI and XMS can both allocate extended + * memory + */ +extern PVOID ExtMemSA; diff --git a/private/mvdm/inc/xmssvc.h b/private/mvdm/inc/xmssvc.h new file mode 100644 index 000000000..5546c9893 --- /dev/null +++ b/private/mvdm/inc/xmssvc.h @@ -0,0 +1,40 @@ +/** SVC Defines + * + * Revision history: + * + * sudeepb 15-May-1991 Created + * + * williamh 25-Sept-1992 Added UMB support BOPs + */ + + +/* XMSSVC - XMS SVC calls. + * + * This macro is used by himem.sys + * + */ + +/* ASM +include bop.inc + +xmssvc macro func + BOP BOP_XMS + db func + endm +*/ + +#define XMS_A20 0x00 +#define XMS_MOVEBLOCK 0x01 +#define XMS_ALLOCBLOCK 0x02 +#define XMS_FREEBLOCK 0x03 +#define XMS_SYSPAGESIZE 0x04 +#define XMS_EXTMEM 0x05 +#define XMS_INITUMB 0x06 +#define XMS_REQUESTUMB 0x07 +#define XMS_RELEASEUMB 0x08 +#define XMS_NOTIFYHOOKI15 0x09 +#define XMS_QUERYEXTMEM 0x0a +#define XMS_REALLOCBLOCK 0x0b +#define XMS_LASTSVC 0x0c + +extern BOOL XMSInit (int argc, char *argv[]); |