Source code of Windows XP (NT5)
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.

977 lines
46 KiB

  1. /*
  2. * Microsoft Confidential
  3. * Copyright (c) Microsoft Corporation. All rights reserved.
  4. * All Rights Reserved.
  5. *
  6. *
  7. * PIF.H
  8. * DOS Program Information File structures, constants, etc.
  9. */
  10. #ifndef _INC_PIF
  11. #define _INC_PIF
  12. #include <shlobj.h>
  13. /* XLATOFF */
  14. #ifndef RC_INVOKED
  15. #pragma pack(1) /* Assume byte packing throughout */
  16. #endif /* RC_INVOKED */
  17. /* XLATON */
  18. // for DOJ compliance, size defines moved to shlobj.w
  19. #ifndef LF_FACESIZE
  20. #define LF_FACESIZE 32
  21. #endif
  22. #define LARGEST_GROUP sizeof(PROPPRG)
  23. // for DOJ compliance, some property flags moved to shlobj.h
  24. #define OPENPROPS_RAWIO 0x0001 //;Internal
  25. #define OPENPROPS_INFONLY 0x0002 //;Internal
  26. #define OPENPROPS_FORCEREALMODE 0x0004 //;Internal
  27. #define GETPROPS_RAWIO 0x0001 //;Internal
  28. #define GETPROPS_EXTENDED 0x0004 //;Internal
  29. #define GETPROPS_OEM 0x0008 //;Internal
  30. #define FLUSHPROPS_NONE 0x0000 //;Internal
  31. #define FLUSHPROPS_DISCARD 0x0001 //;Internal
  32. #define CREATEPROPS_NONE 0x0000 //;Internal
  33. #define SETPROPS_RAWIO 0x0001 //;Internal
  34. #define SETPROPS_CACHE 0x0002 //;Internal
  35. #define SETPROPS_EXTENDED 0x0004 //;Internal
  36. #define SETPROPS_OEM 0x0008 //;Internal
  37. #define DELETEPROPS_NONE 0x0000
  38. #define DELETEPROPS_DISCARD 0x0001
  39. #define DELETEPROPS_ABORT 0x0002
  40. #define LOADPROPLIB_DEFER 0x0001
  41. /* XLATOFF */
  42. #ifndef FAR
  43. #define FAR
  44. #endif
  45. /* XLATON */
  46. //#ifdef RECT
  47. //#define _INC_WINDOWS
  48. //#endif
  49. //#ifndef _INC_WINDOWS
  50. /* ASM
  51. RECT struc
  52. rcLeft dw ?
  53. rcTop dw ?
  54. rcRight dw ?
  55. rcBottom dw ?
  56. RECT ends
  57. */
  58. /* XLATOFF */
  59. typedef struct tagPIFRECT {
  60. WORD left;
  61. WORD top;
  62. WORD right;
  63. WORD bottom;
  64. } PIFRECT;
  65. typedef PIFRECT *PPIFRECT;
  66. typedef PIFRECT FAR *LPPIFRECT;
  67. /* XLATON */
  68. //#endif
  69. /*
  70. * Property groups, used by PIFMGR.DLL and VxD interfaces
  71. *
  72. * The structures for each of the pre-defined, ordinal-based groups
  73. * is a logical view of data in the associated PIF file, if any -- not a
  74. * physical view.
  75. */
  76. #define GROUP_PRG 1 // program group
  77. #define PRG_DEFAULT 0
  78. #define PRG_CLOSEONEXIT 0x0001 // MSflags & EXITMASK
  79. #define PRG_NOSUGGESTMSDOS 0x0400 // see also: PfW386Flags & fNoSuggestMSDOS
  80. #define PRGINIT_DEFAULT 0
  81. #define PRGINIT_MINIMIZED 0x0001 // see also: PfW386Flags & fMinimized
  82. #define PRGINIT_MAXIMIZED 0x0002 // see also: PfW386Flags & fMaximized
  83. #define PRGINIT_WINLIE 0x0004 // see also: PfW386Flags & fWinLie
  84. #define PRGINIT_REALMODE 0x0008 // see also: PfW386Flags & fRealMode
  85. #define PRGINIT_REALMODESILENT 0x0100 // see also: PfW386Flags & fRealModeSilent
  86. #define PRGINIT_QUICKSTART 0x0200 // see also: PfW386Flags & fQuickStart /* ;Internal */
  87. #define PRGINIT_AMBIGUOUSPIF 0x0400 // see also: PfW386Flags & fAmbiguousPIF
  88. #define PRGINIT_NOPIF 0x1000 // no PIF found
  89. #define PRGINIT_DEFAULTPIF 0x2000 // default PIF found
  90. #define PRGINIT_INFSETTINGS 0x4000 // INF settings found
  91. #define PRGINIT_INHIBITPIF 0x8000 // INF indicates that no PIF be created
  92. /*
  93. * Real mode option flags. NOTE: this field is a dword. The low word
  94. * uses these flags to indicate required options. The high word is used
  95. * to specify "nice" but not required options.
  96. */
  97. #define RMOPT_MOUSE 0x0001 // Real mode mouse
  98. #define RMOPT_EMS 0x0002 // Expanded Memory
  99. #define RMOPT_CDROM 0x0004 // CD-ROM support
  100. #define RMOPT_NETWORK 0x0008 // Network support
  101. #define RMOPT_DISKLOCK 0x0010 // disk locking required
  102. #define RMOPT_PRIVATECFG 0x0020 // use private configuration (ie, CONFIG/AUTOEXEC)
  103. #define RMOPT_VESA 0x0040 // VESA driver
  104. #define ICONFILE_DEFAULT TEXT("PIFMGR.DLL")
  105. #define ICONINDEX_DEFAULT 0
  106. // for DOJ compliance, PROPPRG moved to shlobj.w
  107. #define GROUP_TSK 2 // tasking group
  108. #define TSK_DEFAULT (TSK_BACKGROUND)
  109. #define TSK_ALLOWCLOSE 0x0001 // PfW386Flags & fEnableClose
  110. #define TSK_BACKGROUND 0x0002 // PfW386Flags & fBackground
  111. #define TSK_EXCLUSIVE 0x0004 // PfW386Flags & fExclusive /* ;Internal */
  112. #define TSK_NOWARNTERMINATE 0x0010 // Don't warn before closing
  113. #define TSK_NOSCREENSAVER 0x0020 // Do not activate screen saver
  114. #define TSKINIT_DEFAULT 0
  115. #define TSKFGNDBOOST_DEFAULT 0 // fgnd boost /* ;Internal */
  116. #define TSKBGNDBOOST_DEFAULT 0 // bgnd boost /* ;Internal */
  117. /* ;Internal */
  118. #define TSKFGND_OLD_DEFAULT 100 // normal fgnd setting /* ;Internal */
  119. #define TSKBGND_OLD_DEFAULT 50 // normal bgnd setting /* ;Internal */
  120. /* ;Internal */
  121. #define TSKIDLESENS_DEFAULT 50 // % (min-max == 0-100)
  122. typedef struct PROPTSK { /* tsk */
  123. WORD flTsk; // see TSK_ flags
  124. WORD flTskInit; // see TSKINIT_ flags
  125. WORD wReserved1; // (reserved, must be zero)
  126. WORD wReserved2; // (reserved, must be zero)
  127. WORD wReserved3; // (reserved, must be zero)
  128. WORD wReserved4; // (reserved, must be zero)
  129. WORD wIdleSensitivity; // %, also affects PfW386Flags & fPollingDetect
  130. } PROPTSK;
  131. typedef UNALIGNED PROPTSK *PPROPTSK;
  132. typedef UNALIGNED PROPTSK FAR *LPPROPTSK;
  133. #define GROUP_VID 3 // video group
  134. #define VID_DEFAULT (VID_TEXTEMULATE)
  135. #define VID_TEXTEMULATE 0x0001 // PfW386Flags2 & fVidTxtEmulate
  136. #define VID_RETAINMEMORY 0x0080 // PfW386Flags2 & fVidRetainAllo
  137. #define VID_FULLSCREEN 0x0100 // PfW386Flags & fFullScreen
  138. #define VIDINIT_DEFAULT 0
  139. #define VIDSCREENLINES_MIN 0 // in # lines (0 = use VDD value)
  140. #define VIDSCREENLINES_DEFAULT 0 // in # lines
  141. #define VIDSCREENLINES_MAX 50 // in # lines /* ;Internal */
  142. typedef struct PROPVID { /* vid */
  143. WORD flVid; // see VID_ flags
  144. WORD flVidInit; // see VIDINIT_ flags
  145. WORD wReserved1; // (reserved, must be zero)
  146. WORD wReserved2; // (reserved, must be zero)
  147. WORD wReserved3; // (reserved, must be zero)
  148. WORD cScreenLines; // ([NonWindowsApp]:ScreenLines)
  149. } PROPVID;
  150. typedef UNALIGNED PROPVID *PPROPVID;
  151. typedef UNALIGNED PROPVID FAR *LPPROPVID;
  152. #define GROUP_MEM 4 // memory group
  153. #define MEM_DEFAULT 0
  154. #define MEMINIT_DEFAULT 0
  155. #define MEMINIT_NOHMA 0x0001 // PfW386Flags & fNoHMA
  156. #define MEMINIT_LOWLOCKED 0x0002 // PfW386Flags & fVMLocked
  157. #define MEMINIT_EMSLOCKED 0x0004 // PfW386Flags & fEMSLocked
  158. #define MEMINIT_XMSLOCKED 0x0008 // PfW386Flags & fXMSLocked
  159. #define MEMINIT_GLOBALPROTECT 0x0010 // PfW386Flags & fGlobalProtect
  160. #define MEMINIT_STRAYPTRDETECT 0x0020 // PfW386Flags & fStrayPtrDetect /* ;Internal */
  161. #define MEMINIT_LOCALUMBS 0x0040 // PfW386Flags & fLocalUMBs /* ;Internal */
  162. #define MEMLOW_MIN 0 // in KB
  163. #define MEMLOW_DEFAULT 0 // in KB
  164. #define MEMLOW_MAX 640 // in KB
  165. #define MEMEMS_MIN 0 // in KB
  166. #define MEMEMS_DEFAULT 0 // in KB
  167. #define MEMEMS_MAX 0xFFFF // in KB
  168. #define MEMXMS_MIN 0 // in KB
  169. #define MEMXMS_DEFAULT 0 // in KB
  170. #define MEMXMS_MAX 0xFFFF // in KB
  171. typedef struct PROPMEM { /* mem */
  172. WORD flMem; // see MEM_ flags
  173. WORD flMemInit; // see MEMINIT_ flags
  174. WORD wMinLow; // PfW386minmem
  175. WORD wMaxLow; // PfW386maxmem
  176. WORD wMinEMS; // PfMinEMMK
  177. WORD wMaxEMS; // PfMaxEMMK
  178. WORD wMinXMS; // PfMinXmsK
  179. WORD wMaxXMS; // PfMaxXmsK
  180. } PROPMEM;
  181. typedef UNALIGNED PROPMEM *PPROPMEM;
  182. typedef UNALIGNED PROPMEM FAR *LPPROPMEM;
  183. #define GROUP_KBD 5 // keyboard group
  184. #define KBD_DEFAULT (KBD_FASTPASTE)
  185. #define KBD_FASTPASTE 0x0001 // PfW386Flags & fINT16Paste
  186. #define KBD_NOALTTAB 0x0020 // PfW386Flags & fALTTABdis
  187. #define KBD_NOALTESC 0x0040 // PfW386Flags & fALTESCdis
  188. #define KBD_NOALTSPACE 0x0080 // PfW386Flags & fALTSPACEdis
  189. #define KBD_NOALTENTER 0x0100 // PfW386Flags & fALTENTERdis
  190. #define KBD_NOALTPRTSC 0x0200 // PfW386Flags & fALTPRTSCdis
  191. #define KBD_NOPRTSC 0x0400 // PfW386Flags & fPRTSCdis
  192. #define KBD_NOCTRLESC 0x0800 // PfW386Flags & fCTRLESCdis
  193. #define KBDINIT_DEFAULT 0
  194. #define KBDALTDELAY_MIN 1
  195. #define KBDALTDELAY_DEFAULT 5
  196. #define KBDALTDELAY_MAX 5000
  197. #define KBDALTPASTEDELAY_MIN 1
  198. #define KBDALTPASTEDELAY_DEFAULT 25
  199. #define KBDALTPASTEDELAY_MAX 5000
  200. #define KBDPASTEDELAY_MIN 1
  201. #define KBDPASTEDELAY_DEFAULT 3
  202. #define KBDPASTEDELAY_MAX 5000
  203. #define KBDPASTEFULLDELAY_MIN 1
  204. #define KBDPASTEFULLDELAY_DEFAULT 200
  205. #define KBDPASTEFULLDELAY_MAX 5000
  206. #define KBDPASTETIMEOUT_MIN 1
  207. #define KBDPASTETIMEOUT_DEFAULT 1000
  208. #define KBDPASTETIMEOUT_MAX 5000
  209. #define KBDPASTESKIP_MIN 1
  210. #define KBDPASTESKIP_DEFAULT 2
  211. #define KBDPASTESKIP_MAX 100
  212. #define KBDPASTECRSKIP_MIN 1
  213. #define KBDPASTECRSKIP_DEFAULT 10
  214. #define KBDPASTECRSKIP_MAX 100
  215. typedef struct PROPKBD { /* kbd */
  216. WORD flKbd; // see KBD_ flags
  217. WORD flKbdInit; // see KBDINIT_ flags
  218. WORD msAltDelay; // ([386Enh]:AltKeyDelay)
  219. WORD msAltPasteDelay; // ([386Enh]:AltPasteDelay)
  220. WORD msPasteDelay; // ([386Enh]:KeyPasteDelay)
  221. WORD msPasteFullDelay; // ([386Enh]:KeyBufferDelay)
  222. WORD msPasteTimeout; // ([386Enh]:KeyPasteTimeOut)
  223. WORD cPasteSkip; // ([386Enh]:KeyPasteSkipCount)
  224. WORD cPasteCRSkip; // ([386Enh]:KeyPasteCRSkipCount)
  225. } PROPKBD;
  226. typedef UNALIGNED PROPKBD *PPROPKBD;
  227. typedef UNALIGNED PROPKBD FAR *LPPROPKBD;
  228. #define GROUP_MSE 6 // mouse group
  229. /* No VxD currently pays attention to PROPMSE. VMDOSAPP should know how to
  230. * handle all cases resulting from a change in these flags.
  231. *
  232. * Note that MSE_WINDOWENABLE corresponds to the Windows NT "QuickEdit"
  233. * property, except backwards.
  234. */
  235. #define MSE_DEFAULT (MSE_WINDOWENABLE)
  236. #define MSE_WINDOWENABLE 0x0001 // ([NonWindowsApp]:MouseInDosBox)
  237. #define MSE_EXCLUSIVE 0x0002 //
  238. #define MSEINIT_DEFAULT 0 // default flags
  239. typedef struct PROPMSE { /* mse */
  240. WORD flMse; // see MSE_ flags
  241. WORD flMseInit; // see MSEINIT_ flags
  242. } PROPMSE;
  243. typedef UNALIGNED PROPMSE *PPROPMSE;
  244. typedef UNALIGNED PROPMSE FAR *LPPROPMSE;
  245. #define GROUP_SND 7 // sound group /* ;Internal */
  246. /* ;Internal */
  247. #define SND_DEFAULT (SND_SPEAKERENABLE) /* ;Internal */
  248. #define SND_SPEAKERENABLE 0x0001 // /* ;Internal */
  249. /* ;Internal */
  250. #define SNDINIT_DEFAULT 0 /* ;Internal */
  251. /* ;Internal */
  252. typedef struct PROPSND { /* snd */ /* ;Internal */
  253. WORD flSnd; // see SND_ flags /* ;Internal */
  254. WORD flSndInit; // see SNDINIT_ flags /* ;Internal */
  255. } PROPSND; /* ;Internal */
  256. typedef UNALIGNED PROPSND *PPROPSND; /* ;Internal */
  257. typedef UNALIGNED PROPSND FAR *LPPROPSND; /* ;Internal */
  258. /* ;Internal */
  259. /* ;Internal */
  260. #define GROUP_FNT 8 // font group
  261. #define FNT_DEFAULT (FNT_BOTHFONTS | FNT_AUTOSIZE)
  262. #define FNT_RASTERFONTS 0x0004 // allow raster fonts in dialog
  263. #define FNT_TTFONTS 0x0008 // allow truetype fonts in dialog
  264. #define FNT_BOTHFONTS (FNT_RASTERFONTS | FNT_TTFONTS)
  265. #define FNT_AUTOSIZE 0x0010 // enable auto-sizing
  266. #define FNT_RASTER 0x0400 // specified font is raster
  267. #define FNT_TT 0x0800 // specified font is truetype
  268. #define FNT_FONTMASK (FNT_BOTHFONTS)
  269. #define FNT_FONTMASKBITS 2 // # of bits shifted left
  270. #define FNTINIT_DEFAULT 0
  271. #define FNTINIT_NORESTORE 0x0001 // don't restore on restart
  272. typedef struct PROPFNT { /* fnt */
  273. WORD flFnt; // see FNT_ flags
  274. WORD flFntInit; // see FNTINIT_ flags
  275. WORD cxFont; // width of desired font
  276. WORD cyFont; // height of desired font
  277. WORD cxFontActual; // actual width of desired font
  278. WORD cyFontActual; // actual height of desired font
  279. CHAR achRasterFaceName[LF_FACESIZE]; // name to use for raster font
  280. CHAR achTTFaceName[LF_FACESIZE]; // name to use for tt font
  281. WORD wCurrentCP; // Current Codepage
  282. } PROPFNT;
  283. typedef UNALIGNED PROPFNT *PPROPFNT;
  284. typedef UNALIGNED PROPFNT FAR *LPPROPFNT;
  285. #define GROUP_WIN 9 // window group
  286. #define WIN_DEFAULT (WIN_SAVESETTINGS | WIN_TOOLBAR)
  287. #define WIN_SAVESETTINGS 0x0001 // save settings on exit (default)
  288. #define WIN_TOOLBAR 0x0002 // enable toolbar
  289. #define WININIT_DEFAULT 0
  290. #define WININIT_NORESTORE 0x0001 // don't restore on restart
  291. typedef struct PROPWIN { /* win */
  292. WORD flWin; // see WIN_ flags
  293. WORD flWinInit; // see WININIT flags
  294. WORD cxCells; // width in cells
  295. WORD cyCells; // height in cells
  296. WORD cxClient; // width of client window
  297. WORD cyClient; // height of client window
  298. WORD cxWindow; // width of entire window
  299. WORD cyWindow; // height of entire window
  300. WORD wLength;
  301. WORD wShowFlags;
  302. WORD wShowCmd;
  303. WORD xMinimize;
  304. WORD yMinimize;
  305. WORD xMaximize;
  306. WORD yMaximize;
  307. PIFRECT rcNormal;
  308. } PROPWIN;
  309. typedef UNALIGNED PROPWIN *PPROPWIN;
  310. typedef UNALIGNED PROPWIN FAR *LPPROPWIN;
  311. #define PIF_WP_SIZE ((sizeof(WORD)*7) + sizeof(PIFRECT))
  312. #define GROUP_ENV 10 // environment/startup group
  313. #define ENV_DEFAULT 0
  314. #define ENVINIT_DEFAULT 0
  315. #define ENVSIZE_MIN 0
  316. #define ENVSIZE_DEFAULT 0
  317. #define ENVSIZE_MAX 32768
  318. #define ENVDPMI_MIN 0 // in KB
  319. #define ENVDPMI_DEFAULT 0 // in KB (0 = Auto)
  320. #define ENVDPMI_MAX 0xFFFF // in KB
  321. typedef struct PROPENV { /* env */
  322. WORD flEnv; // see ENV_ flags
  323. WORD flEnvInit; // see ENVINIT_ flags
  324. CHAR achBatchFile[PIFDEFFILESIZE]; //
  325. WORD cbEnvironment; // ([386Enh]:CommandEnvSize)
  326. WORD wMaxDPMI; // (NEW)
  327. } PROPENV;
  328. typedef UNALIGNED PROPENV *PPROPENV;
  329. typedef UNALIGNED PROPENV FAR *LPPROPENV;
  330. #ifdef WINNT
  331. #define GROUP_NT31 11
  332. #ifndef UNICODE
  333. #define MAX_VALID_GROUP GROUP_NT31
  334. #endif
  335. typedef struct PROPNT31 {
  336. DWORD dwWNTFlags; /* ;Internal */
  337. DWORD dwRes1; /* ;Internal */
  338. DWORD dwRes2; /* ;Internal */
  339. char achConfigFile[PIFDEFPATHSIZE]; /* ;Internal */
  340. char achAutoexecFile[PIFDEFPATHSIZE]; /* ;Internal */
  341. } PROPNT31;
  342. typedef UNALIGNED PROPNT31 *PPROPNT31;
  343. typedef UNALIGNED PROPNT31 FAR *LPPROPNT31;
  344. #define COMPAT_TIMERTIC 0x10 /* ;Internal */
  345. #define NT31_COMPATTIMER COMPAT_TIMERTIC /* ;Internal */
  346. #endif
  347. #ifdef UNICODE
  348. #ifdef GROUP_NT31
  349. #define GROUP_NT40 12
  350. #else
  351. #define GROUP_NT40 11
  352. #endif
  353. #define MAX_VALID_GROUP GROUP_NT40
  354. #define WNT_LET_SYS_POS 0x0001
  355. #define WNT_CONSOLE_PROPS 0x0002
  356. typedef struct PROPNT40 { /* wnt */
  357. DWORD flWnt; // NT Specific PIF falgs
  358. // UNICODE version of strings, and copy of ANSI to see if they've changed
  359. WCHAR awchCmdLine[PIFSTARTLOCSIZE+PIFPARAMSSIZE+1]; // Command line
  360. CHAR achSaveCmdLine[PIFSTARTLOCSIZE+PIFPARAMSSIZE+1];// Saved ANSI Command Line
  361. WCHAR awchOtherFile[PIFDEFFILESIZE]; // name of "other" file in directory
  362. CHAR achSaveOtherFile[PIFDEFFILESIZE]; // Saved ANSI "other" file in directory
  363. WCHAR awchPIFFile[PIFDEFFILESIZE]; // name of PIF file
  364. CHAR achSavePIFFile[PIFDEFFILESIZE]; // Saved ANSI name of PIF file
  365. WCHAR awchTitle[PIFNAMESIZE]; // Title for cmd window
  366. CHAR achSaveTitle[PIFNAMESIZE]; // Saved ANSI Title for cmd window
  367. WCHAR awchIconFile[PIFDEFFILESIZE]; // Name of file containing icons
  368. CHAR achSaveIconFile[PIFDEFFILESIZE]; // Saved ANSI Name of file containing icons
  369. WCHAR awchWorkDir[PIFDEFPATHSIZE]; // working directory
  370. CHAR achSaveWorkDir[PIFDEFPATHSIZE]; // Saved ANSI working directory
  371. WCHAR awchBatchFile[PIFDEFFILESIZE]; // batch file
  372. CHAR achSaveBatchFile[PIFDEFFILESIZE]; // Saved ANSI batch file
  373. // Console properties
  374. DWORD dwForeColor; // Console Text Foreground Color
  375. DWORD dwBackColor; // Console Text Background Color
  376. DWORD dwPopupForeColor; // Console Popup Text Foreground Color
  377. DWORD dwPopupBackColor; // Console Popup Text Background Color
  378. COORD WinSize; // Console Window Size
  379. COORD BuffSize; // Console Buffer Size
  380. POINT WinPos; // Console Window Position
  381. DWORD dwCursorSize; // Console Cursor Size
  382. DWORD dwCmdHistBufSize; // Console Command Histroy Buffer Size
  383. DWORD dwNumCmdHist; // Number of Command Histories for Console
  384. } PROPNT40;
  385. typedef UNALIGNED PROPNT40 *PPROPNT40;
  386. typedef UNALIGNED PROPNT40 FAR *LPPROPNT40;
  387. #else
  388. #ifndef WINNT
  389. #define MAX_VALID_GROUP GROUP_ENV
  390. #endif
  391. #endif // UNICODE
  392. #define GROUP_ICON (MAX_VALID_GROUP+1)
  393. #define GROUP_MAX 0x0FF
  394. // ;Internal
  395. // ;Internal
  396. /* // ;Internal
  397. * Additional group ordinal bits that can be passed to VxD property hooks // ;Internal
  398. */ // ;Internal
  399. #define EXT_GROUP_QUERY 0x100 // ;Internal
  400. #define EXT_GROUP_UPDATE 0x200 // ;Internal
  401. // ;Internal
  402. // ;Internal
  403. /*
  404. * PIF "file" structures, used by .PIFs
  405. */
  406. #define PIFEXTSIGSIZE 16 // Length of extension signatures
  407. #define MAX_GROUP_NAME PIFEXTSIGSIZE //
  408. #define STDHDRSIG "MICROSOFT PIFEX" // extsig value for stdpifext
  409. #define LASTHDRPTR 0xFFFF // This value in the
  410. // extnxthdrfloff field indicates
  411. // there are no more extensions.
  412. #define W286HDRSIG30 "WINDOWS 286 3.0"
  413. #define W386HDRSIG30 "WINDOWS 386 3.0"
  414. #define WNTHDRSIG31 "WINDOWS NT 3.1"
  415. #define WENHHDRSIG40 "WINDOWS VMM 4.0" //
  416. #define WNTHDRSIG40 "WINDOWS NT 4.0"
  417. #define CONFIGHDRSIG40 "CONFIG SYS 4.0" //
  418. #define AUTOEXECHDRSIG40 "AUTOEXECBAT 4.0" //
  419. #define MAX_CONFIG_SIZE 4096
  420. #define MAX_AUTOEXEC_SIZE 4096
  421. #define CONFIGFILE TEXT("\\CONFIG.SYS") // normal filenames
  422. #define AUTOEXECFILE TEXT("\\AUTOEXEC.BAT")
  423. #define MCONFIGFILE TEXT("\\CONFIG.APP") // msdos-mode temp filenames
  424. #define MAUTOEXECFILE TEXT("\\AUTOEXEC.APP")
  425. #define WCONFIGFILE TEXT("\\CONFIG.WOS") // windows-mode temp filenames
  426. #define WAUTOEXECFILE TEXT("\\AUTOEXEC.WOS")
  427. typedef struct PIFEXTHDR { /* peh */
  428. CHAR extsig[PIFEXTSIGSIZE];
  429. WORD extnxthdrfloff;
  430. WORD extfileoffset;
  431. WORD extsizebytes;
  432. } PIFEXTHDR;
  433. typedef UNALIGNED PIFEXTHDR *PPIFEXTHDR;
  434. typedef UNALIGNED PIFEXTHDR FAR *LPPIFEXTHDR;
  435. /* Flags for MSflags
  436. */
  437. #define fResident 0x01 // Directly Modifies: Memory
  438. #define fGraphics 0x02 // Screen Exchange: Graphics/Text
  439. #define fNoSwitch 0x04 // Program Switch: Prevent
  440. #define fNoGrab 0x08 // Screen Exchange: None
  441. #define fDestroy 0x10 // Close Window on exit
  442. #define fCOM2 0x40 // Directly Modifies: COM2
  443. #define fCOM1 0x80 // Directly Modifies: COM1
  444. #define MEMMASK fResident
  445. #define GRAPHMASK fGraphics
  446. #define TEXTMASK ((BYTE)(~GRAPHMASK))
  447. #define PSMASK fNoSwitch
  448. #define SGMASK fNoGrab
  449. #define EXITMASK fDestroy
  450. #define COM2MASK fCOM2
  451. #define COM1MASK fCOM1
  452. /* Flags for behavior
  453. */
  454. #define fScreen 0x80 // Directly Modifies: Screen
  455. #define fForeground 0x40 // Set same as fScreen (alias)
  456. #define f8087 0x20 // No PIFEDIT control
  457. #define fKeyboard 0x10 // Directly Modifies: Keyboard
  458. #define SCRMASK (fScreen + fForeground)
  459. #define MASK8087 f8087
  460. #define KEYMASK fKeyboard
  461. /* Flags for sysflags
  462. */
  463. #define SWAPMASK 0x20
  464. #define PARMMASK 0x40
  465. /*
  466. * All strings in the STDPIF are in the OEM character set.
  467. */
  468. typedef struct STDPIF { /* std */ //Examples
  469. BYTE unknown; // 0x00 0x00
  470. BYTE id; // 0x01 0x78
  471. CHAR appname[PIFNAMESIZE]; // 0x02 'MS-DOS Prompt'
  472. WORD maxmem; // 0x20 0x0200 (512Kb)
  473. WORD minmem; // 0x22 0x0080 (128Kb)
  474. CHAR startfile[PIFSTARTLOCSIZE]; // 0x24 "COMMAND.COM"
  475. BYTE MSflags; // 0x63 0x10
  476. BYTE reserved; // 0x64 0x00
  477. CHAR defpath[PIFDEFPATHSIZE]; // 0x65 "\"
  478. CHAR params[PIFPARAMSSIZE]; // 0xA5 ""
  479. BYTE screen; // 0xE5 0x00
  480. BYTE cPages; // 0xE6 0x01 (ALWAYS!)
  481. BYTE lowVector; // 0xE7 0x00 (ALWAYS!)
  482. BYTE highVector; // 0xE8 0xFF (ALWAYS!)
  483. BYTE rows; // 0xE9 0x19 (Not used)
  484. BYTE cols; // 0xEA 0x50 (Not used)
  485. BYTE rowoff; // 0xEB 0x00 (Not used)
  486. BYTE coloff; // 0xEC 0x00 (Not used)
  487. WORD sysmem; // 0xED 0x0007 (Not used; 7=>Text, 23=>Grfx/Mult Text)
  488. CHAR shprog[PIFSHPROGSIZE]; // 0xEF 0's (Not used)
  489. CHAR shdata[PIFSHDATASIZE]; // 0x12F 0's (Not used)
  490. BYTE behavior; // 0x16F 0x00
  491. BYTE sysflags; // 0x170 0x00 (Not used)
  492. } STDPIF;
  493. typedef UNALIGNED STDPIF *PSTDPIF;
  494. typedef UNALIGNED STDPIF FAR *LPSTDPIF;
  495. /* Flags for PfW286Flags
  496. */
  497. #define fALTTABdis286 0x0001
  498. #define fALTESCdis286 0x0002
  499. #define fALTPRTSCdis286 0x0004
  500. #define fPRTSCdis286 0x0008
  501. #define fCTRLESCdis286 0x0010
  502. #define fNoSaveVid286 0x0020 // New for 3.10
  503. #define fCOM3_286 0x4000
  504. #define fCOM4_286 0x8000
  505. typedef struct W286PIF30 { /* 286 */ //Examples
  506. WORD PfMaxXmsK; // 0x19D 0x0000
  507. WORD PfMinXmsK; // 0x19F 0x0000
  508. WORD PfW286Flags; // 0x1A1 0x0000
  509. } W286PIF30;
  510. typedef UNALIGNED W286PIF30 *PW286PIF30;
  511. typedef UNALIGNED W286PIF30 FAR *LPW286PIF30;
  512. /* Flags for PfW386Flags
  513. */
  514. #define fEnableClose 0x00000001 //
  515. #define fEnableCloseBit 0 //
  516. #define fBackground 0x00000002 //
  517. #define fBackgroundBit 1 //
  518. #define fExclusive 0x00000004 // /* ;Internal */
  519. #define fExclusiveBit 2 // /* ;Internal */
  520. #define fFullScreen 0x00000008 //
  521. #define fFullScreenBit 3 //
  522. #define fALTTABdis 0x00000020 //
  523. #define fALTTABdisBit 5 //
  524. #define fALTESCdis 0x00000040 //
  525. #define fALTESCdisBit 6 //
  526. #define fALTSPACEdis 0x00000080 //
  527. #define fALTSPACEdisBit 7 //
  528. #define fALTENTERdis 0x00000100 //
  529. #define fALTENTERdisBit 8 //
  530. #define fALTPRTSCdis 0x00000200 //
  531. #define fALTPRTSCdisBit 9 //
  532. #define fPRTSCdis 0x00000400 //
  533. #define fPRTSCdisBit 10 //
  534. #define fCTRLESCdis 0x00000800 //
  535. #define fCTRLESCdisBit 11 //
  536. #define fPollingDetect 0x00001000 //
  537. #define fPollingDetectBit 12 //
  538. #define fNoHMA 0x00002000 //
  539. #define fNoHMABit 13 //
  540. #define fHasHotKey 0x00004000 //
  541. #define fHasHotKeyBit 14 //
  542. #define fEMSLocked 0x00008000 //
  543. #define fEMSLockedBit 15 //
  544. #define fXMSLocked 0x00010000 //
  545. #define fXMSLockedBit 16 //
  546. #define fINT16Paste 0x00020000 //
  547. #define fINT16PasteBit 17 //
  548. #define fVMLocked 0x00040000 //
  549. #define fVMLockedBit 18 //
  550. #define fGlobalProtect 0x00080000 // New for 4.00
  551. #define fGlobalProtectBit 19 // New for 4.00
  552. #define fMinimized 0x00100000 // New for 4.00
  553. #define fMinimizedBit 20 // New for 4.00
  554. #define fMaximized 0x00200000 // New for 4.00
  555. #define fMaximizedBit 21 // New for 4.00
  556. // 0x00400000 // Not used /* ;Internal */
  557. // 22 // Not used /* ;Internal */
  558. #define fRealMode 0x00800000 // New for 4.00
  559. #define fRealModeBit 23 // New for 4.00
  560. #define fWinLie 0x01000000 // New for 4.00
  561. #define fWinLieBit 24 // New for 4.00
  562. #define fStrayPtrDetect 0x02000000 // New for 4.00 /* ;Internal */
  563. #define fStrayPtrDetectBit 25 // New for 4.00 /* ;Internal */
  564. #define fNoSuggestMSDOS 0x04000000 // New for 4.00
  565. #define fNoSuggestMSDOSBit 26 // New for 4.00
  566. #define fLocalUMBs 0x08000000 // New for 4.00 /* ;Internal */
  567. #define fLocalUMBsBit 27 // New for 4.00 /* ;Internal */
  568. #define fRealModeSilent 0x10000000 // New for 4.00
  569. #define fRealModeSilentBit 28 // New for 4.00
  570. #define fQuickStart 0x20000000 // New for 4.00 /* ;Internal */
  571. #define fQuickStartBit 29 // New for 4.00 /* ;Internal */
  572. #define fAmbiguousPIF 0x40000000 // New for 4.00
  573. #define fAmbiguousPIFBit 30 // New for 4.00
  574. /* Flags for PfW386Flags2
  575. *
  576. * NOTE THAT THE LOW 16 BITS OF THIS DWORD ARE VDD RELATED
  577. * NOTE THAT ALL OF THE LOW 16 BITS ARE RESERVED FOR VIDEO BITS
  578. *
  579. * You cannot monkey with these bits locations without breaking
  580. * all VDDs as well as all old PIFs. SO DON'T MESS WITH THEM.
  581. */
  582. #define fVDDMask 0x0000FFFF //
  583. #define fVDDMinBit 0 //
  584. #define fVDDMaxBit 15 //
  585. #define fVidTxtEmulate 0x00000001 //
  586. #define fVidTxtEmulateBit 0 //
  587. #define fVidNoTrpTxt 0x00000002 // Obsolete
  588. #define fVidNoTrpTxtBit 1 // Obsolete
  589. #define fVidNoTrpLRGrfx 0x00000004 // Obsolete
  590. #define fVidNoTrpLRGrfxBit 2 // Obsolete
  591. #define fVidNoTrpHRGrfx 0x00000008 // Obsolete
  592. #define fVidNoTrpHRGrfxBit 3 // Obsolete
  593. #define fVidTextMd 0x00000010 // Obsolete
  594. #define fVidTextMdBit 4 // Obsolete
  595. #define fVidLowRsGrfxMd 0x00000020 // Obsolete
  596. #define fVidLowRsGrfxMdBit 5 // Obsolete
  597. #define fVidHghRsGrfxMd 0x00000040 // Obsolete
  598. #define fVidHghRsGrfxMdBit 6 // Obsolete
  599. #define fVidRetainAllo 0x00000080 //
  600. #define fVidRetainAlloBit 7 //
  601. /* ;Internal
  602. * This mask is used to isolate status bits shared with VM_Descriptor ;Internal
  603. */ /* ;Internal */
  604. /* ;Internal */
  605. #define PifDescMask /* ;Internal */ \
  606. (fALTTABdis + fALTESCdis + fALTSPACEdis + /* ;Internal */ \
  607. fALTENTERdis + fALTPRTSCdis + fPRTSCdis + /* ;Internal */ \
  608. fCTRLESCdis + fPollingDetect+ fNoHMA + /* ;Internal */ \
  609. fHasHotKey + fEMSLocked + fXMSLocked + /* ;Internal */ \
  610. fINT16Paste + fVMLocked) /* ;Internal */
  611. /* ;Internal */
  612. /* ;Internal */
  613. typedef struct W386PIF30 { /* 386 */ //Examples
  614. // These new maxmem/minmem fields allow values
  615. // that will not conflict with the 286-specific values
  616. WORD PfW386maxmem; // 0x1B9 0xFFFF (-1)
  617. WORD PfW386minmem; // 0x1BB 0xFFFF (-1)
  618. WORD PfFPriority; // 0x1BD 0x0064 (100)
  619. WORD PfBPriority; // 0x1BF 0x0032 (50)
  620. WORD PfMaxEMMK; // 0x1C1 0x0000 (0)
  621. WORD PfMinEMMK; // 0x1C3 0x0000 (0)
  622. WORD PfMaxXmsK; // 0x1C5 0x0800 (2048)
  623. WORD PfMinXmsK; // 0x1C7 0x0000 (0)
  624. DWORD PfW386Flags; // 0x1C9 0x00021003
  625. DWORD PfW386Flags2; // 0x1CD 0x0000001F
  626. WORD PfHotKeyScan; // 0x1D1 Scan code in lower byte
  627. WORD PfHotKeyShVal; // 0x1D3 Shift state
  628. WORD PfHotKeyShMsk; // 0x1D5 Mask for shift states interested in
  629. BYTE PfHotKeyVal; // 0x1D7 Enhanced flags
  630. BYTE PfHotKeyPad[9]; // 0x1D8 Pad Hot key section to 16 bytes
  631. CHAR PfW386params[PIFPARAMSSIZE]; // 0x1E1
  632. } W386PIF30;
  633. typedef UNALIGNED W386PIF30 *PW386PIF30;
  634. typedef UNALIGNED W386PIF30 FAR *LPW386PIF30;
  635. typedef struct WENHPIF40 { /* enh */ /* ;Internal */
  636. DWORD dwEnhModeFlagsProp; // PROPPRG data (subset) /* ;Internal */
  637. DWORD dwRealModeFlagsProp; // PROPPRG data (subset) /* ;Internal */
  638. CHAR achOtherFileProp[PIFDEFFILESIZE];//PROPPRG data (subset) /* ;Internal */
  639. CHAR achIconFileProp[PIFDEFFILESIZE];// PROPPRG data (subset) /* ;Internal */
  640. WORD wIconIndexProp; // PROPPRG data (subset) /* ;Internal */
  641. PROPTSK tskProp; // PROPTSK data /* ;Internal */
  642. PROPVID vidProp; // PROPVID data /* ;Internal */
  643. PROPKBD kbdProp; // PROPKBD data /* ;Internal */
  644. PROPMSE mseProp; // PROPMSE data /* ;Internal */
  645. PROPSND sndProp; // PROPSND data /* ;Internal */
  646. PROPFNT fntProp; // PROPFNT data /* ;Internal */
  647. PROPWIN winProp; // PROPWIN data /* ;Internal */
  648. PROPENV envProp; // PROPENV data /* ;Internal */
  649. WORD wInternalRevision; // Internal WENHPIF40 version /* ;Internal */
  650. } WENHPIF40; /* ;Internal */
  651. typedef UNALIGNED WENHPIF40 *PWENHPIF40; /* ;Internal */
  652. typedef UNALIGNED WENHPIF40 FAR *LPWENHPIF40; /* ;Internal */
  653. #ifdef WINNT
  654. /* Windows NT extension format */
  655. typedef struct WNTPIF31 { /* ;Internal */
  656. PROPNT31 nt31Prop; /* ;Internal */
  657. WORD wInternalRevision; /* ;Internal */
  658. } WNTPIF31; /* ;Internal */
  659. typedef UNALIGNED WNTPIF31 *PWNTPIF31; /* ;Internal */
  660. typedef UNALIGNED WNTPIF31 FAR *LPWNTPIF31; /* ;Internal */
  661. #endif
  662. /* ;Internal */
  663. #ifdef UNICODE
  664. typedef struct WNTPIF40 { /* adv */ /* ;Internal */
  665. PROPNT40 nt40Prop; // PROPWNT data /* ;Internal */
  666. WORD wInternalRevision; // Internal WNTPIF40 version /* ;Internal */
  667. } WNTPIF40; /* ;Internal */
  668. typedef UNALIGNED WNTPIF40 *PWNTPIF40; /* ;Internal */
  669. typedef UNALIGNED WNTPIF40 FAR *LPWNTPIF40; /* ;Internal */
  670. #endif
  671. /* ;Internal */
  672. // /* ;Internal */
  673. // Whenever a previously reserved field or bit becomes used, increment /* ;Internal */
  674. // the internal revision so that we know to zero them out when we see a /* ;Internal */
  675. // down-level PIF file. /* ;Internal */
  676. // /* ;Internal */
  677. #define WENHPIF40_VERSION 1 // Current internal version /* ;Internal */
  678. #define WNTPIF40_VERSION 1 // Current internal version /* ;Internal */
  679. #define WNTPIF31_VERSION 1 // Current internal version /* ;Internal */
  680. /* ;Internal */
  681. typedef struct PIFDATA { /* pd */ //Examples /* ;Internal */
  682. /* ;Internal */
  683. STDPIF stdpifdata; // 0x000 /* ;Internal */
  684. /* ;Internal */
  685. PIFEXTHDR stdpifext; // 0x171 /* ;Internal */
  686. // struct { /* ;Internal */
  687. // CHAR extsig[PIFEXTSIGSIZE]; // 0x171 "MICROSOFT PIFEX" /* ;Internal */
  688. // WORD extnxthdrfloff; // 0x181 0x0187 (or 0xFFFF) /* ;Internal */
  689. // WORD extfileoffset; // 0x183 0x0000 /* ;Internal */
  690. // WORD extsizebytes; // 0x185 0x0171 /* ;Internal */
  691. // }; /* ;Internal */
  692. /* ;Internal */
  693. PIFEXTHDR w286hdr30; // 0x187 /* ;Internal */
  694. // struct { /* ;Internal */
  695. // CHAR extsig[PIFEXTSIGSIZE]; // 0x187 "WINDOWS 286 3.0" /* ;Internal */
  696. // WORD extnxthdrfloff; // 0x197 0x01A3 (or 0xFFFF) /* ;Internal */
  697. // WORD extfileoffset; // 0x199 0x019D /* ;Internal */
  698. // WORD extsizebytes; // 0x19B 0x0006 /* ;Internal */
  699. // }; /* ;Internal */
  700. W286PIF30 w286ext30; // 0x19D /* ;Internal */
  701. /* ;Internal */
  702. PIFEXTHDR w386hdr30; // 0x1A3 /* ;Internal */
  703. // struct { /* ;Internal */
  704. // CHAR extsig[PIFEXTSIGSIZE]; // 0x1A3 "WINDOWS 386 3.0" /* ;Internal */
  705. // WORD extnxthdrfloff; // 0x1B3 0xFFFF (ENH=0x221) /* ;Internal */
  706. // WORD extfileoffset; // 0x1B5 0x01B9 /* ;Internal */
  707. // WORD extsizebytes; // 0x1B7 0x0068 /* ;Internal */
  708. // }; /* ;Internal */
  709. W386PIF30 w386ext30; // 0x1B9 /* ;Internal */
  710. /* ;Internal */
  711. PIFEXTHDR wenhhdr40; // 0x221 /* ;Internal */
  712. // struct { /* ;Internal */
  713. // CHAR extsig[PIFEXTSIGSIZE]; // 0x221 "WINDOWS VMM 4.0" /* ;Internal */
  714. // WORD extnxthdrfloff; // 0x231 0x???? /* ;Internal */
  715. // WORD extfileoffset; // 0x233 0x0237 /* ;Internal */
  716. // WORD extsizebytes; // 0x235 ??? /* ;Internal */
  717. // }; /* ;Internal */
  718. WENHPIF40 wenhext40; // 0x237 /* ;Internal */
  719. #ifdef WINNT
  720. PIFEXTHDR wnthdr31; // 0x000 /* ;Internal */
  721. // struct { /* ;Internal */
  722. // CHAR extsig[PIFEXTSIGSIZE]; // 0x000 "WINDOWS NT 3.1" /* ;Internal */
  723. // WORD extnxthdrfloff; // 0x000 0xFFFF /* ;Internal */
  724. // WORD extfileoffset; // 0x000 0x0237 /* ;Internal */
  725. // WORD extsizebytes; // 0x000 ??? /* ;Internal */
  726. // }; /* ;Internal */
  727. WNTPIF31 wntpif31; // 0x000 /* ;Internal */
  728. #endif
  729. #ifdef UNICODE
  730. PIFEXTHDR wnthdr40; // 0x000 /* ;Internal */
  731. // struct { /* ;Internal */
  732. // CHAR extsig[PIFEXTSIGSIZE]; // 0x000 "WINDOWS NT 4.0" /* ;Internal */
  733. // WORD extnxthdrfloff; // 0x000 0xFFFF /* ;Internal */
  734. // WORD extfileoffset; // 0x000 0x0237 /* ;Internal */
  735. // WORD extsizebytes; // 0x000 ??? /* ;Internal */
  736. // }; /* ;Internal */
  737. WNTPIF40 wntpif40; // 0x000 /* ;Internal */
  738. #endif
  739. /* ;Internal */
  740. } PIFDATA; // 0x221 if Windows 3.x PIF /* ;Internal */
  741. typedef UNALIGNED PIFDATA *PPIFDATA; /* ;Internal */
  742. typedef UNALIGNED PIFDATA FAR *LPPIFDATA; /* ;Internal */
  743. /* ;Internal */
  744. /* ;Internal */ /* ;Internal */
  745. /* AssociateProperties associations
  746. */
  747. #define HVM_ASSOCIATION 1
  748. #define HWND_ASSOCIATION 2
  749. #define LPARGS_ASSOCIATION 3 /* ;Internal */
  750. /* SHEETTYPEs for AddPropertySheet/EnumPropertySheets
  751. */
  752. #define SHEETTYPE_SIMPLE 0
  753. #define SHEETTYPE_ADVANCED 1
  754. /* External function ordinals and prototypes
  755. */
  756. #define ORD_OPENPROPERTIES 2
  757. #define ORD_GETPROPERTIES 3
  758. #define ORD_SETPROPERTIES 4
  759. #define ORD_EDITPROPERTIES 5
  760. #define ORD_FLUSHPROPERTIES 6
  761. #define ORD_ENUMPROPERTIES 7
  762. #define ORD_ASSOCIATEPROPERTIES 8
  763. #define ORD_CLOSEPROPERTIES 9
  764. #define ORD_LOADPROPERTYLIB 10
  765. #define ORD_ENUMPROPERTYLIBS 11
  766. #define ORD_FREEPROPERTYLIB 12
  767. #define ORD_ADDPROPERTYSHEET 13
  768. #define ORD_REMOVEPROPERTYSHEET 14
  769. #define ORD_LOADPROPERTYSHEETS 15
  770. #define ORD_ENUMPROPERTYSHEETS 16
  771. #define ORD_FREEPROPERTYSHEETS 17
  772. #define ORD_CREATESTARTUPPROPERTIES 20
  773. #define ORD_DELETESTARTUPPROPERTIES 21
  774. typedef UINT PIFWIZERR;
  775. #define PIFWIZERR_SUCCESS 0
  776. #define PIFWIZERR_GENERALFAILURE 1
  777. #define PIFWIZERR_INVALIDPARAM 2
  778. #define PIFWIZERR_UNSUPPORTEDOPT 3
  779. #define PIFWIZERR_OUTOFMEM 4
  780. #define PIFWIZERR_USERCANCELED 5
  781. #define WIZACTION_UICONFIGPROP 0
  782. #define WIZACTION_SILENTCONFIGPROP 1
  783. #define WIZACTION_CREATEDEFCLEANCFG 2
  784. /* XLATOFF */
  785. #ifdef WINAPI
  786. PIFWIZERR WINAPI AppWizard(HWND hwnd, HANDLE hProps, UINT action);
  787. int WINAPI OpenProperties(LPCTSTR lpszApp, LPCTSTR lpszPIF, UINT hInf, UINT flOpt);
  788. int WINAPI GetProperties(HANDLE hProps, LPCSTR lpszGroup, LPVOID lpProps, int cbProps, UINT flOpt);
  789. int WINAPI SetProperties(HANDLE hProps, LPCSTR lpszGroup, const VOID FAR *lpProps, int cbProps, UINT flOpt);
  790. int WINAPI EditProperties(HANDLE hProps, LPCTSTR lpszTitle, UINT uStartPage, HWND hwnd, UINT uMsgPost);
  791. int WINAPI FlushProperties(HANDLE hProps, UINT flOpt);
  792. HANDLE WINAPI EnumProperties(HANDLE hProps);
  793. LONG_PTR WINAPI AssociateProperties(HANDLE hProps, int iAssociate, LONG_PTR lData);
  794. int WINAPI CloseProperties(HANDLE hProps, UINT flOpt);
  795. int WINAPI CreateStartupProperties(HANDLE hProps, UINT flOpt);
  796. int WINAPI DeleteStartupProperties(HANDLE hProps, UINT flOpt);
  797. BOOL WINAPI PifPropGetPages(LPVOID lpv, LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam);
  798. #ifdef PIF_PROPERTY_SHEETS
  799. HANDLE WINAPI LoadPropertyLib(LPCTSTR lpszDLL, int fLoad);
  800. HANDLE WINAPI EnumPropertyLibs(HANDLE iLib, LPHANDLE lphDLL, LPSTR lpszDLL, int cbszDLL);
  801. BOOL WINAPI FreePropertyLib(HANDLE hLib);
  802. HANDLE WINAPI AddPropertySheet(const PROPSHEETPAGE FAR *lppsi, int iType);
  803. BOOL WINAPI RemovePropertySheet(HANDLE hSheet);
  804. int WINAPI LoadPropertySheets(HANDLE hProps, int flags);
  805. INT_PTR WINAPI EnumPropertySheets(HANDLE hProps, int iType, INT_PTR iSheet, LPPROPSHEETPAGE lppsi);
  806. HANDLE WINAPI FreePropertySheets(HANDLE hProps, int flags);
  807. #endif /* PIF_PROPERTY_SHEETS */
  808. #endif /* WINAPI */
  809. #ifndef RC_INVOKED
  810. #pragma pack() /* Revert to default packing */
  811. #endif /* RC_INVOKED */
  812. /* XLATON */
  813. #endif // _INC_PIF