windows-nt/Source/XPSP1/NT/base/mvdm/inc/doswow.h

116 lines
3.1 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++ 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; // byte
DWORD lpSCS_ToSync;
DWORD lpSftAddr;
DWORD lpExterr; // word
DWORD lpExterrActionClass; // 2 bytes -- action and class
} DOSWOWDATA;
typedef DOSWOWDATA UNALIGNED *PDOSWOWDATA;
/* XLATOFF */
#pragma pack(1)
typedef struct _DOSPDB { // DOS Process Data Block
CHAR PDB_Not_Interested[44]; // Fields we are not interested in
USHORT PDB_environ; // segment of environment
DWORD PDB_User_stack;
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;
// execblock
typedef struct _DOSEXECBLOCK {
USHORT envseg; // env segment
ULONG lpcmdline; // command line tail
ULONG lpfcb1; // fcb1
ULONG lpfcb2; // fcb2
} DOSEXECBLOCK, UNALIGNED *PDOSEXECBLOCK;
#define NE_FLAGS_OFFSET 0xc
#define NEPROT 0x8 // runs in prot mode only
#define SF_NT_SEEK 0x0200
#pragma pack()
// these are demLFN structures that work with wow and dem
typedef VOID (*PDOSWOWUPDATETDBDIR)(UCHAR, LPSTR);
typedef BOOL (*PDOSWOWGETTDBDIR)(UCHAR Drive, LPSTR pCurrentDirectory);
typedef BOOL (*PDOSWOWDODIRECTHDPOPUP)(VOID);
typedef BOOL (*PDOSWOWGETCOMPATFLAGS)(LPDWORD lpdwCF, LPDWORD lpdwCFEx);
typedef struct tagWOWLFNInit {
PDOSWOWUPDATETDBDIR pDosWowUpdateTDBDir;
PDOSWOWGETTDBDIR pDosWowGetTDBDir;
PDOSWOWDODIRECTHDPOPUP pDosWowDoDirectHDPopup;
#if 0
PDOSWOWGETCOMPATFLAGS pDosWowGetCompatFlags;
#endif
} WOWLFNINIT, *PWOWLFNINIT;
/* XLATON */