101 lines
2.4 KiB
C
101 lines
2.4 KiB
C
#pragma pack(1)
|
|
|
|
/*
|
|
* Structure and equates of PIF files
|
|
*/
|
|
|
|
#define PIFEDITMAXPIF 1024 /* maximum PIF file size we support */
|
|
#define PIFEDITMAXPIFL 1024L
|
|
|
|
#define PIFNAMESIZE 30
|
|
#define PIFSTARTLOCSIZE 63
|
|
#define PIFDEFPATHSIZE 64
|
|
#define PIFPARAMSSIZE 64
|
|
#define PIFSHPROGSIZE 64
|
|
#define PIFSHDATASIZE 64
|
|
|
|
#define PIFEXTSIGSIZE 16
|
|
|
|
#define PIFSIZE 367 /* two bytes less, this is used for checksum */
|
|
|
|
typedef struct {
|
|
char extsig[PIFEXTSIGSIZE];
|
|
unsigned short extnxthdrfloff;
|
|
unsigned short extfileoffset;
|
|
unsigned short extsizebytes;
|
|
} PIFEXTHEADER;
|
|
|
|
#define LASTHEADERPTR 0xFFFF
|
|
#define STDHDRSIG "MICROSOFT PIFEX"
|
|
|
|
#define W386HDRSIG "WINDOWS 386 3.0"
|
|
#define W286HDRSIG30 "WINDOWS 286 3.0"
|
|
#define WNTHDRSIG31 "WINDOWS NT 3.1"
|
|
|
|
typedef struct {
|
|
char unknown;
|
|
char id;
|
|
char name[PIFNAMESIZE];
|
|
short maxmem;
|
|
short minmem;
|
|
char startfile[PIFSTARTLOCSIZE];
|
|
char MSflags;
|
|
char reserved;
|
|
char defpath[PIFDEFPATHSIZE];
|
|
char params[PIFPARAMSSIZE];
|
|
char screen;
|
|
char cPages;
|
|
unsigned char lowVector;
|
|
unsigned char highVector;
|
|
char rows;
|
|
char cols;
|
|
char rowoff;
|
|
char coloff;
|
|
unsigned short sysmem;
|
|
char shprog[PIFSHPROGSIZE];
|
|
char shdata[PIFSHDATASIZE];
|
|
unsigned char behavior;
|
|
unsigned char sysflags;
|
|
PIFEXTHEADER stdpifext;
|
|
} PIFNEWSTRUCT;
|
|
|
|
typedef struct {
|
|
short maxmem;
|
|
short minmem;
|
|
unsigned short PfFPriority;
|
|
unsigned short PfBPriority;
|
|
short PfMaxEMMK;
|
|
unsigned short PfMinEMMK;
|
|
short PfMaxXmsK;
|
|
unsigned short PfMinXmsK;
|
|
unsigned long PfW386Flags;
|
|
unsigned long PfW386Flags2;
|
|
unsigned short PfHotKeyScan;
|
|
unsigned short PfHotKeyShVal;
|
|
unsigned short PfHotKeyShMsk;
|
|
unsigned char PfHotKeyVal;
|
|
unsigned char PfHotKeyPad[9];
|
|
char params[PIFPARAMSSIZE];
|
|
} PIF386EXT;
|
|
|
|
/* Windows NT extension format */
|
|
typedef struct
|
|
{
|
|
DWORD dwWNTFlags;
|
|
DWORD dwRes1;
|
|
DWORD dwRes2;
|
|
char achConfigFile[PIFDEFPATHSIZE];
|
|
char achAutoexecFile[PIFDEFPATHSIZE];
|
|
} PIFWNTEXT;
|
|
|
|
// equates for dwWNTFlags
|
|
#define NTPIF_SUBSYSMASK 0x0000000F // sub system type mask
|
|
#define SUBSYS_DEFAULT 0
|
|
#define SUBSYS_DOS 1
|
|
#define SUBSYS_WOW 2
|
|
#define SUBSYS_OS2 3
|
|
|
|
#define PIFWNTEXTSIZE sizeof(PIFWNTEXT)
|
|
|
|
#pragma pack()
|