/* * Microsoft Confidential * Copyright (c) Microsoft Corporation. All rights reserved. * All Rights Reserved. * * * PIF.H * DOS Program Information File structures, constants, etc. */ #ifndef _INC_PIF #define _INC_PIF #include /* XLATOFF */ #ifndef RC_INVOKED #pragma pack(1) /* Assume byte packing throughout */ #endif /* RC_INVOKED */ /* XLATON */ // for DOJ compliance, size defines moved to shlobj.w #ifndef LF_FACESIZE #define LF_FACESIZE 32 #endif #define LARGEST_GROUP sizeof(PROPPRG) // for DOJ compliance, some property flags moved to shlobj.h #define OPENPROPS_RAWIO 0x0001 //;Internal #define OPENPROPS_INFONLY 0x0002 //;Internal #define OPENPROPS_FORCEREALMODE 0x0004 //;Internal #define GETPROPS_RAWIO 0x0001 //;Internal #define GETPROPS_EXTENDED 0x0004 //;Internal #define GETPROPS_OEM 0x0008 //;Internal #define FLUSHPROPS_NONE 0x0000 //;Internal #define FLUSHPROPS_DISCARD 0x0001 //;Internal #define CREATEPROPS_NONE 0x0000 //;Internal #define SETPROPS_RAWIO 0x0001 //;Internal #define SETPROPS_CACHE 0x0002 //;Internal #define SETPROPS_EXTENDED 0x0004 //;Internal #define SETPROPS_OEM 0x0008 //;Internal #define DELETEPROPS_NONE 0x0000 #define DELETEPROPS_DISCARD 0x0001 #define DELETEPROPS_ABORT 0x0002 #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 tagPIFRECT { WORD left; WORD top; WORD right; WORD bottom; } PIFRECT; typedef PIFRECT *PPIFRECT; typedef PIFRECT FAR *LPPIFRECT; /* 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 0 #define PRG_CLOSEONEXIT 0x0001 // MSflags & EXITMASK #define PRG_NOSUGGESTMSDOS 0x0400 // see also: PfW386Flags & fNoSuggestMSDOS #define PRGINIT_DEFAULT 0 #define PRGINIT_MINIMIZED 0x0001 // see also: PfW386Flags & fMinimized #define PRGINIT_MAXIMIZED 0x0002 // see also: PfW386Flags & fMaximized #define PRGINIT_WINLIE 0x0004 // see also: PfW386Flags & fWinLie #define PRGINIT_REALMODE 0x0008 // see also: PfW386Flags & fRealMode #define PRGINIT_REALMODESILENT 0x0100 // see also: PfW386Flags & fRealModeSilent #define PRGINIT_QUICKSTART 0x0200 // see also: PfW386Flags & fQuickStart /* ;Internal */ #define PRGINIT_AMBIGUOUSPIF 0x0400 // see also: PfW386Flags & fAmbiguousPIF #define PRGINIT_NOPIF 0x1000 // no PIF found #define PRGINIT_DEFAULTPIF 0x2000 // default PIF found #define PRGINIT_INFSETTINGS 0x4000 // INF settings found #define PRGINIT_INHIBITPIF 0x8000 // INF indicates that no PIF be created /* * Real mode option flags. NOTE: this field is a dword. The low word * uses these flags to indicate required options. The high word is used * to specify "nice" but not required options. */ #define RMOPT_MOUSE 0x0001 // Real mode mouse #define RMOPT_EMS 0x0002 // Expanded Memory #define RMOPT_CDROM 0x0004 // CD-ROM support #define RMOPT_NETWORK 0x0008 // Network support #define RMOPT_DISKLOCK 0x0010 // disk locking required #define RMOPT_PRIVATECFG 0x0020 // use private configuration (ie, CONFIG/AUTOEXEC) #define RMOPT_VESA 0x0040 // VESA driver #define ICONFILE_DEFAULT TEXT("PIFMGR.DLL") #define ICONINDEX_DEFAULT 0 // for DOJ compliance, PROPPRG moved to shlobj.w #define GROUP_TSK 2 // tasking group #define TSK_DEFAULT (TSK_BACKGROUND) #define TSK_ALLOWCLOSE 0x0001 // PfW386Flags & fEnableClose #define TSK_BACKGROUND 0x0002 // PfW386Flags & fBackground #define TSK_EXCLUSIVE 0x0004 // PfW386Flags & fExclusive /* ;Internal */ #define TSK_NOWARNTERMINATE 0x0010 // Don't warn before closing #define TSK_NOSCREENSAVER 0x0020 // Do not activate screen saver #define TSKINIT_DEFAULT 0 #define TSKFGNDBOOST_DEFAULT 0 // fgnd boost /* ;Internal */ #define TSKBGNDBOOST_DEFAULT 0 // bgnd boost /* ;Internal */ /* ;Internal */ #define TSKFGND_OLD_DEFAULT 100 // normal fgnd setting /* ;Internal */ #define TSKBGND_OLD_DEFAULT 50 // normal bgnd setting /* ;Internal */ /* ;Internal */ #define TSKIDLESENS_DEFAULT 50 // % (min-max == 0-100) typedef struct PROPTSK { /* tsk */ WORD flTsk; // see TSK_ flags WORD flTskInit; // see TSKINIT_ flags WORD wReserved1; // (reserved, must be zero) WORD wReserved2; // (reserved, must be zero) WORD wReserved3; // (reserved, must be zero) WORD wReserved4; // (reserved, must be zero) WORD wIdleSensitivity; // %, also affects PfW386Flags & fPollingDetect } PROPTSK; typedef UNALIGNED PROPTSK *PPROPTSK; typedef UNALIGNED PROPTSK FAR *LPPROPTSK; #define GROUP_VID 3 // video group #define VID_DEFAULT (VID_TEXTEMULATE) #define VID_TEXTEMULATE 0x0001 // PfW386Flags2 & fVidTxtEmulate #define VID_RETAINMEMORY 0x0080 // PfW386Flags2 & fVidRetainAllo #define VID_FULLSCREEN 0x0100 // PfW386Flags & fFullScreen #define VIDINIT_DEFAULT 0 #define VIDSCREENLINES_MIN 0 // in # lines (0 = use VDD value) #define VIDSCREENLINES_DEFAULT 0 // in # lines #define VIDSCREENLINES_MAX 50 // in # lines /* ;Internal */ typedef struct PROPVID { /* vid */ WORD flVid; // see VID_ flags WORD flVidInit; // see VIDINIT_ flags WORD wReserved1; // (reserved, must be zero) WORD wReserved2; // (reserved, must be zero) WORD wReserved3; // (reserved, must be zero) WORD cScreenLines; // ([NonWindowsApp]:ScreenLines) } PROPVID; typedef UNALIGNED PROPVID *PPROPVID; typedef UNALIGNED 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 #define MEMINIT_STRAYPTRDETECT 0x0020 // PfW386Flags & fStrayPtrDetect /* ;Internal */ #define MEMINIT_LOCALUMBS 0x0040 // PfW386Flags & fLocalUMBs /* ;Internal */ #define MEMLOW_MIN 0 // in KB #define MEMLOW_DEFAULT 0 // in KB #define MEMLOW_MAX 640 // in KB #define MEMEMS_MIN 0 // in KB #define MEMEMS_DEFAULT 0 // in KB #define MEMEMS_MAX 0xFFFF // in KB #define MEMXMS_MIN 0 // in KB #define MEMXMS_DEFAULT 0 // in KB #define MEMXMS_MAX 0xFFFF // 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 UNALIGNED PROPMEM *PPROPMEM; typedef UNALIGNED 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 #define KBD_NOALTESC 0x0040 // PfW386Flags & fALTESCdis #define KBD_NOALTSPACE 0x0080 // PfW386Flags & fALTSPACEdis #define KBD_NOALTENTER 0x0100 // PfW386Flags & fALTENTERdis #define KBD_NOALTPRTSC 0x0200 // PfW386Flags & fALTPRTSCdis #define KBD_NOPRTSC 0x0400 // PfW386Flags & fPRTSCdis #define KBD_NOCTRLESC 0x0800 // PfW386Flags & fCTRLESCdis #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 UNALIGNED PROPKBD *PPROPKBD; typedef UNALIGNED 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 // #define MSEINIT_DEFAULT 0 // default flags typedef struct PROPMSE { /* mse */ WORD flMse; // see MSE_ flags WORD flMseInit; // see MSEINIT_ flags } PROPMSE; typedef UNALIGNED PROPMSE *PPROPMSE; typedef UNALIGNED PROPMSE FAR *LPPROPMSE; #define GROUP_SND 7 // sound group /* ;Internal */ /* ;Internal */ #define SND_DEFAULT (SND_SPEAKERENABLE) /* ;Internal */ #define SND_SPEAKERENABLE 0x0001 // /* ;Internal */ /* ;Internal */ #define SNDINIT_DEFAULT 0 /* ;Internal */ /* ;Internal */ typedef struct PROPSND { /* snd */ /* ;Internal */ WORD flSnd; // see SND_ flags /* ;Internal */ WORD flSndInit; // see SNDINIT_ flags /* ;Internal */ } PROPSND; /* ;Internal */ typedef UNALIGNED PROPSND *PPROPSND; /* ;Internal */ typedef UNALIGNED PROPSND FAR *LPPROPSND; /* ;Internal */ /* ;Internal */ /* ;Internal */ #define GROUP_FNT 8 // font group #define FNT_DEFAULT (FNT_BOTHFONTS | FNT_AUTOSIZE) #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 WORD wCurrentCP; // Current Codepage } PROPFNT; typedef UNALIGNED PROPFNT *PPROPFNT; typedef UNALIGNED PROPFNT FAR *LPPROPFNT; #define GROUP_WIN 9 // window group #define WIN_DEFAULT (WIN_SAVESETTINGS | WIN_TOOLBAR) #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 WORD wLength; WORD wShowFlags; WORD wShowCmd; WORD xMinimize; WORD yMinimize; WORD xMaximize; WORD yMaximize; PIFRECT rcNormal; } PROPWIN; typedef UNALIGNED PROPWIN *PPROPWIN; typedef UNALIGNED PROPWIN FAR *LPPROPWIN; #define PIF_WP_SIZE ((sizeof(WORD)*7) + sizeof(PIFRECT)) #define GROUP_ENV 10 // environment/startup group #define ENV_DEFAULT 0 #define ENVINIT_DEFAULT 0 #define ENVSIZE_MIN 0 #define ENVSIZE_DEFAULT 0 #define ENVSIZE_MAX 32768 #define ENVDPMI_MIN 0 // in KB #define ENVDPMI_DEFAULT 0 // in KB (0 = Auto) #define ENVDPMI_MAX 0xFFFF // in KB typedef struct PROPENV { /* env */ WORD flEnv; // see ENV_ flags WORD flEnvInit; // see ENVINIT_ flags CHAR achBatchFile[PIFDEFFILESIZE]; // WORD cbEnvironment; // ([386Enh]:CommandEnvSize) WORD wMaxDPMI; // (NEW) } PROPENV; typedef UNALIGNED PROPENV *PPROPENV; typedef UNALIGNED PROPENV FAR *LPPROPENV; #ifdef WINNT #define GROUP_NT31 11 #ifndef UNICODE #define MAX_VALID_GROUP GROUP_NT31 #endif typedef struct PROPNT31 { DWORD dwWNTFlags; /* ;Internal */ DWORD dwRes1; /* ;Internal */ DWORD dwRes2; /* ;Internal */ char achConfigFile[PIFDEFPATHSIZE]; /* ;Internal */ char achAutoexecFile[PIFDEFPATHSIZE]; /* ;Internal */ } PROPNT31; typedef UNALIGNED PROPNT31 *PPROPNT31; typedef UNALIGNED PROPNT31 FAR *LPPROPNT31; #define COMPAT_TIMERTIC 0x10 /* ;Internal */ #define NT31_COMPATTIMER COMPAT_TIMERTIC /* ;Internal */ #endif #ifdef UNICODE #ifdef GROUP_NT31 #define GROUP_NT40 12 #else #define GROUP_NT40 11 #endif #define MAX_VALID_GROUP GROUP_NT40 #define WNT_LET_SYS_POS 0x0001 #define WNT_CONSOLE_PROPS 0x0002 typedef struct PROPNT40 { /* wnt */ DWORD flWnt; // NT Specific PIF falgs // UNICODE version of strings, and copy of ANSI to see if they've changed WCHAR awchCmdLine[PIFSTARTLOCSIZE+PIFPARAMSSIZE+1]; // Command line CHAR achSaveCmdLine[PIFSTARTLOCSIZE+PIFPARAMSSIZE+1];// Saved ANSI Command Line WCHAR awchOtherFile[PIFDEFFILESIZE]; // name of "other" file in directory CHAR achSaveOtherFile[PIFDEFFILESIZE]; // Saved ANSI "other" file in directory WCHAR awchPIFFile[PIFDEFFILESIZE]; // name of PIF file CHAR achSavePIFFile[PIFDEFFILESIZE]; // Saved ANSI name of PIF file WCHAR awchTitle[PIFNAMESIZE]; // Title for cmd window CHAR achSaveTitle[PIFNAMESIZE]; // Saved ANSI Title for cmd window WCHAR awchIconFile[PIFDEFFILESIZE]; // Name of file containing icons CHAR achSaveIconFile[PIFDEFFILESIZE]; // Saved ANSI Name of file containing icons WCHAR awchWorkDir[PIFDEFPATHSIZE]; // working directory CHAR achSaveWorkDir[PIFDEFPATHSIZE]; // Saved ANSI working directory WCHAR awchBatchFile[PIFDEFFILESIZE]; // batch file CHAR achSaveBatchFile[PIFDEFFILESIZE]; // Saved ANSI batch file // Console properties DWORD dwForeColor; // Console Text Foreground Color DWORD dwBackColor; // Console Text Background Color DWORD dwPopupForeColor; // Console Popup Text Foreground Color DWORD dwPopupBackColor; // Console Popup Text Background Color COORD WinSize; // Console Window Size COORD BuffSize; // Console Buffer Size POINT WinPos; // Console Window Position DWORD dwCursorSize; // Console Cursor Size DWORD dwCmdHistBufSize; // Console Command Histroy Buffer Size DWORD dwNumCmdHist; // Number of Command Histories for Console } PROPNT40; typedef UNALIGNED PROPNT40 *PPROPNT40; typedef UNALIGNED PROPNT40 FAR *LPPROPNT40; #else #ifndef WINNT #define MAX_VALID_GROUP GROUP_ENV #endif #endif // UNICODE #define GROUP_ICON (MAX_VALID_GROUP+1) #define GROUP_MAX 0x0FF // ;Internal // ;Internal /* // ;Internal * Additional group ordinal bits that can be passed to VxD property hooks // ;Internal */ // ;Internal #define EXT_GROUP_QUERY 0x100 // ;Internal #define EXT_GROUP_UPDATE 0x200 // ;Internal // ;Internal // ;Internal /* * 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 WNTHDRSIG31 "WINDOWS NT 3.1" #define WENHHDRSIG40 "WINDOWS VMM 4.0" // #define WNTHDRSIG40 "WINDOWS NT 4.0" #define CONFIGHDRSIG40 "CONFIG SYS 4.0" // #define AUTOEXECHDRSIG40 "AUTOEXECBAT 4.0" // #define MAX_CONFIG_SIZE 4096 #define MAX_AUTOEXEC_SIZE 4096 #define CONFIGFILE TEXT("\\CONFIG.SYS") // normal filenames #define AUTOEXECFILE TEXT("\\AUTOEXEC.BAT") #define MCONFIGFILE TEXT("\\CONFIG.APP") // msdos-mode temp filenames #define MAUTOEXECFILE TEXT("\\AUTOEXEC.APP") #define WCONFIGFILE TEXT("\\CONFIG.WOS") // windows-mode temp filenames #define WAUTOEXECFILE TEXT("\\AUTOEXEC.WOS") typedef struct PIFEXTHDR { /* peh */ CHAR extsig[PIFEXTSIGSIZE]; WORD extnxthdrfloff; WORD extfileoffset; WORD extsizebytes; } PIFEXTHDR; typedef UNALIGNED PIFEXTHDR *PPIFEXTHDR; typedef UNALIGNED 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 UNALIGNED STDPIF *PSTDPIF; typedef UNALIGNED 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 UNALIGNED W286PIF30 *PW286PIF30; typedef UNALIGNED W286PIF30 FAR *LPW286PIF30; /* Flags for PfW386Flags */ #define fEnableClose 0x00000001 // #define fEnableCloseBit 0 // #define fBackground 0x00000002 // #define fBackgroundBit 1 // #define fExclusive 0x00000004 // /* ;Internal */ #define fExclusiveBit 2 // /* ;Internal */ #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 // 0x00400000 // Not used /* ;Internal */ // 22 // Not used /* ;Internal */ #define fRealMode 0x00800000 // New for 4.00 #define fRealModeBit 23 // New for 4.00 #define fWinLie 0x01000000 // New for 4.00 #define fWinLieBit 24 // New for 4.00 #define fStrayPtrDetect 0x02000000 // New for 4.00 /* ;Internal */ #define fStrayPtrDetectBit 25 // New for 4.00 /* ;Internal */ #define fNoSuggestMSDOS 0x04000000 // New for 4.00 #define fNoSuggestMSDOSBit 26 // New for 4.00 #define fLocalUMBs 0x08000000 // New for 4.00 /* ;Internal */ #define fLocalUMBsBit 27 // New for 4.00 /* ;Internal */ #define fRealModeSilent 0x10000000 // New for 4.00 #define fRealModeSilentBit 28 // New for 4.00 #define fQuickStart 0x20000000 // New for 4.00 /* ;Internal */ #define fQuickStartBit 29 // New for 4.00 /* ;Internal */ #define fAmbiguousPIF 0x40000000 // New for 4.00 #define fAmbiguousPIFBit 30 // 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 // Obsolete #define fVidNoTrpTxtBit 1 // Obsolete #define fVidNoTrpLRGrfx 0x00000004 // Obsolete #define fVidNoTrpLRGrfxBit 2 // Obsolete #define fVidNoTrpHRGrfx 0x00000008 // Obsolete #define fVidNoTrpHRGrfxBit 3 // Obsolete #define fVidTextMd 0x00000010 // Obsolete #define fVidTextMdBit 4 // Obsolete #define fVidLowRsGrfxMd 0x00000020 // Obsolete #define fVidLowRsGrfxMdBit 5 // Obsolete #define fVidHghRsGrfxMd 0x00000040 // Obsolete #define fVidHghRsGrfxMdBit 6 // Obsolete #define fVidRetainAllo 0x00000080 // #define fVidRetainAlloBit 7 // /* ;Internal * This mask is used to isolate status bits shared with VM_Descriptor ;Internal */ /* ;Internal */ /* ;Internal */ #define PifDescMask /* ;Internal */ \ (fALTTABdis + fALTESCdis + fALTSPACEdis + /* ;Internal */ \ fALTENTERdis + fALTPRTSCdis + fPRTSCdis + /* ;Internal */ \ fCTRLESCdis + fPollingDetect+ fNoHMA + /* ;Internal */ \ fHasHotKey + fEMSLocked + fXMSLocked + /* ;Internal */ \ fINT16Paste + fVMLocked) /* ;Internal */ /* ;Internal */ /* ;Internal */ 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 UNALIGNED W386PIF30 *PW386PIF30; typedef UNALIGNED W386PIF30 FAR *LPW386PIF30; typedef struct WENHPIF40 { /* enh */ /* ;Internal */ DWORD dwEnhModeFlagsProp; // PROPPRG data (subset) /* ;Internal */ DWORD dwRealModeFlagsProp; // PROPPRG data (subset) /* ;Internal */ CHAR achOtherFileProp[PIFDEFFILESIZE];//PROPPRG data (subset) /* ;Internal */ CHAR achIconFileProp[PIFDEFFILESIZE];// PROPPRG data (subset) /* ;Internal */ WORD wIconIndexProp; // PROPPRG data (subset) /* ;Internal */ PROPTSK tskProp; // PROPTSK data /* ;Internal */ PROPVID vidProp; // PROPVID data /* ;Internal */ PROPKBD kbdProp; // PROPKBD data /* ;Internal */ PROPMSE mseProp; // PROPMSE data /* ;Internal */ PROPSND sndProp; // PROPSND data /* ;Internal */ PROPFNT fntProp; // PROPFNT data /* ;Internal */ PROPWIN winProp; // PROPWIN data /* ;Internal */ PROPENV envProp; // PROPENV data /* ;Internal */ WORD wInternalRevision; // Internal WENHPIF40 version /* ;Internal */ } WENHPIF40; /* ;Internal */ typedef UNALIGNED WENHPIF40 *PWENHPIF40; /* ;Internal */ typedef UNALIGNED WENHPIF40 FAR *LPWENHPIF40; /* ;Internal */ #ifdef WINNT /* Windows NT extension format */ typedef struct WNTPIF31 { /* ;Internal */ PROPNT31 nt31Prop; /* ;Internal */ WORD wInternalRevision; /* ;Internal */ } WNTPIF31; /* ;Internal */ typedef UNALIGNED WNTPIF31 *PWNTPIF31; /* ;Internal */ typedef UNALIGNED WNTPIF31 FAR *LPWNTPIF31; /* ;Internal */ #endif /* ;Internal */ #ifdef UNICODE typedef struct WNTPIF40 { /* adv */ /* ;Internal */ PROPNT40 nt40Prop; // PROPWNT data /* ;Internal */ WORD wInternalRevision; // Internal WNTPIF40 version /* ;Internal */ } WNTPIF40; /* ;Internal */ typedef UNALIGNED WNTPIF40 *PWNTPIF40; /* ;Internal */ typedef UNALIGNED WNTPIF40 FAR *LPWNTPIF40; /* ;Internal */ #endif /* ;Internal */ // /* ;Internal */ // Whenever a previously reserved field or bit becomes used, increment /* ;Internal */ // the internal revision so that we know to zero them out when we see a /* ;Internal */ // down-level PIF file. /* ;Internal */ // /* ;Internal */ #define WENHPIF40_VERSION 1 // Current internal version /* ;Internal */ #define WNTPIF40_VERSION 1 // Current internal version /* ;Internal */ #define WNTPIF31_VERSION 1 // Current internal version /* ;Internal */ /* ;Internal */ typedef struct PIFDATA { /* pd */ //Examples /* ;Internal */ /* ;Internal */ STDPIF stdpifdata; // 0x000 /* ;Internal */ /* ;Internal */ PIFEXTHDR stdpifext; // 0x171 /* ;Internal */ // struct { /* ;Internal */ // CHAR extsig[PIFEXTSIGSIZE]; // 0x171 "MICROSOFT PIFEX" /* ;Internal */ // WORD extnxthdrfloff; // 0x181 0x0187 (or 0xFFFF) /* ;Internal */ // WORD extfileoffset; // 0x183 0x0000 /* ;Internal */ // WORD extsizebytes; // 0x185 0x0171 /* ;Internal */ // }; /* ;Internal */ /* ;Internal */ PIFEXTHDR w286hdr30; // 0x187 /* ;Internal */ // struct { /* ;Internal */ // CHAR extsig[PIFEXTSIGSIZE]; // 0x187 "WINDOWS 286 3.0" /* ;Internal */ // WORD extnxthdrfloff; // 0x197 0x01A3 (or 0xFFFF) /* ;Internal */ // WORD extfileoffset; // 0x199 0x019D /* ;Internal */ // WORD extsizebytes; // 0x19B 0x0006 /* ;Internal */ // }; /* ;Internal */ W286PIF30 w286ext30; // 0x19D /* ;Internal */ /* ;Internal */ PIFEXTHDR w386hdr30; // 0x1A3 /* ;Internal */ // struct { /* ;Internal */ // CHAR extsig[PIFEXTSIGSIZE]; // 0x1A3 "WINDOWS 386 3.0" /* ;Internal */ // WORD extnxthdrfloff; // 0x1B3 0xFFFF (ENH=0x221) /* ;Internal */ // WORD extfileoffset; // 0x1B5 0x01B9 /* ;Internal */ // WORD extsizebytes; // 0x1B7 0x0068 /* ;Internal */ // }; /* ;Internal */ W386PIF30 w386ext30; // 0x1B9 /* ;Internal */ /* ;Internal */ PIFEXTHDR wenhhdr40; // 0x221 /* ;Internal */ // struct { /* ;Internal */ // CHAR extsig[PIFEXTSIGSIZE]; // 0x221 "WINDOWS VMM 4.0" /* ;Internal */ // WORD extnxthdrfloff; // 0x231 0x???? /* ;Internal */ // WORD extfileoffset; // 0x233 0x0237 /* ;Internal */ // WORD extsizebytes; // 0x235 ??? /* ;Internal */ // }; /* ;Internal */ WENHPIF40 wenhext40; // 0x237 /* ;Internal */ #ifdef WINNT PIFEXTHDR wnthdr31; // 0x000 /* ;Internal */ // struct { /* ;Internal */ // CHAR extsig[PIFEXTSIGSIZE]; // 0x000 "WINDOWS NT 3.1" /* ;Internal */ // WORD extnxthdrfloff; // 0x000 0xFFFF /* ;Internal */ // WORD extfileoffset; // 0x000 0x0237 /* ;Internal */ // WORD extsizebytes; // 0x000 ??? /* ;Internal */ // }; /* ;Internal */ WNTPIF31 wntpif31; // 0x000 /* ;Internal */ #endif #ifdef UNICODE PIFEXTHDR wnthdr40; // 0x000 /* ;Internal */ // struct { /* ;Internal */ // CHAR extsig[PIFEXTSIGSIZE]; // 0x000 "WINDOWS NT 4.0" /* ;Internal */ // WORD extnxthdrfloff; // 0x000 0xFFFF /* ;Internal */ // WORD extfileoffset; // 0x000 0x0237 /* ;Internal */ // WORD extsizebytes; // 0x000 ??? /* ;Internal */ // }; /* ;Internal */ WNTPIF40 wntpif40; // 0x000 /* ;Internal */ #endif /* ;Internal */ } PIFDATA; // 0x221 if Windows 3.x PIF /* ;Internal */ typedef UNALIGNED PIFDATA *PPIFDATA; /* ;Internal */ typedef UNALIGNED PIFDATA FAR *LPPIFDATA; /* ;Internal */ /* ;Internal */ /* ;Internal */ /* ;Internal */ /* AssociateProperties associations */ #define HVM_ASSOCIATION 1 #define HWND_ASSOCIATION 2 #define LPARGS_ASSOCIATION 3 /* ;Internal */ /* 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 #define ORD_CREATESTARTUPPROPERTIES 20 #define ORD_DELETESTARTUPPROPERTIES 21 typedef UINT PIFWIZERR; #define PIFWIZERR_SUCCESS 0 #define PIFWIZERR_GENERALFAILURE 1 #define PIFWIZERR_INVALIDPARAM 2 #define PIFWIZERR_UNSUPPORTEDOPT 3 #define PIFWIZERR_OUTOFMEM 4 #define PIFWIZERR_USERCANCELED 5 #define WIZACTION_UICONFIGPROP 0 #define WIZACTION_SILENTCONFIGPROP 1 #define WIZACTION_CREATEDEFCLEANCFG 2 /* XLATOFF */ #ifdef WINAPI PIFWIZERR WINAPI AppWizard(HWND hwnd, HANDLE hProps, UINT action); int WINAPI OpenProperties(LPCTSTR lpszApp, LPCTSTR lpszPIF, UINT hInf, UINT flOpt); int WINAPI GetProperties(HANDLE hProps, LPCSTR lpszGroup, LPVOID lpProps, int cbProps, UINT flOpt); int WINAPI SetProperties(HANDLE hProps, LPCSTR lpszGroup, const VOID FAR *lpProps, int cbProps, UINT flOpt); int WINAPI EditProperties(HANDLE hProps, LPCTSTR lpszTitle, UINT uStartPage, HWND hwnd, UINT uMsgPost); int WINAPI FlushProperties(HANDLE hProps, UINT flOpt); HANDLE WINAPI EnumProperties(HANDLE hProps); LONG_PTR WINAPI AssociateProperties(HANDLE hProps, int iAssociate, LONG_PTR lData); int WINAPI CloseProperties(HANDLE hProps, UINT flOpt); int WINAPI CreateStartupProperties(HANDLE hProps, UINT flOpt); int WINAPI DeleteStartupProperties(HANDLE hProps, UINT flOpt); BOOL WINAPI PifPropGetPages(LPVOID lpv, LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam); #ifdef PIF_PROPERTY_SHEETS HANDLE WINAPI LoadPropertyLib(LPCTSTR lpszDLL, int fLoad); HANDLE WINAPI EnumPropertyLibs(HANDLE iLib, LPHANDLE lphDLL, LPSTR lpszDLL, int cbszDLL); BOOL WINAPI FreePropertyLib(HANDLE hLib); HANDLE WINAPI AddPropertySheet(const PROPSHEETPAGE FAR *lppsi, int iType); BOOL WINAPI RemovePropertySheet(HANDLE hSheet); int WINAPI LoadPropertySheets(HANDLE hProps, int flags); INT_PTR WINAPI EnumPropertySheets(HANDLE hProps, int iType, INT_PTR iSheet, LPPROPSHEETPAGE lppsi); HANDLE WINAPI FreePropertySheets(HANDLE hProps, int flags); #endif /* PIF_PROPERTY_SHEETS */ #endif /* WINAPI */ #ifndef RC_INVOKED #pragma pack() /* Revert to default packing */ #endif /* RC_INVOKED */ /* XLATON */ #endif // _INC_PIF