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.

668 lines
27 KiB

  1. /*
  2. * Microsoft Confidential
  3. * Copyright (C) Microsoft Corporation 1992
  4. * All Rights Reserved.
  5. *
  6. *
  7. * This is intended to supercede MULT.H as the most complete
  8. * reference we have on DOS INT 2Fh usage. The header immediately
  9. * below is an attempt to give an overview of all DOS and 3rd-party
  10. * INT 2Fhs, but equates which follow are strictly for MS-DOS-specific
  11. * functions.
  12. *
  13. * Created 4/28/92 JTP
  14. */
  15. /*
  16. * The current set of defined multiplex channels is (* means documented):
  17. *
  18. * Channel(h) Issuer Receiver Function
  19. * ---------- ------ -------- --------
  20. * 00h server PSPRINT print job control
  21. * *01h print/apps PRINT Queueing of files
  22. * 02h BIOS REDIR signal open/close of printers
  23. *
  24. * 05h command REDIR obtain text of net int 24 message
  25. * *06h server/assign ASSIGN Install check
  26. *
  27. * 08h external driver DRIVER.SYS interface to internal routines
  28. *
  29. * 10h sharer/server SHARE install check
  30. * 11h DOS/server Redir install check/redirection funcs
  31. * 12h sharer/redir DOS dos functions and structure maint
  32. * 13h MSNET MSNET movement of NCBs
  33. * 13h external driver IBMBIO Reset_Int_13, allows installation
  34. * of alternative INT_13 drivers after
  35. * boot_up
  36. * 14h(IBM)DOS NLSFUNC down load NLS country info,DOS 3.3
  37. * 14h(MS) APPS POPUP MSDOS 4 popup screen functions
  38. *
  39. * ***> NOTE <*** Yes there are 2 users of 14h but since
  40. * DOS 4.XX doesn't use NLSFUNC, there is no conflict
  41. *
  42. * 15h APPS MSCDEX CD-ROM extensions interface
  43. * 15h GRAPHICS (conflicts)
  44. * 16h WIN386 WIN386 Windows communications
  45. * 17h Clipboard WINDOWS Clipboard interface
  46. * *18h Applications MS-Manager Toggle interface to manager
  47. * 19h Shell DOS 4.x shell only (SHELLB.COM)
  48. * 1Ah Ansi.sys
  49. * 1Bh Fastopen,Vdisk IBMBIO EMS INT 67H stub handler
  50. * (see IBM's XMA2EMS driver for DOS4)
  51. *
  52. * 23h stolen by DR-DOS 5.0 GRAFTABL
  53. * 27h stolen by DR-DOS 6.0 TaskMAX
  54. * 27h stolen by Novell DOS7 EMM386
  55. * 2Ah stolen by Gammafax FaxBIOS
  56. * 2Eh stolen by Novell DOS7 GRAFTABL
  57. * 39h stolen by Kingswood Some ISV TSR thingie
  58. *
  59. * 40h OS/2
  60. * 41h Lanman
  61. * 42h Lanman
  62. * 43h Himem
  63. * 00h XMS installation check
  64. * 08h return A20 handler number
  65. * 09h return XMS handle table address
  66. * 10h return XMS entry point address
  67. * 20h reserved for Mach 20 Himem support
  68. * 30h reserved for Himem external A20 code
  69. * E0h-E4h stolen by Novell DPMS
  70. * 44h Dosextender
  71. * 45H Windows profiler
  72. * 46h Windows/286 DOS extender
  73. * 47h Basic Compiler Vn. 7.0
  74. * 48h Doskey
  75. * C0h-C5h stolen by PCED
  76. * 49h DOS 5.x install also used by original Compaq
  77. * Restricted DOS (RDOS)
  78. * 4Ah Multi-Purpose
  79. * multMULTSWPDSK 00h Swap Disk in drive A (BIOS)
  80. * multMULTGETHMAPTR 01h Get available HMA & ptr
  81. * multMULTALLOCHMA 02h Allocate HMA (bx == no of bytes)
  82. * multMULTTASKSHELL 05h Shell/switcher API
  83. * multMULTRPLTOM 06h Top Of Memory for RPL support
  84. * multSmartdrv 10h
  85. * multDblSpace 11h
  86. * multMRCIDetect 12h
  87. * multMRCIBackPatch 13h
  88. * multOpenBootLog 14h
  89. * multWriteBootLog 15h
  90. * multCloseBootLog 16h
  91. * multNWRedir 17h
  92. *
  93. * 4Bh Task Switcher API
  94. *
  95. * 4Ch APPS APM Advanced power management (obsolete)
  96. *
  97. * 4Dh Kana Kanji Converter, MSKK
  98. * 4Eh Kana Kanji Converter, MSKK
  99. * 4Fh Multilingual DOS, MSKK
  100. *
  101. * 50h SETNLS (new for DOS 7.00 (Jaguar))
  102. *
  103. * 51h ODI real mode support driver (for Chicago)
  104. *
  105. * 52h Reserved by MS for Stac Electronics
  106. * (but stolen by JAM Real-Time Data Compression)
  107. *
  108. * 53h POWER(APM) For broadcasting APM events
  109. * 54h APPS POWER(APM) To control POWER status from apps
  110. * 53h (stolen by TesSeRact TSR library)
  111. *
  112. * 55h COMMAND.COM
  113. * multCOMFIRST 00h API to determine whether 1st
  114. * instance of command.com
  115. * 56h INTERLINK
  116. * 57h IOMEGA
  117. *
  118. * 58h ChiNet ChiNet transition interface used in
  119. * loading Chicago from a remote drive
  120. *
  121. * 5Dh (stolen by Award PCDISK.EXE v1.02c PCMCIA/ATA driver)
  122. * 60h (stolen by IPLAY by Prime and Excalibur)
  123. * 62h (stolen by PC Tools virus protector)
  124. *
  125. * 70h APPS APPS for software licensing
  126. *
  127. * 7Ah Novell (hey, how'd they get in our range?)
  128. *
  129. * End of Microsoft-reserved range
  130. *
  131. * ABh Unspecified IBM use
  132. * ACh Graphics
  133. * ADh NLS (toronto) (DISPLAY.SYS and KEYB.COM)
  134. * AEh COMMAND.COM Installable command support
  135. * AFh Mode
  136. * B0h GRAFTABL GRAFTABL
  137. * B7h APPEND
  138. * B8h Networks Misc
  139. * B9h PC Network
  140. * BCh EGA.SYS
  141. * BFh PC LAN Program
  142. *
  143. * End of IBM-reserved range (although it seems to have become a jointly
  144. * reserved range....)
  145. *
  146. * D7h Banyan VINES
  147. * D8h Novell
  148. *
  149. * Old guidelines governing use and future assignment of multiplex #'s
  150. * (they must be old because no one seems to have paid them much attention)
  151. *
  152. * MUX 00-3F reserved for IBM
  153. * MUX 80-BF reserved for IBM
  154. * MUX 40-7F reserved for Microsoft
  155. * MUX C0-FF users
  156. *
  157. * New guidelines governing use and future assignment of multiplex #'s
  158. *
  159. * + Just keep new MS multiplex assignments below 80h, ok?
  160. */
  161. #define INT_MULT 0x2F
  162. /* PRINT services
  163. */
  164. #define I2F_PSPRINT 0x00
  165. #define I2FPSPRINT_YIELD 0x80
  166. #define I2F_PRINT 0x01
  167. #define I2FPRINT_INSTALLCHECK 0x00
  168. #define I2FPRINT_QUEUEFILE 0x01
  169. #define I2FPRINT_REMOVEFILE 0x02
  170. #define I2FPRINT_REMOVEALL 0x03
  171. #define I2FPRINT_FREEZEQUEUE 0x04
  172. #define I2FPRINT_THAWQUEUE 0x05
  173. #define I2FPRINT_GETDEVICE 0x06
  174. #define I2F_PCLAN_REDIR 0x02
  175. #define I2F_HARDERR 0x05
  176. #define I2FHARDERR_INSTALLCHECK 0x00
  177. #define I2FHARDERR_EXPAND_EXTERR 0x01
  178. #define I2FHARDERR_EXPAND_PARMERR 0x02
  179. #define I2F_ASSIGN 0x06
  180. #define I2FASSIGN_INSTALLCHECK 0x00
  181. #define I2FASSIGN_GET_DRIVE_ASSIGNS 0x01
  182. #define I2F_DRIVER 0x08
  183. #define I2FDRIVER_INSTALLCHECK 0x00
  184. #define I2FDRIVER_ADD_DEVICE 0x01
  185. #define I2FDRIVER_EXEC_REQUEST 0x02
  186. #define I2FDRIVER_GET_DRIVE_DATA 0x03
  187. #define MultSHARE 0x10 // old-style definition
  188. #define I2F_SHARE 0x10
  189. #define I2FSHARE_INSTALLCHECK 0x00 // gshare.asm: MFT_Enter
  190. #define I2FSHARE_MAKEENTRY 0x01 // gshare.asm: MFT_Enter
  191. #define I2FSHARE_CLOSE 0x02 // gshare.asm: MFTClose
  192. #define I2FSHARE_CLOSEBYUID 0x03 // gshare.asm: MFTClu
  193. #define I2FSHARE_CLOSEBYPID 0x04 // gshare.asm: MFTCloseP
  194. #define I2FSHARE_CLOSEBYNAME 0x05 // gshare.asm: MFTCloN
  195. #define I2FSHARE_SETBYTELOCK 0x06 // gshare.asm: Set_Mult_Block
  196. #define I2FSHARE_CLRBYTELOCK 0x07 // gshare.asm: Clr_Mult_Block
  197. #define I2FSHARE_CHKBYTELOCK 0x08 // gshare.asm: Chk_Block
  198. #define I2FSHARE_GETENTRY 0x09 // gshare2.asm: MFT_Get
  199. #define I2FSHARE_SAVESFTTOFCB 0x0A // gshare2.asm: ShSave
  200. #define I2FSHARE_CHKFCB 0x0B // gshare2.asm: ShChk
  201. #define I2FSHARE_COLLAPSESFTS 0x0C // gshare2.asm: ShCol
  202. #define I2FSHARE_CLOSEFILE 0x0D // gshare2.asm: ShCloseFile
  203. #define I2FSHARE_UPDATESFTS 0x0E // gshare2.asm: ShSU
  204. #define MultNET 0x11 // old-style definitions
  205. #define MultIFS 0x11
  206. #define I2F_REDIR 0x11
  207. #define I2FREDIR_INSTALLCHECK 0x00
  208. #define I2FREDIR_RMDIR 0x01
  209. #define I2FREDIR_SEQ_RMDIR 0x02
  210. #define I2FREDIR_MKDIR 0x03
  211. #define I2FREDIR_SEQ_MKDIR 0x04
  212. #define I2FREDIR_CHDIR 0x05
  213. #define I2FREDIR_CLOSE 0x06
  214. #define I2FREDIR_COMMIT 0x07
  215. #define I2FREDIR_READ 0x08
  216. #define I2FREDIR_WRITE 0x09
  217. #define I2FREDIR_LOCK 0x0A
  218. #define I2FREDIR_UNLOCK 0x0B
  219. #define I2FREDIR_DISK_INFO 0x0C
  220. #define I2FREDIR_SET_FILE_ATTR 0x0D
  221. #define I2FREDIR_SEQ_SET_FILE_ATTR 0x0E
  222. #define I2FREDIR_GET_FILE_INFO 0x0F
  223. #define I2FREDIR_SEQ_GET_FILE_INFO 0x10
  224. #define I2FREDIR_RENAME 0x11
  225. #define I2FREDIR_SEQ_RENAME 0x12
  226. #define I2FREDIR_DELETE 0x13
  227. #define I2FREDIR_SEQ_DELETE 0x14
  228. #define I2FREDIR_OPEN 0x15
  229. #define I2FREDIR_SEQ_OPEN 0x16
  230. #define I2FREDIR_CREATE 0x17
  231. #define I2FREDIR_SEQ_CREATE 0x18
  232. #define I2FREDIR_SEQ_SEARCH_FIRST 0x19
  233. #define I2FREDIR_SEQ_SEARCH_NEXT 0x1A
  234. #define I2FREDIR_SEARCH_FIRST 0x1B
  235. #define I2FREDIR_SEARCH_NEXT 0x1C
  236. #define I2FREDIR_ABORT 0x1D
  237. #define I2FREDIR_ASSOPER 0x1E
  238. #define I2FREDIR_PRINTER_SET_STRING 0x1F
  239. #define I2FREDIR_FLUSHBUF 0x20
  240. #define I2FREDIR_BUFWRITE 0x21
  241. #define I2FREDIR_RESETENVIRONMENT 0x22
  242. #define I2FREDIR_SPOOLCHECK 0x23
  243. #define I2FREDIR_SPOOLCLOSE 0x24
  244. #define I2FREDIR_DEVICEOPER 0x25
  245. #define I2FREDIR_SPOOLECHOCHECK 0x26
  246. #define I2FREDIR_UNUSED1 0x27
  247. #define I2FREDIR_UNUSED2 0x28
  248. #define I2FREDIR_UNUSED3 0x29
  249. #define I2FREDIR_CLOSEFILES_FOR_UID 0x2A
  250. #define I2FREDIR_DEVICE_IOCTL 0x2B
  251. #define I2FREDIR_UPDATE_CB 0x2C
  252. #define I2FREDIR_FILE_XATTRIBUTES 0x2D
  253. #define I2FREDIR_XOPEN 0x2E
  254. #define I2FREDIR_DEPENDENT_IOCTL 0x2F
  255. #define I2FREDIR_PIPE_PEEK 0x31
  256. #define MultDOS 0x12 // old-style definition
  257. #define I2F_DOS 0x12 // DOS call back
  258. #define I2FDOS_INSTALLCHECK 0x00
  259. #define I2FDOS_CLOSE 0x01
  260. #define I2FDOS_RECSET 0x02
  261. #define I2FDOS_GET_DOSGROUP 0x03
  262. #define I2FDOS_PATHCHRCMP 0x04
  263. #define I2FDOS_OUT 0x05
  264. #define I2FDOS_NET_I24_ENTRY 0x06
  265. #define I2FDOS_PLACEBUF 0x07
  266. #define I2FDOS_FREE_SFT 0x08
  267. #define I2FDOS_BUFWRITE 0x09
  268. #define I2FDOS_SHARE_VIOLATION 0x0A
  269. #define I2FDOS_SHARE_ERROR 0x0B
  270. #define I2FDOS_SET_SFT_MODE 0x0C
  271. #define I2FDOS_DATE16 0x0D
  272. #define I2FDOS_UNUSED1 0x0E // (was SETVISIT)
  273. #define I2FDOS_SCANPLACE 0x0F
  274. #define I2FDOS_UNUSED2 0x10 // (was SKIPVISIT)
  275. #define I2FDOS_STRCPY 0x11
  276. #define I2FDOS_STRLEN 0x12
  277. #define I2FDOS_UCASE 0x13
  278. #define I2FDOS_POINTCOMP 0x14
  279. #define I2FDOS_CHECKFLUSH 0x15
  280. #define I2FDOS_SFFROMSFN 0x16
  281. #define I2FDOS_GETCDSFROMDRV 0x17
  282. #define I2FDOS_GET_USER_STACK 0x18
  283. #define I2FDOS_GETTHISDRV 0x19
  284. #define I2FDOS_DRIVEFROMTEXT 0x1A
  285. #define I2FDOS_SETYEAR 0x1B
  286. #define I2FDOS_DSUM 0x1C
  287. #define I2FDOS_DSLIDE 0x1D
  288. #define I2FDOS_STRCMP 0x1E
  289. #define I2FDOS_INITCDS 0x1F
  290. #define I2FDOS_PJFNFROMHANDLE 0x20
  291. #define I2FDOS__NAMETRANS 0x21
  292. #define I2FDOS_CAL_LK 0x22
  293. #define I2FDOS_DEVNAME 0x23
  294. #define I2FDOS_IDLE 0x24
  295. #define I2FDOS_DSTRLEN 0x25
  296. #define I2FDOS_NLS_OPEN 0x26 // DOS 3.3
  297. #define I2FDOS__CLOSE 0x27 // DOS 3.3
  298. #define I2FDOS_NLS_LSEEK 0x28 // DOS 3.3
  299. #define I2FDOS__READ 0x29 // DOS 3.3
  300. #define I2FDOS_FASTINIT 0x2A // (for FASTOPEN; see fastopen.inc)
  301. #define I2FDOS_NLS_IOCTL 0x2B // DOS 3.3
  302. #define I2FDOS_GETDEVLIST 0x2C // DOS 3.3
  303. #define I2FDOS_NLS_GETEXT 0x2D // DOS 3.3
  304. #define I2FDOS_MSG_RETRIEVAL 0x2E // DOS 4.0
  305. #define I2FDOS_FAKE_VERSION 0x2F // DOS 4.0
  306. #define I2FDOS_FndSFTPathInfo 0x30 // Return SFT path/cluster info
  307. #define I2FDOS_SetFAT32Flgs 0x31 // Signal FAT32 win support and TSR flags
  308. #define I2F_DISK 0x13
  309. #define I2FDISK_SET_INT_HDLR 0x1300
  310. #define NLSFUNC 0x14 // old-style definition
  311. #define I2F_NLSFUNC 0x14 // NLSFUNC CALLS, DOS 3.3
  312. #define I2FNLSFUNC_INSTALLCHECK 0x00
  313. #define I2FNLSFUNC_CHGCODEPAGE 0x01
  314. #define I2FNLSFUNC_GETEXTINFO 0x02
  315. #define I2FNLSFUNC_SETCODEPAGE 0x03
  316. #define I2FNLSFUNC_GETCNTRY 0x04
  317. #define I2F_MSCDEX 0x15
  318. #define I2F_DOS386 0x16
  319. #define I2FDOS386_Logo 0x0E // IO.SYS service for logo management
  320. #define I2FDOS386_INT10 0x0F // IO.SYS service to replace INT 10h hook
  321. #define I2FDOS386_Get_Shell 0x11 // IO.SYS service to return shell info
  322. // Flags returned in BX by the I2FDOS386_Get_Shell call
  323. #define SHELLFLAG_CLEAN 0x01
  324. #define SHELLFLAG_DOSCLEAN 0x02
  325. #define SHELLFLAG_NETCLEAN 0x04
  326. #define SHELLFLAG_INTERACTIVE 0x08
  327. #define SHELLFLAG_NOAUTO 0x20
  328. #define SHELLFLAG_DISABLELOADTOP 0x40
  329. #define SHELLFLAG_MSDOSMODE 0x80
  330. #define I2FDOS386_Get_BIOS_Data 0x12 // IO.SYS service to return IO.SYS data
  331. #define I2FDOS386_Get_SYSDAT_Path 0x13 // IO.SYS service to return path to SYSTEM.DAT
  332. #define I2FDOS386_Set_SYSDAT_Path 0x14 // IO.SYS service to set path to SYSTEM.DAT
  333. #define I2F_CLIPBOARD 0x17
  334. #define I2F_MSMANAGER 0x18 // used by old MS-DOS Manager program
  335. #define I2F_DOS4SHELL 0x19
  336. #define MultANSI 0x1A // old-style definition
  337. #define I2F_ANSI 0x1A // ANSI.SYS multiplex #
  338. #define I2FANSI_INSTALLCHECK 0x00 // install check for ANSI
  339. #define I2FANSI_IOCTL 0x01 // INT 2Fh interface to IOCTL
  340. #define I2FANSI_DA_INFO 0x02 // information passing to ANSI
  341. #define I2F_XMA2EMS 0x1B // is this no longer used???
  342. #define I2F_OS2_3XBOX 0x40
  343. #define I2F3XBOX_SWITCHBGND 0x01
  344. #define I2F3XBOX_SWITCHFGND 0x02
  345. #define I2F_LANMAN41 0x41
  346. #define I2F_LANMAN42 0x42
  347. #define I2F_XMS 0x43 // see HIMEM.SYS for details
  348. #define I2FXMS_INSTALLCHECK 0x00
  349. #define I2FXMS_GETADDRESS 0x10
  350. // private functions:
  351. // 08h - return A20 handler
  352. // 09h - return XMS handle table address
  353. // 20h - used for Mach20 version
  354. // 30h - check for external A20 handler
  355. #define I2F_DOSX 0x44 // what is this exactly???
  356. #define I2F_WINPROFILE 0x45 // what is this exactly???
  357. #define I2F_WIN30 0x46
  358. #define I2FWIN30_INSTALLCHECK 0x80
  359. #define I2F_BASCOM7 0x47
  360. #define I2F_DOSKEY 0x48
  361. #define I2FDOSKEY_INSTALLCHECK 0x00 // AL == non-zero if installed
  362. #define I2FDOSKEY_READLINE 0x10 // DS:DX -> line input buffer
  363. #define I2F_DOSINSTALL 0x49
  364. #define MultMULT 0x4A // old-style definition
  365. #define I2F_MULTIPURPOSE 0x4A
  366. // 0h Swap disk function for single floppy drive m/cs
  367. // BIOS broadcasts with cx==0, and apps who handle
  368. // swap disk messaging set cx == -1. BIOS sets dl == requested
  369. // drive
  370. //
  371. // 1h Get available HMA & pointer to it. Returns in BX & ES:DI
  372. //
  373. // 2h Allocate HMA. BX == number of bytes in HMA to be allocated
  374. // returns pointer in ES:DI
  375. //
  376. // 3h Allocate HMA high. BX == number of bytes in HMA to be allocated
  377. // returns pointer in ES:DI
  378. //
  379. // 4h Query HMA arena header. ES:DI points to first HMA arena header.
  380. //
  381. // 5h Switcher API
  382. //
  383. // 6h Top of Memory for RPL
  384. // BIOS issues INT 2Fh/AX=4A06 & DX=top of mem and any RPL
  385. // code present in TOM should respond with a new TOM in DX
  386. // to protect itself from MSLOAD & SYSINIT tromping over it.
  387. // SYSINIT builds an arena with owner type 8 & name 'RPL' to
  388. // protect the RPL code from COMMAND.COM transient protion.
  389. // It is the responsibility of RPL program to release the mem.
  390. //
  391. // 7h Reserved for PROTMAN support
  392. // 10h smartdrv 4.0
  393. // 11h dblspace api
  394. // 12h MRCI api
  395. // 13h MRCI backpatch
  396. #define MultMULTSWPDSK 0x00 // old-style definitions
  397. #define MultMULTGETHMAPTR 0x01 //
  398. #define MultMULTALLOCHMA 0x02 //
  399. #define MultMULTALLOCHMAEXT 0x03 //
  400. #define MultMULTGETHMAARENA 0x04 //
  401. #define MultMULTRPLTOM 0x06 //
  402. #define I2FMULT_SWPDSK 0x00 // swap Disk in drive A (BIOS)
  403. #define I2FMULT_GETHMAPTR 0x01 // get available HMA & ptr
  404. #define I2FMULT_SUBALLOCHMA 0x02 // allocate HMA (bx == # bytes)
  405. #define I2FMULT_SHELL 0x05 // shell/switcher API
  406. #define I2FMULT_RPLTOM 0x06 // top-of-memory for RPL support
  407. #define I2FMULT_SMARTDRV 0x10 // interface to SmartDrv
  408. // Following values go in the BX register for I2FMULT_SMARTDRV
  409. #define MULT_SMARTDRV_GET_STATS 0x0000
  410. #define MULT_SMARTDRV_COMMIT_ALL 0x0001
  411. #define MULT_SMARTDRV_REINITIALIZE 0x0002
  412. #define MULT_SMARTDRV_CACHE_DRIVE 0x0003
  413. // These are the MULT_SMARTDRV_CACHE_DRIVE sub-sub-sub functions that go in DL
  414. #define MULT_SMARTDRVCACHE_DRIVE_GET 0x00
  415. #define MULT_SMARTDRVCACHE_DRIVE_READ_ENABLE 0x01
  416. #define MULT_SMARTDRVCACHE_DRIVE_READ_DISABLE 0x02
  417. #define MULT_SMARTDRVCACHE_DRIVE_WRIT_ENABLE 0x03
  418. #define MULT_SMARTDRVCACHE_DRIVE_WRIT_DISABLE 0x04
  419. #define MULT_SMARTDRV_GET_INFO 0x0004
  420. #define MULT_SMARTDRV_GET_ORIGINAL_DD_HEADER 0x0007
  421. #define MULT_SMARTDRV_SETGET_PROMPTFLUSH 0x0008
  422. #define MULT_SMARTDRV_UNHOOK 0x0009
  423. #define MULT_SMARTDRV_SHOW_SDISKERR 0x1234
  424. #define I2FMULT_DBLSPACE 0x11 // interface to DblSpace
  425. #define I2FMULT_MRCI 0x12 // interface to MRCI
  426. #define I2FMULT_MRCIBackPatch 0x13 // interface to MRCI backpatch
  427. #define I2FMULT_MULTEMM386 0x15 // Used by EMM386 for IOPORTTRAP
  428. #define I2FMULT_OpenBootLog 0x16 // Open BootLog file
  429. #define I2FMULT_WriteBootLog 0x17 // Write to BootLog File
  430. #define I2FMULT_CloseBootLog 0x18 // Close BootLog File
  431. #define I2FMULT_NWRedir 0x19 // NWRedir control
  432. #define I2FMULT_MRCIBroadcast 0x20 // MRCI detection broadcast
  433. //#define I2FMULT_FlushBootLog 0x21 // Obsolete since no dblspace drive anymore
  434. #define I2FMULT_EXECOVLY 0x30 // Overlay exec broadcast
  435. #define I2FMULT_SetByte 0x31 // Set a byte in OS data area
  436. #define I2FMULT_LogoServices 0x32 // Alias to logo services (AX=160Eh)
  437. #define I2FMULT_ShellServices 0x33 // Alias to shell services (AX=1611h)
  438. // The following are subfunctions of I2FMULT_TASKSHELL (specified in SI)
  439. #define I2FMULTSHELL_CINIT_PROGRAM_LIST 0x00
  440. #define I2FMULTSHELL_CADD_PROGRAM_TO_LIST 0x01
  441. #define I2FMULTSHELL_CGO_Z_NEXT 0x02
  442. #define I2FMULTSHELL_CGO_Z_PREV 0x03
  443. #define I2FMULTSHELL_CDELETE_PROGRAM_FROM_LIST 0x04
  444. #define I2FMULTSHELL_CGO_NEXT 0x05
  445. #define I2FMULTSHELL_CGET_ITH_PROGRAM_STRING 0x06
  446. #define I2FMULTSHELL_CGET_LIST_LENGTH 0x07
  447. #define I2FMULTSHELL_CGET_GLOBAL_SWITCH_DATA 0x08
  448. #define I2FMULTSHELL_CGET_ITH_ENTRY_DATA 0x09
  449. #define I2FMULTSHELL_MAX_HANDLER_CALL 0x09
  450. #define I2FMULTSHELL_CADD_PARAMS 0x0A
  451. #define I2FMULTSHELL_CGET_EXITCODE 0x0B
  452. #define I2FMULTSHELL_CTOTOP_ITH_LIST_PE 0x0C
  453. #define I2FMULT_SystemBootTime 0x50 // System boot timestamp
  454. #define I2F_TASKAPI 0x4B
  455. #define I2FTASK_BUILD_CHAIN 0x01
  456. #define I2FTASKBC_INIT_SWITCHER 0x00
  457. #define I2FTASKBC_QUERY_SUSPEND 0x01
  458. #define I2FTASKBC_SUSPEND 0x02
  459. #define I2FTASKBC_RESUME 0x03
  460. #define I2FTASKBC_SESSION_ACTIVE 0x04
  461. #define I2FTASKBC_CREATE 0x05
  462. #define I2FTASKBC_DESTROY 0X06
  463. #define I2FTASKBC_SWITCHER_EXIT 0x07
  464. #define I2FTASK_DETECT_SWITCHER 0x02
  465. #define I2FTASKDS_GETVERSION 0x00
  466. #define I2FTASKDS_TESTMEMORYREGION 0x01
  467. #define I2FTASKDS_SUSPEND_SWITCHER 0x02
  468. #define I2FTASKDS_RESUME_SWITCHER 0x03
  469. #define I2FTASKDS_HOOK_CALLOUT 0x04
  470. #define I2FTASKDS_UNHOOK_CALLOUT 0x05
  471. #define I2FTASKDS_QUERY_API_SUPPORT 0x06
  472. #define I2FTASK_ALLOCATE_SW_ID 0x03
  473. #define I2FTASK_FREE_SW_ID 0x04
  474. #define I2FTASK_GET_INST_DATA 0x05
  475. #define I2FTASK_RESTART_CMD 0x20
  476. #define I2FTASK_GET_STARTTIME 0x22
  477. #define I2FTASK_GET_REG_CODE_PAGE 0x28
  478. #define I2FTASK_GET_REGISTRY_CACHE 0x29
  479. /*
  480. * These are obselete functions for APM
  481. * See functions 0x53 & 0x54
  482. */
  483. #define MultAPM 0x4C // old-style definition
  484. #define I2F_APM 0x4C
  485. #define I2FAPM_VERCHK 0x00
  486. #define I2FAPM_SUSSYSREQ 0x01
  487. #define I2FAPM_APM_SUS_RES_BATT_NOTIFY 0xFF
  488. #define I2F_KKC4D 0x4D
  489. #define I2F_KKC4E 0x4E
  490. #define I2F_MULTILANGDOS 0x4F
  491. #define I2F_SETNLS 0x50 // used by SETNLS
  492. #define I2F_ODI 0x51
  493. #define I2F_STAC 0x52 // reserved by MS for Stac Electronics
  494. /*
  495. * 0x53 & 0x54 are used by POWER.EXE for broadcasting APM events
  496. * and to control POWER.EXE's status from application programs
  497. * For details about sub-function numbers refer to ROMDOS 5.0 Technical
  498. * Specification document
  499. */
  500. #define MultPwr_BRDCST 0x53 // old-style definitions
  501. #define MultPwr_API 0x54 //
  502. #define I2F_POWER_BRDCST 0x53 // used by POWER.EXE to broadcast APM events
  503. #define I2F_POWER_API 0x54 // used for accessing POWER.EXE's API
  504. #define I2F_COMMAND 0x55 // used by COMMAND.COM
  505. /*
  506. * 0x56 - assigned to Sewell Development (InterLnk)
  507. * 0x57 - assigned to Iomega Corp.
  508. */
  509. #define I2F_INTERLNK 0x56
  510. #define I2F_IOMEGA 0x57
  511. /*
  512. *
  513. * 0x58 - assigned to Chicago network transition interface
  514. * This supports loading Chicago from a remote drive.
  515. */
  516. #define I2F_NETLOAD 0x58
  517. #define I2F_SWLICENSING 0x70
  518. #define I2F_NOVELL 0x7A // hey, how'd they get in our range?
  519. /****************************************************************************/
  520. /* End of MS-reserved range */
  521. /****************************************************************************/
  522. #define I2F_IBMRESERVED 0xAB
  523. /* GRAPHICS services
  524. */
  525. #define I2F_GRAPHICS 0xAC
  526. #define I2F_INSTALLCHECK 0x00
  527. /* NLS services
  528. */
  529. #define I2F_NLS 0xAD
  530. #define I2FNLS_INSTALLCHECK 0x00
  531. #define I2FNLS_UNKNOWN1 0x01
  532. #define I2FNLS_UNKNOWN2 0x02
  533. #define I2FNLS_UNKNOWN3 0x03
  534. #define I2FNLS_UNKNOWN4 0x04
  535. #define I2FNLS_UNKNOWN5 0x10
  536. #define I2FNLS_UNKNOWN6 0x40 // called by PRINT.COM (4.01)
  537. #define I2FKEYB_INSTALLCHECK 0x80
  538. #define I2FKEYB_SETKBCP 0x81
  539. #define I2FKEYB_SETKBMAP 0x82
  540. #define I2FKEYB_GETKBMAP 0x83
  541. /* COMMAND call-outs
  542. *
  543. * Note: APPEND hooks this call to avoid execing the actual APPEND utility
  544. */
  545. #define I2F_INSTCMD 0xAE // (DX must be -1)
  546. #define I2FINSTCMD_INSTALLCHECK 0x00 // AL == 0FFh if private command
  547. #define I2FINSTCMD_EXECUTE 0x01 //
  548. #define I2F_MODE 0xAF
  549. /* GRAFTABL services
  550. */
  551. #define I2F_GRAFTABL 0xB0
  552. #define I2FGRAFTABL_INSTALLCHECK 0x00
  553. #define I2FGRAFTABL_GETFONT 0x01
  554. /* APPEND services
  555. */
  556. #define I2F_APPEND 0xB7
  557. #define I2FAPPEND_INSTALLCHECK 0x00 // AL == -1 if installed
  558. #define I2FAPPEND_OLDDIRPTR 0x01 // (not supported anymore)
  559. #define I2FAPPEND_APPVER 0x02 // AX == -1 ("not network version")
  560. #define I2FAPPEND_DISABLE 0x03 // Disable APPEND (was for TopView)
  561. #define I2FAPPEND_DIRPTR 0x04 // ES:DI -> directory list
  562. #define I2FAPPEND_GETSTATE 0x06 // APPEND flags only (BX)
  563. #define I2FAPPEND_SETSTATE 0x07 // APPEND flags only (BX)
  564. #define I2FAPPEND_VERSION 0x10 // APPEND flags (AX) and version (DX)
  565. #define I2FAPPEND_TRUENAME 0x11 // set one-shot true-name return
  566. #define I2FAPPENDF_ENABLE 0x0001
  567. #define I2FAPPENDF_DRIVEOVERRIDE 0x1000
  568. #define I2FAPPENDF_PATHOVERRIDE 0x2000
  569. #define I2FAPPENDF_APPENDENV 0x4000
  570. #define I2FAPPENDF_SRCHEXECOVERRIDE 0x8000
  571. /* EGA.SYS services (in DOS5, WINDOWS3)
  572. */
  573. #define I2F_EGASYS 0xBC
  574. #define I2FEGASYS_INSTALLCHECK 0x00
  575. #define I2FEGASYS_GETVERSION 0x06
  576. /****************************************************************************/
  577. /* End of IBM-reserved range */
  578. /****************************************************************************/