Leaked source code of windows server 2003
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

/*
* 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