You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
768 lines
30 KiB
768 lines
30 KiB
/*
|
|
* Microsoft Confidential
|
|
* Copyright (C) Microsoft Corporation 1991-1994
|
|
* All Rights Reserved.
|
|
*
|
|
*
|
|
* PIF.H
|
|
* DOS Program Information File structures, constants, etc.
|
|
*/
|
|
|
|
|
|
#ifndef _INC_PIF
|
|
#define _INC_PIF
|
|
|
|
#define PIFNAMESIZE 30
|
|
#define PIFSTARTLOCSIZE 63
|
|
#define PIFDEFPATHSIZE 64
|
|
#define PIFPARAMSSIZE 64
|
|
#define PIFSHPROGSIZE 64
|
|
#define PIFSHDATASIZE 64
|
|
#define PIFDEFFILESIZE 80
|
|
|
|
#ifndef LF_FACESIZE
|
|
#define LF_FACESIZE 32
|
|
#endif
|
|
|
|
#define LARGEST_GROUP sizeof(STDPIF)
|
|
|
|
#define OPENPROPS_NONE 0x0000
|
|
#define OPENPROPS_RAWIO 0x0001
|
|
|
|
#define GETPROPS_NONE 0x0000
|
|
#define GETPROPS_RAWIO 0x0001
|
|
#define GETPROPS_EXTENDED 0x0004
|
|
|
|
#define SETPROPS_NONE 0x0000
|
|
#define SETPROPS_RAWIO 0x0001
|
|
#define SETPROPS_CACHE 0x0002
|
|
#define SETPROPS_EXTENDED 0x0004
|
|
|
|
#define FLUSHPROPS_NONE 0x0000
|
|
#define FLUSHPROPS_DISCARD 0x0001
|
|
|
|
#define CLOSEPROPS_NONE 0x0000
|
|
#define CLOSEPROPS_DISCARD 0x0001
|
|
|
|
#define LOADPROPLIB_DEFER 0x0001
|
|
|
|
|
|
/* XLATOFF */
|
|
#ifndef FAR
|
|
#define FAR
|
|
#endif
|
|
/* XLATON */
|
|
|
|
#ifdef RECT
|
|
#define _INC_WINDOWS
|
|
#endif
|
|
|
|
#ifndef _INC_WINDOWS
|
|
|
|
/* ASM
|
|
RECT struc
|
|
rcLeft dw ?
|
|
rcTop dw ?
|
|
rcRight dw ?
|
|
rcBottom dw ?
|
|
RECT ends
|
|
*/
|
|
|
|
/* XLATOFF */
|
|
typedef struct tagRECT {
|
|
int left;
|
|
int top;
|
|
int right;
|
|
int bottom;
|
|
} RECT;
|
|
typedef RECT *PRECT;
|
|
typedef RECT FAR *LPRECT;
|
|
/* XLATON */
|
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
* Property groups, used by PIFMGR.DLL and VxD interfaces
|
|
*
|
|
* The structures for each of the pre-defined, ordinal-based groups
|
|
* is a logical view of data in the associated PIF file, if any -- not a
|
|
* physical view.
|
|
*/
|
|
|
|
#define GROUP_PRG 1 // program group
|
|
|
|
#define PRG_DEFAULT (PRG_CLOSEONEXIT | PRG_AUTOWINEXEC)
|
|
#define PRG_CLOSEONEXIT 0x0001 // MSflags & EXITMASK
|
|
//#define PRG_RESERVED 0x0002 // Reserved
|
|
#define PRG_AUTOWINEXEC 0x0004 // !(PfW386Flags & fDisAutoWinExec)
|
|
|
|
#define PRGINIT_DEFAULT 0
|
|
#define PRGINIT_MINIMIZED 0x0001 // PfW386Flags & fMinimized (NEW)
|
|
#define PRGINIT_MAXIMIZED 0x0002 // PfW386Flags & fMaximized (NEW)
|
|
#define PRGINIT_USEPIFICON 0x0004 // PfW386Flags & fUsePIFIcon (NEW)
|
|
#define PRGINIT_REALMODE 0x0008 // PfW386Flags & fRealMode (NEW)
|
|
#define PRGINIT_NOPIF 0x1000 // (NEW -- informational only)
|
|
#define PRGINIT_DEFAULTPIF 0x2000 // (NEW -- informational only)
|
|
|
|
#define ICONFILE_DEFAULT "PIFMGR.DLL"
|
|
#define ICONINDEX_DEFAULT 0
|
|
|
|
typedef struct PROPPRG { /* prg */
|
|
WORD flPrg; // see PRG_ flags
|
|
WORD flPrgInit; // see PRGINIT_ flags
|
|
char achTitle[PIFNAMESIZE]; // name[30]
|
|
char achCmdLine[PIFSTARTLOCSIZE]; // startfile[63] + params[64]
|
|
char achWorkDir[PIFDEFPATHSIZE]; // defpath[64]
|
|
WORD wHotKey; // PfHotKeyScan thru PfHotKeyVal
|
|
BYTE rgbReserved[6]; // (Reserved)
|
|
char achIconFile[PIFDEFFILESIZE]; // (NEW)
|
|
WORD wIconIndex; // (NEW)
|
|
char achPIFFile[PIFDEFFILESIZE]; // (NEW)
|
|
} PROPPRG;
|
|
typedef PROPPRG *PPROPPRG;
|
|
typedef PROPPRG FAR *LPPROPPRG;
|
|
typedef const PROPPRG FAR *LPCPROPPRG;
|
|
|
|
|
|
#define GROUP_TSK 2 // multi-tasking group
|
|
|
|
#define TSK_DEFAULT (TSK_BACKGROUND)
|
|
#define TSK_ALLOWCLOSE 0x0001 // PfW386Flags & fEnableClose (SAME BIT)
|
|
#define TSK_BACKGROUND 0x0002 // PfW386Flags & fBackground (SAME BIT)
|
|
#define TSK_EXCLUSIVE 0x0004 // PfW386Flags & fExclusive (SAME BIT)
|
|
#define TSK_FAKEBOOST 0x0008 // (NEW -- informational only)
|
|
#define TSK_NOWARNTERMINATE 0x0010 // Don't warn before terminating (NEW)
|
|
#define TSK_NOSCREENSAVER 0x0020 // Do not activate screen saver (NEW)
|
|
|
|
#define TSKINIT_DEFAULT 0
|
|
|
|
#define TSKFGND_DEFAULT 75 // normal fgnd % (NEW)
|
|
#define TSKBGND_DEFAULT 25 // normal bgnd % (NEW)
|
|
|
|
#define TSKFGND_OLD_DEFAULT 100 // normal fgnd setting
|
|
#define TSKBGND_OLD_DEFAULT 50 // normal bgnd setting
|
|
|
|
#define TSKBOOSTTIME_MIN 0 // in # milliseconds
|
|
#define TSKBOOSTTIME_DEFAULT 1 // in # milliseconds
|
|
#define TSKBOOSTTIME_MAX 5000 // in # milliseconds
|
|
#define TSKIDLEDELAY_MIN 0 // in # milliseconds
|
|
#define TSKIDLEDELAY_DEFAULT 500 // in # milliseconds
|
|
#define TSKIDLEDELAY_MAX 5000 // in # milliseconds
|
|
#define TSKIDLESENS_DEFAULT 50 // % (min-max == 0-100)
|
|
|
|
typedef struct PROPTSK { /* tsk */
|
|
WORD flTsk; // see TSK_ flags
|
|
WORD flTskInit; // see TSKINIT_ flags
|
|
short iFgndBoost; // PfFPriority (NEW, converted to boost)
|
|
short iBgndBoost; // PfBPriority (NEW, converted to boost)
|
|
WORD msKeyBoostTime; // ([386Enh]:KeyBoostTime)
|
|
WORD msKeyIdleDelay; // ([386Enh]:KeyIdleDelay)
|
|
WORD wIdleSensitivity; // PfW386Flags & fPollingDetect (NEW, %)
|
|
} PROPTSK;
|
|
typedef PROPTSK *PPROPTSK;
|
|
typedef PROPTSK FAR *LPPROPTSK;
|
|
|
|
|
|
#define GROUP_VID 3 // video group
|
|
|
|
#define VID_DEFAULT (VID_TEXTEMULATE | VID_FULLSCREENGRFX | VID_AUTOSUSPEND)
|
|
#define VID_TEXTEMULATE 0x0001 // PfW386Flags2 & fVidTxtEmulate (SAME BIT)
|
|
#define VID_TEXTTRAP 0x0002 // PfW386Flags2 & fVidNoTrpTxt (INVERTED BIT)
|
|
#define VID_LOGRFXTRAP 0x0004 // PfW386Flags2 & fVidNoTrpLRGrfx (INVERTED BIT)
|
|
#define VID_HIGRFXTRAP 0x0008 // PfW386Flags2 & fVidNoTrpHRGrfx (INVERTED BIT)
|
|
#define VID_RETAINMEMORY 0x0080 // PfW386Flags2 & fVidRetainAllo (SAME BIT)
|
|
#define VID_FULLSCREEN 0x0100 // PfW386Flags & fFullScreen
|
|
#define VID_FULLSCREENGRFX 0x0200 // PfW386Flags2 & fFullScreenGrfx (NEW)
|
|
|
|
#define VIDINIT_DEFAULT 0
|
|
|
|
#define VIDMODE_DEFAULT VIDMODE_TEXT
|
|
#define VIDMODE_TEXT 1 // PfW386Flags2 & fVidTextMd
|
|
#define VIDMODE_LOGRFX 2 // PfW386Flags2 & fVidLowRsGrfxMd
|
|
#define VIDMODE_HIGRFX 3 // PfW386Flags2 & fVidHghRsGrfxMd
|
|
|
|
#define VIDSCROLLFREQ_MIN 1 // in # lines
|
|
#define VIDSCROLLFREQ_DEFAULT 2 // in # lines
|
|
#define VIDSCROLLFREQ_MAX 25 // in # lines
|
|
|
|
#define VIDUPDATEFREQ_MIN 10 // in # milliseconds
|
|
#define VIDUPDATEFREQ_DEFAULT 50 // in # milliseconds
|
|
#define VIDUPDATEFREQ_MAX 5000 // in # milliseconds
|
|
|
|
#define VIDSCREENLINES_MIN 0 // in # lines (0 = use VDD value)
|
|
#define VIDSCREENLINES_DEFAULT 0 // in # lines
|
|
|
|
typedef struct PROPVID { /* vid */
|
|
WORD flVid; // see VID_ flags
|
|
WORD flVidInit; // see VIDINIT_ flags
|
|
WORD iVidMode; // see VIDMODE_ ordinals
|
|
WORD cScrollFreq; // ([386Enh]:ScrollFrequency)
|
|
WORD msUpdateFreq; // ([386Enh]:WindowUpdateTime)
|
|
WORD cScreenLines; // ([NonWindowsApp]:ScreenLines)
|
|
BYTE abTextColorRemap[16]; // (NEW)
|
|
} PROPVID;
|
|
typedef PROPVID *PPROPVID;
|
|
typedef PROPVID FAR *LPPROPVID;
|
|
|
|
|
|
#define GROUP_MEM 4 // memory group
|
|
|
|
#define MEM_DEFAULT 0
|
|
|
|
#define MEMINIT_DEFAULT 0
|
|
#define MEMINIT_NOHMA 0x0001 // PfW386Flags & fNoHMA
|
|
#define MEMINIT_LOWLOCKED 0x0002 // PfW386Flags & fVMLocked
|
|
#define MEMINIT_EMSLOCKED 0x0004 // PfW386Flags & fEMSLocked
|
|
#define MEMINIT_XMSLOCKED 0x0008 // PfW386Flags & fXMSLocked
|
|
#define MEMINIT_GLOBALPROTECT 0x0010 // PfW386Flags & fGlobalProtect (NEW)
|
|
#define MEMINIT_STRAYPTRDETECT 0x0020 // PfW386Flags & fStrayPtrDetect(NEW)
|
|
|
|
#define MEMLOW_MIN_MIN 0xFFFF // in KB
|
|
#define MEMLOW_MIN_DEFAULT 0 // in KB
|
|
#define MEMLOW_MIN_MAX 640 // in KB
|
|
|
|
#define MEMLOW_MAX_MIN 0xFFFF // in KB
|
|
#define MEMLOW_MAX_DEFAULT 0xFFFF // in KB
|
|
#define MEMLOW_MAX_MAX 640 // in KB
|
|
|
|
#define MEMEMS_MIN_MIN 0 // in KB
|
|
#define MEMEMS_MIN_DEFAULT 0 // in KB
|
|
#define MEMEMS_MIN_MAX 16384 // in KB
|
|
|
|
#define MEMEMS_MAX_MIN 0xFFFF // in KB (-1 means "no limit")
|
|
#define MEMEMS_MAX_DEFAULT 1024 // in KB
|
|
#define MEMEMS_MAX_MAX 16384 // in KB
|
|
|
|
#define MEMXMS_MIN_MIN 0 // in KB
|
|
#define MEMXMS_MIN_DEFAULT 0 // in KB
|
|
#define MEMXMS_MIN_MAX 16384 // in KB
|
|
|
|
#define MEMXMS_MAX_MIN 0xFFFF // in KB (-1 means "no limit")
|
|
#define MEMXMS_MAX_DEFAULT 1024 // in KB
|
|
#define MEMXMS_MAX_MAX 16384 // in KB
|
|
|
|
typedef struct PROPMEM { /* mem */
|
|
WORD flMem; // see MEM_ flags
|
|
WORD flMemInit; // see MEMINIT_ flags
|
|
WORD wMinLow; // PfW386minmem
|
|
WORD wMaxLow; // PfW386maxmem
|
|
WORD wMinEMS; // PfMinEMMK
|
|
WORD wMaxEMS; // PfMaxEMMK
|
|
WORD wMinXMS; // PfMinXmsK
|
|
WORD wMaxXMS; // PfMaxXmsK
|
|
} PROPMEM;
|
|
typedef PROPMEM *PPROPMEM;
|
|
typedef PROPMEM FAR *LPPROPMEM;
|
|
|
|
|
|
#define GROUP_KBD 5 // keyboard group
|
|
|
|
#define KBD_DEFAULT (KBD_FASTPASTE)
|
|
#define KBD_FASTPASTE 0x0001 // PfW386Flags & fINT16Paste
|
|
#define KBD_NOALTTAB 0x0020 // PfW386Flags & fALTTABdis (SAME BIT)
|
|
#define KBD_NOALTESC 0x0040 // PfW386Flags & fALTESCdis (SAME BIT)
|
|
#define KBD_NOALTSPACE 0x0080 // PfW386Flags & fALTSPACEdis (SAME BIT)
|
|
#define KBD_NOALTENTER 0x0100 // PfW386Flags & fALTENTERdis (SAME BIT)
|
|
#define KBD_NOALTPRTSC 0x0200 // PfW386Flags & fALTPRTSCdis (SAME BIT)
|
|
#define KBD_NOPRTSC 0x0400 // PfW386Flags & fPRTSCdis (SAME BIT)
|
|
#define KBD_NOCTRLESC 0x0800 // PfW386Flags & fCTRLESCdis (SAME BIT)
|
|
|
|
#define KBDINIT_DEFAULT 0
|
|
|
|
#define KBDALTDELAY_MIN 1
|
|
#define KBDALTDELAY_DEFAULT 5
|
|
#define KBDALTDELAY_MAX 5000
|
|
|
|
#define KBDALTPASTEDELAY_MIN 1
|
|
#define KBDALTPASTEDELAY_DEFAULT 25
|
|
#define KBDALTPASTEDELAY_MAX 5000
|
|
|
|
#define KBDPASTEDELAY_MIN 1
|
|
#define KBDPASTEDELAY_DEFAULT 3
|
|
#define KBDPASTEDELAY_MAX 5000
|
|
|
|
#define KBDPASTEFULLDELAY_MIN 1
|
|
#define KBDPASTEFULLDELAY_DEFAULT 200
|
|
#define KBDPASTEFULLDELAY_MAX 5000
|
|
|
|
#define KBDPASTETIMEOUT_MIN 1
|
|
#define KBDPASTETIMEOUT_DEFAULT 1000
|
|
#define KBDPASTETIMEOUT_MAX 5000
|
|
|
|
#define KBDPASTESKIP_MIN 1
|
|
#define KBDPASTESKIP_DEFAULT 2
|
|
#define KBDPASTESKIP_MAX 100
|
|
|
|
#define KBDPASTECRSKIP_MIN 1
|
|
#define KBDPASTECRSKIP_DEFAULT 10
|
|
#define KBDPASTECRSKIP_MAX 100
|
|
|
|
typedef struct PROPKBD { /* kbd */
|
|
WORD flKbd; // see KBD_ flags
|
|
WORD flKbdInit; // see KBDINIT_ flags
|
|
WORD msAltDelay; // ([386Enh]:AltKeyDelay)
|
|
WORD msAltPasteDelay; // ([386Enh]:AltPasteDelay)
|
|
WORD msPasteDelay; // ([386Enh]:KeyPasteDelay)
|
|
WORD msPasteFullDelay; // ([386Enh]:KeyBufferDelay)
|
|
WORD msPasteTimeout; // ([386Enh]:KeyPasteTimeOut)
|
|
WORD cPasteSkip; // ([386Enh]:KeyPasteSkipCount)
|
|
WORD cPasteCRSkip; // ([386Enh]:KeyPasteCRSkipCount)
|
|
} PROPKBD;
|
|
typedef PROPKBD *PPROPKBD;
|
|
typedef PROPKBD FAR *LPPROPKBD;
|
|
|
|
|
|
#define GROUP_MSE 6 // mouse group
|
|
|
|
/* No VxD currently pays attention to PROPMSE. VMDOSAPP should know how to
|
|
* handle all cases resulting from a change in these flags.
|
|
*
|
|
* Note that MSE_WINDOWENABLE corresponds to the Windows NT "QuickEdit"
|
|
* property, except backwards.
|
|
*/
|
|
|
|
#define MSE_DEFAULT (MSE_WINDOWENABLE)
|
|
#define MSE_WINDOWENABLE 0x0001 // ([NonWindowsApp]:MouseInDosBox)
|
|
#define MSE_EXCLUSIVE 0x0002 // (NEW)
|
|
|
|
#define MSEINIT_DEFAULT 0 // default flags
|
|
|
|
typedef struct PROPMSE { /* mse */
|
|
WORD flMse; // see MSE_ flags
|
|
WORD flMseInit; // see MSEINIT_ flags
|
|
} PROPMSE;
|
|
typedef PROPMSE *PPROPMSE;
|
|
typedef PROPMSE FAR *LPPROPMSE;
|
|
|
|
|
|
#define GROUP_TMR 7 // timer group
|
|
|
|
#define TMR_DEFAULT 0
|
|
#define TMR_TRAPTMRPORTS 0x0001 // (NEW)
|
|
#define TMR_FULLBGNDTICKS 0x0002 // (NEW)
|
|
#define TMR_BURSTMODE 0x0004 // (NEW)
|
|
#define TMR_PATCHEOI 0x0008 // (NEW)
|
|
|
|
#define TMRINIT_DEFAULT 0
|
|
|
|
#define TMRBURSTDELAY_MIN 0
|
|
#define TMRBURSTDELAY_DEFAULT 0
|
|
#define TMRBURSTDELAY_MAX 100
|
|
|
|
typedef struct PROPTMR { /* tmr */
|
|
WORD flTmr; // see TMR_ flags
|
|
WORD flTmrInit; // see TMRINIT_ flags
|
|
WORD wBurstDelay;
|
|
} PROPTMR;
|
|
typedef PROPTMR *PPROPTMR;
|
|
typedef PROPTMR FAR *LPPROPTMR;
|
|
|
|
// Extended TIMER data
|
|
|
|
typedef struct PROPTMREXT { /* tmrext */
|
|
PROPTMR tmrData; //
|
|
WORD msIntFreq; // current interrupt frequency (in ms.)
|
|
WORD wExecPercent; // current *actual* execution percentage
|
|
} PROPTMREXT;
|
|
typedef PROPTMREXT *PPROPTMREXT;
|
|
typedef PROPTMREXT FAR *LPPROPTMREXT;
|
|
|
|
|
|
#define GROUP_FNT 11 // font group
|
|
|
|
#define FNT_DEFAULT (FNT_BOTHFONTS)
|
|
#define FNT_RASTERFONTS 0x0004 // allow raster fonts in dialog
|
|
#define FNT_TTFONTS 0x0008 // allow truetype fonts in dialog
|
|
#define FNT_BOTHFONTS (FNT_RASTERFONTS | FNT_TTFONTS)
|
|
#define FNT_AUTOSIZE 0x0010 // enable auto-sizing
|
|
#define FNT_RASTER 0x0400 // specified font is raster
|
|
#define FNT_TT 0x0800 // specified font is truetype
|
|
|
|
#define FNT_FONTMASK (FNT_BOTHFONTS)
|
|
#define FNT_FONTMASKBITS 2 // # of bits shifted left
|
|
|
|
#define FNTINIT_DEFAULT 0
|
|
#define FNTINIT_NORESTORE 0x0001 // don't restore on restart
|
|
|
|
typedef struct PROPFNT { /* fnt */
|
|
WORD flFnt; // see FNT_ flags
|
|
WORD flFntInit; // see FNTINIT_ flags
|
|
WORD cxFont; // width of desired font
|
|
WORD cyFont; // height of desired font
|
|
WORD cxFontActual; // actual width of desired font
|
|
WORD cyFontActual; // actual height of desired font
|
|
char achRasterFaceName[LF_FACESIZE]; // name to use for raster font
|
|
char achTTFaceName[LF_FACESIZE]; // name to use for tt font
|
|
#ifdef JAPAN //CodePage Support
|
|
WORD wCharSet; // Character Set
|
|
#endif
|
|
} PROPFNT;
|
|
typedef PROPFNT *PPROPFNT;
|
|
typedef PROPFNT FAR *LPPROPFNT;
|
|
|
|
#define GROUP_WIN 12 // window group
|
|
|
|
#define WIN_DEFAULT (WIN_SAVESETTINGS)
|
|
#define WIN_SAVESETTINGS 0x0001 // save settings on exit (default)
|
|
#define WIN_TOOLBAR 0x0002 // enable toolbar
|
|
|
|
#define WININIT_DEFAULT 0
|
|
#define WININIT_NORESTORE 0x0001 // don't restore on restart
|
|
|
|
typedef struct PROPWIN { /* win */
|
|
WORD flWin; // see WIN_ flags
|
|
WORD flWinInit; // see WININIT flags
|
|
WORD cxCells; // width in cells
|
|
WORD cyCells; // height in cells
|
|
WORD cxClient; // width of client window
|
|
WORD cyClient; // height of client window
|
|
WORD cxWindow; // width of entire window
|
|
WORD cyWindow; // height of entire window
|
|
#ifdef WPF_SETMINPOSITION // if windows.h is included
|
|
WINDOWPLACEMENT wp; // then use WINDOWPLACEMENT type
|
|
#else // else define equivalent structure
|
|
WORD wLength;
|
|
WORD wShowFlags;
|
|
WORD wShowCmd;
|
|
WORD xMinimize;
|
|
WORD yMinimize;
|
|
WORD xMaximize;
|
|
WORD yMaximize;
|
|
RECT rcNormal;
|
|
#endif
|
|
} PROPWIN;
|
|
typedef PROPWIN *PPROPWIN;
|
|
typedef PROPWIN FAR *LPPROPWIN;
|
|
|
|
#define GROUP_ENV 13 // environment/startup group
|
|
|
|
#define ENV_DEFAULT 0
|
|
|
|
#define ENVINIT_DEFAULT (ENVINIT_INSTRUCTIONS)
|
|
#define ENVINIT_INSTRUCTIONS 0x0001 // ([386Enh]:DOSPromptExitInstruc)
|
|
|
|
#define ENVSIZE_MIN 0
|
|
#define ENVSIZE_DEFAULT 0
|
|
#define ENVSIZE_MAX 4096
|
|
|
|
typedef struct PROPENV { /* env */
|
|
WORD flEnv; // see ENV_ flags
|
|
WORD flEnvInit; // see ENVINIT_ flags
|
|
char achBatchFile[PIFDEFFILESIZE]; // (NEW)
|
|
WORD cbEnvironment; // ([386Enh]:CommandEnvSize)
|
|
#ifdef JAPAN //CodePage Support
|
|
WORD wCodePage; // Current CodePage
|
|
WORD wInitCodePage; // Initial CodePage
|
|
#endif
|
|
} PROPENV;
|
|
typedef PROPENV *PPROPENV;
|
|
typedef PROPENV FAR *LPPROPENV;
|
|
|
|
|
|
#define MAX_GROUP 0x0FF
|
|
#define MAX_VALID_GROUP GROUP_ENV
|
|
|
|
/*
|
|
* Additional group ordinal bits that can be passed to VxD property hooks
|
|
*/
|
|
#define EXT_GROUP_QUERY 0x100
|
|
#define EXT_GROUP_UPDATE 0x200
|
|
|
|
|
|
/*
|
|
* PIF "file" structures, used by .PIFs
|
|
*/
|
|
|
|
#define PIFEXTSIGSIZE 16 // Length of extension signatures
|
|
#define MAX_GROUP_NAME PIFEXTSIGSIZE //
|
|
#define STDHDRSIG "MICROSOFT PIFEX" // extsig value for stdpifext
|
|
#define LASTHDRPTR 0xFFFF // This value in the
|
|
// extnxthdrfloff field indicates
|
|
// there are no more extensions.
|
|
#define W286HDRSIG30 "WINDOWS 286 3.0"
|
|
#define W386HDRSIG30 "WINDOWS 386 3.0"
|
|
#define WENHHDRSIG40 "WINDOWS PIF.402" // (NEW)
|
|
#define WENHICOSIG001 "WINDOWS ICO.001" // (NEW)
|
|
|
|
|
|
typedef struct PIFEXTHDR { /* peh */
|
|
char extsig[PIFEXTSIGSIZE];
|
|
WORD extnxthdrfloff;
|
|
WORD extfileoffset;
|
|
WORD extsizebytes;
|
|
} PIFEXTHDR;
|
|
typedef PIFEXTHDR *PPIFEXTHDR;
|
|
typedef PIFEXTHDR FAR *LPPIFEXTHDR;
|
|
|
|
|
|
/* Flags for MSflags
|
|
*/
|
|
|
|
#define fResident 0x01 // Directly Modifies: Memory
|
|
#define fGraphics 0x02 // Screen Exchange: Graphics/Text
|
|
#define fNoSwitch 0x04 // Program Switch: Prevent
|
|
#define fNoGrab 0x08 // Screen Exchange: None
|
|
#define fDestroy 0x10 // Close Window on exit
|
|
#define fCOM2 0x40 // Directly Modifies: COM2
|
|
#define fCOM1 0x80 // Directly Modifies: COM1
|
|
|
|
#define MEMMASK fResident
|
|
#define GRAPHMASK fGraphics
|
|
#define TEXTMASK ((BYTE)(~GRAPHMASK))
|
|
#define PSMASK fNoSwitch
|
|
#define SGMASK fNoGrab
|
|
#define EXITMASK fDestroy
|
|
#define COM2MASK fCOM2
|
|
#define COM1MASK fCOM1
|
|
|
|
/* Flags for behavior
|
|
*/
|
|
#define fScreen 0x80 // Directly Modifies: Screen
|
|
#define fForeground 0x40 // Set same as fScreen (alias)
|
|
#define f8087 0x20 // No PIFEDIT control
|
|
#define fKeyboard 0x10 // Directly Modifies: Keyboard
|
|
|
|
#define SCRMASK (fScreen + fForeground)
|
|
#define MASK8087 f8087
|
|
#define KEYMASK fKeyboard
|
|
|
|
/* Flags for sysflags
|
|
*/
|
|
|
|
#define SWAPMASK 0x20
|
|
#define PARMMASK 0x40
|
|
|
|
/*
|
|
* All strings in the STDPIF are in the OEM character set.
|
|
*/
|
|
typedef struct STDPIF { /* std */ //Examples
|
|
BYTE unknown; // 0x00 0x00
|
|
BYTE id; // 0x01 0x78
|
|
char appname[PIFNAMESIZE]; // 0x02 'MS-DOS Prompt'
|
|
WORD maxmem; // 0x20 0x0200 (512Kb)
|
|
WORD minmem; // 0x22 0x0080 (128Kb)
|
|
char startfile[PIFSTARTLOCSIZE]; // 0x24 "COMMAND.COM"
|
|
BYTE MSflags; // 0x63 0x10
|
|
BYTE reserved; // 0x64 0x00
|
|
char defpath[PIFDEFPATHSIZE]; // 0x65 "\"
|
|
char params[PIFPARAMSSIZE]; // 0xA5 ""
|
|
BYTE screen; // 0xE5 0x00
|
|
BYTE cPages; // 0xE6 0x01 (ALWAYS!)
|
|
BYTE lowVector; // 0xE7 0x00 (ALWAYS!)
|
|
BYTE highVector; // 0xE8 0xFF (ALWAYS!)
|
|
BYTE rows; // 0xE9 0x19 (Not used)
|
|
BYTE cols; // 0xEA 0x50 (Not used)
|
|
BYTE rowoff; // 0xEB 0x00 (Not used)
|
|
BYTE coloff; // 0xEC 0x00 (Not used)
|
|
WORD sysmem; // 0xED 0x0007 (Not used; 7=>Text, 23=>Grfx/Mult Text)
|
|
char shprog[PIFSHPROGSIZE]; // 0xEF 0's (Not used)
|
|
char shdata[PIFSHDATASIZE]; // 0x12F 0's (Not used)
|
|
BYTE behavior; // 0x16F 0x00
|
|
BYTE sysflags; // 0x170 0x00 (Not used)
|
|
} STDPIF;
|
|
typedef STDPIF *PSTDPIF;
|
|
typedef STDPIF FAR *LPSTDPIF;
|
|
|
|
|
|
/* Flags for PfW286Flags
|
|
*/
|
|
|
|
#define fALTTABdis286 0x0001
|
|
#define fALTESCdis286 0x0002
|
|
#define fALTPRTSCdis286 0x0004
|
|
#define fPRTSCdis286 0x0008
|
|
#define fCTRLESCdis286 0x0010
|
|
#define fNoSaveVid286 0x0020 // New for 3.10
|
|
#define fCOM3_286 0x4000
|
|
#define fCOM4_286 0x8000
|
|
|
|
typedef struct W286PIF30 { /* 286 */ //Examples
|
|
WORD PfMaxXmsK; // 0x19D 0x0000
|
|
WORD PfMinXmsK; // 0x19F 0x0000
|
|
WORD PfW286Flags; // 0x1A1 0x0000
|
|
} W286PIF30;
|
|
typedef W286PIF30 *PW286PIF30;
|
|
typedef W286PIF30 FAR *LPW286PIF30;
|
|
|
|
|
|
/* Flags for PfW386Flags
|
|
*/
|
|
|
|
#define fEnableClose 0x00000001 //
|
|
#define fEnableCloseBit 0 //
|
|
#define fBackground 0x00000002 //
|
|
#define fBackgroundBit 1 //
|
|
#define fExclusive 0x00000004 //
|
|
#define fExclusiveBit 2 //
|
|
#define fFullScreen 0x00000008 //
|
|
#define fFullScreenBit 3 //
|
|
#define fALTTABdis 0x00000020 //
|
|
#define fALTTABdisBit 5 //
|
|
#define fALTESCdis 0x00000040 //
|
|
#define fALTESCdisBit 6 //
|
|
#define fALTSPACEdis 0x00000080 //
|
|
#define fALTSPACEdisBit 7 //
|
|
#define fALTENTERdis 0x00000100 //
|
|
#define fALTENTERdisBit 8 //
|
|
#define fALTPRTSCdis 0x00000200 //
|
|
#define fALTPRTSCdisBit 9 //
|
|
#define fPRTSCdis 0x00000400 //
|
|
#define fPRTSCdisBit 10 //
|
|
#define fCTRLESCdis 0x00000800 //
|
|
#define fCTRLESCdisBit 11 //
|
|
#define fPollingDetect 0x00001000 //
|
|
#define fPollingDetectBit 12 //
|
|
#define fNoHMA 0x00002000 //
|
|
#define fNoHMABit 13 //
|
|
#define fHasHotKey 0x00004000 //
|
|
#define fHasHotKeyBit 14 //
|
|
#define fEMSLocked 0x00008000 //
|
|
#define fEMSLockedBit 15 //
|
|
#define fXMSLocked 0x00010000 //
|
|
#define fXMSLockedBit 16 //
|
|
#define fINT16Paste 0x00020000 //
|
|
#define fINT16PasteBit 17 //
|
|
#define fVMLocked 0x00040000 //
|
|
#define fVMLockedBit 18 //
|
|
#define fGlobalProtect 0x00080000 // New for 4.00
|
|
#define fGlobalProtectBit 19 // New for 4.00
|
|
#define fMinimized 0x00100000 // New for 4.00
|
|
#define fMinimizedBit 20 // New for 4.00
|
|
#define fMaximized 0x00200000 // New for 4.00
|
|
#define fMaximizedBit 21 // New for 4.00
|
|
#define fRealMode 0x00800000 // New for 4.00
|
|
#define fRealModeBit 23 // New for 4.00
|
|
#define fDisAutoWinExec 0x01000000 // New for 4.00
|
|
#define fDisAutoWinExecBit 24 // New for 4.00
|
|
#define fStrayPtrDetect 0x02000000 // New for 4.00
|
|
#define fStrayPtrDetectBit 25 // New for 4.00
|
|
|
|
/* Flags for PfW386Flags2
|
|
*
|
|
* NOTE THAT THE LOW 16 BITS OF THIS DWORD ARE VDD RELATED
|
|
* NOTE THAT ALL OF THE LOW 16 BITS ARE RESERVED FOR VIDEO BITS
|
|
*
|
|
* You cannot monkey with these bits locations without breaking
|
|
* all VDDs as well as all old PIFs. SO DON'T MESS WITH THEM.
|
|
*/
|
|
|
|
#define fVDDMask 0x0000FFFF //
|
|
#define fVDDMinBit 0 //
|
|
#define fVDDMaxBit 15 //
|
|
|
|
#define fVidTxtEmulate 0x00000001 //
|
|
#define fVidTxtEmulateBit 0 //
|
|
#define fVidNoTrpTxt 0x00000002 //
|
|
#define fVidNoTrpTxtBit 1 //
|
|
#define fVidNoTrpLRGrfx 0x00000004 //
|
|
#define fVidNoTrpLRGrfxBit 2 //
|
|
#define fVidNoTrpHRGrfx 0x00000008 //
|
|
#define fVidNoTrpHRGrfxBit 3 //
|
|
#define fVidTextMd 0x00000010 //
|
|
#define fVidTextMdBit 4 //
|
|
#define fVidLowRsGrfxMd 0x00000020 //
|
|
#define fVidLowRsGrfxMdBit 5 //
|
|
#define fVidHghRsGrfxMd 0x00000040 //
|
|
#define fVidHghRsGrfxMdBit 6 //
|
|
#define fVidRetainAllo 0x00000080 //
|
|
#define fVidRetainAlloBit 7 //
|
|
|
|
/*
|
|
* This mask is used to isolate status bits shared with VM_Descriptor
|
|
*/
|
|
|
|
#define PifDescMask \
|
|
(fALTTABdis + fALTESCdis + fALTSPACEdis + \
|
|
fALTENTERdis + fALTPRTSCdis + fPRTSCdis + \
|
|
fCTRLESCdis + fPollingDetect+ fNoHMA + \
|
|
fHasHotKey + fEMSLocked + fXMSLocked + \
|
|
fINT16Paste + fVMLocked)
|
|
|
|
|
|
typedef struct W386PIF30 { /* 386 */ //Examples
|
|
// These new maxmem/minmem fields allow values
|
|
// that will not conflict with the 286-specific values
|
|
WORD PfW386maxmem; // 0x1B9 0xFFFF (-1)
|
|
WORD PfW386minmem; // 0x1BB 0xFFFF (-1)
|
|
WORD PfFPriority; // 0x1BD 0x0064 (100)
|
|
WORD PfBPriority; // 0x1BF 0x0032 (50)
|
|
WORD PfMaxEMMK; // 0x1C1 0x0000 (0)
|
|
WORD PfMinEMMK; // 0x1C3 0x0000 (0)
|
|
WORD PfMaxXmsK; // 0x1C5 0x0800 (2048)
|
|
WORD PfMinXmsK; // 0x1C7 0x0000 (0)
|
|
DWORD PfW386Flags; // 0x1C9 0x00021003
|
|
DWORD PfW386Flags2; // 0x1CD 0x0000001F
|
|
WORD PfHotKeyScan; // 0x1D1 Scan code in lower byte
|
|
WORD PfHotKeyShVal; // 0x1D3 Shift state
|
|
WORD PfHotKeyShMsk; // 0x1D5 Mask for shift states interested in
|
|
BYTE PfHotKeyVal; // 0x1D7 Enhanced flags
|
|
BYTE PfHotKeyPad[9]; // 0x1D8 Pad Hot key section to 16 bytes
|
|
char PfW386params[PIFPARAMSSIZE]; // 0x1E1
|
|
} W386PIF30;
|
|
typedef W386PIF30 *PW386PIF30;
|
|
typedef W386PIF30 FAR *LPW386PIF30;
|
|
|
|
|
|
/* AssociateProperties associations
|
|
*/
|
|
|
|
#define HVM_ASSOCIATION 1
|
|
#define HWND_ASSOCIATION 2
|
|
|
|
|
|
/* SHEETTYPEs for AddPropertySheet/EnumPropertySheets
|
|
*/
|
|
|
|
#define SHEETTYPE_SIMPLE 0
|
|
#define SHEETTYPE_ADVANCED 1
|
|
|
|
|
|
/* External function ordinals and prototypes
|
|
*/
|
|
|
|
#define ORD_OPENPROPERTIES 2
|
|
#define ORD_GETPROPERTIES 3
|
|
#define ORD_SETPROPERTIES 4
|
|
#define ORD_EDITPROPERTIES 5
|
|
#define ORD_FLUSHPROPERTIES 6
|
|
#define ORD_ENUMPROPERTIES 7
|
|
#define ORD_ASSOCIATEPROPERTIES 8
|
|
#define ORD_CLOSEPROPERTIES 9
|
|
#define ORD_LOADPROPERTYLIB 10
|
|
#define ORD_ENUMPROPERTYLIBS 11
|
|
#define ORD_FREEPROPERTYLIB 12
|
|
#define ORD_ADDPROPERTYSHEET 13
|
|
#define ORD_REMOVEPROPERTYSHEET 14
|
|
#define ORD_LOADPROPERTYSHEETS 15
|
|
#define ORD_ENUMPROPERTYSHEETS 16
|
|
#define ORD_FREEPROPERTYSHEETS 17
|
|
|
|
|
|
/* XLATOFF */
|
|
#ifdef WINAPI
|
|
|
|
int WINAPI OpenProperties(LPCSTR lpszApp, int hInf, int flOpt);
|
|
int WINAPI GetProperties(int hProps, LPCSTR lpszGroup, LPVOID lpProps, int cbProps, int flOpt);
|
|
int WINAPI SetProperties(int hProps, LPCSTR lpszGroup, CONST VOID FAR *lpProps, int cbProps, int flOpt);
|
|
int WINAPI EditProperties(int hProps, LPCSTR lpszTitle, UINT uStartPage, HWND hwnd, UINT uMsgPost);
|
|
int WINAPI FlushProperties(int hProps, int flOpt);
|
|
int WINAPI EnumProperties(int hProps);
|
|
long WINAPI AssociateProperties(int hProps, int iAssociate, long lData);
|
|
int WINAPI CloseProperties(int hProps, int flOpt);
|
|
|
|
#ifdef PIF_PROPERTY_SHEETS
|
|
int WINAPI LoadPropertyLib(LPCSTR lpszDLL, int fLoad);
|
|
int WINAPI EnumPropertyLibs(int iLib, LPHANDLE lphDLL, LPSTR lpszDLL, int cbszDLL);
|
|
BOOL WINAPI FreePropertyLib(int hLib);
|
|
int WINAPI AddPropertySheet(const PROPSHEETPAGE FAR *lppsi, int iType);
|
|
BOOL WINAPI RemovePropertySheet(int hSheet);
|
|
int WINAPI LoadPropertySheets(int hProps, int flags);
|
|
int WINAPI EnumPropertySheets(int hProps, int iType, int iSheet, LPPROPSHEETPAGE lppsi);
|
|
int WINAPI FreePropertySheets(int hProps, int flags);
|
|
#endif
|
|
|
|
#endif
|
|
/* XLATON */
|
|
|
|
#endif // _INC_PIF
|