windows-nt/Source/XPSP1/NT/base/mvdm/meinc/mult.h

669 lines
27 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*
* Microsoft Confidential
* Copyright (C) Microsoft Corporation 1992
* All Rights Reserved.
*
*
* This is intended to supercede MULT.H as the most complete
* reference we have on DOS INT 2Fh usage. The header immediately
* below is an attempt to give an overview of all DOS and 3rd-party
* INT 2Fhs, but equates which follow are strictly for MS-DOS-specific
* functions.
*
* Created 4/28/92 JTP
*/
/*
* The current set of defined multiplex channels is (* means documented):
*
* Channel(h) Issuer Receiver Function
* ---------- ------ -------- --------
* 00h server PSPRINT print job control
* *01h print/apps PRINT Queueing of files
* 02h BIOS REDIR signal open/close of printers
*
* 05h command REDIR obtain text of net int 24 message
* *06h server/assign ASSIGN Install check
*
* 08h external driver DRIVER.SYS interface to internal routines
*
* 10h sharer/server SHARE install check
* 11h DOS/server Redir install check/redirection funcs
* 12h sharer/redir DOS dos functions and structure maint
* 13h MSNET MSNET movement of NCBs
* 13h external driver IBMBIO Reset_Int_13, allows installation
* of alternative INT_13 drivers after
* boot_up
* 14h(IBM)DOS NLSFUNC down load NLS country info,DOS 3.3
* 14h(MS) APPS POPUP MSDOS 4 popup screen functions
*
* ***> NOTE <*** Yes there are 2 users of 14h but since
* DOS 4.XX doesn't use NLSFUNC, there is no conflict
*
* 15h APPS MSCDEX CD-ROM extensions interface
* 15h GRAPHICS (conflicts)
* 16h WIN386 WIN386 Windows communications
* 17h Clipboard WINDOWS Clipboard interface
* *18h Applications MS-Manager Toggle interface to manager
* 19h Shell DOS 4.x shell only (SHELLB.COM)
* 1Ah Ansi.sys
* 1Bh Fastopen,Vdisk IBMBIO EMS INT 67H stub handler
* (see IBM's XMA2EMS driver for DOS4)
*
* 23h stolen by DR-DOS 5.0 GRAFTABL
* 27h stolen by DR-DOS 6.0 TaskMAX
* 27h stolen by Novell DOS7 EMM386
* 2Ah stolen by Gammafax FaxBIOS
* 2Eh stolen by Novell DOS7 GRAFTABL
* 39h stolen by Kingswood Some ISV TSR thingie
*
* 40h OS/2
* 41h Lanman
* 42h Lanman
* 43h Himem
* 00h XMS installation check
* 08h return A20 handler number
* 09h return XMS handle table address
* 10h return XMS entry point address
* 20h reserved for Mach 20 Himem support
* 30h reserved for Himem external A20 code
* E0h-E4h stolen by Novell DPMS
* 44h Dosextender
* 45H Windows profiler
* 46h Windows/286 DOS extender
* 47h Basic Compiler Vn. 7.0
* 48h Doskey
* C0h-C5h stolen by PCED
* 49h DOS 5.x install also used by original Compaq
* Restricted DOS (RDOS)
* 4Ah Multi-Purpose
* multMULTSWPDSK 00h Swap Disk in drive A (BIOS)
* multMULTGETHMAPTR 01h Get available HMA & ptr
* multMULTALLOCHMA 02h Allocate HMA (bx == no of bytes)
* multMULTTASKSHELL 05h Shell/switcher API
* multMULTRPLTOM 06h Top Of Memory for RPL support
* multSmartdrv 10h
* multDblSpace 11h
* multMRCIDetect 12h
* multMRCIBackPatch 13h
* multOpenBootLog 14h
* multWriteBootLog 15h
* multCloseBootLog 16h
* multNWRedir 17h
*
* 4Bh Task Switcher API
*
* 4Ch APPS APM Advanced power management (obsolete)
*
* 4Dh Kana Kanji Converter, MSKK
* 4Eh Kana Kanji Converter, MSKK
* 4Fh Multilingual DOS, MSKK
*
* 50h SETNLS (new for DOS 7.00 (Jaguar))
*
* 51h ODI real mode support driver (for Chicago)
*
* 52h Reserved by MS for Stac Electronics
* (but stolen by JAM Real-Time Data Compression)
*
* 53h POWER(APM) For broadcasting APM events
* 54h APPS POWER(APM) To control POWER status from apps
* 53h (stolen by TesSeRact TSR library)
*
* 55h COMMAND.COM
* multCOMFIRST 00h API to determine whether 1st
* instance of command.com
* 56h INTERLINK
* 57h IOMEGA
*
* 58h ChiNet ChiNet transition interface used in
* loading Chicago from a remote drive
*
* 5Dh (stolen by Award PCDISK.EXE v1.02c PCMCIA/ATA driver)
* 60h (stolen by IPLAY by Prime and Excalibur)
* 62h (stolen by PC Tools virus protector)
*
* 70h APPS APPS for software licensing
*
* 7Ah Novell (hey, how'd they get in our range?)
*
* End of Microsoft-reserved range
*
* ABh Unspecified IBM use
* ACh Graphics
* ADh NLS (toronto) (DISPLAY.SYS and KEYB.COM)
* AEh COMMAND.COM Installable command support
* AFh Mode
* B0h GRAFTABL GRAFTABL
* B7h APPEND
* B8h Networks Misc
* B9h PC Network
* BCh EGA.SYS
* BFh PC LAN Program
*
* End of IBM-reserved range (although it seems to have become a jointly
* reserved range....)
*
* D7h Banyan VINES
* D8h Novell
*
* Old guidelines governing use and future assignment of multiplex #'s
* (they must be old because no one seems to have paid them much attention)
*
* MUX 00-3F reserved for IBM
* MUX 80-BF reserved for IBM
* MUX 40-7F reserved for Microsoft
* MUX C0-FF users
*
* New guidelines governing use and future assignment of multiplex #'s
*
* + Just keep new MS multiplex assignments below 80h, ok?
*/
#define INT_MULT 0x2F
/* PRINT services
*/
#define I2F_PSPRINT 0x00
#define I2FPSPRINT_YIELD 0x80
#define I2F_PRINT 0x01
#define I2FPRINT_INSTALLCHECK 0x00
#define I2FPRINT_QUEUEFILE 0x01
#define I2FPRINT_REMOVEFILE 0x02
#define I2FPRINT_REMOVEALL 0x03
#define I2FPRINT_FREEZEQUEUE 0x04
#define I2FPRINT_THAWQUEUE 0x05
#define I2FPRINT_GETDEVICE 0x06
#define I2F_PCLAN_REDIR 0x02
#define I2F_HARDERR 0x05
#define I2FHARDERR_INSTALLCHECK 0x00
#define I2FHARDERR_EXPAND_EXTERR 0x01
#define I2FHARDERR_EXPAND_PARMERR 0x02
#define I2F_ASSIGN 0x06
#define I2FASSIGN_INSTALLCHECK 0x00
#define I2FASSIGN_GET_DRIVE_ASSIGNS 0x01
#define I2F_DRIVER 0x08
#define I2FDRIVER_INSTALLCHECK 0x00
#define I2FDRIVER_ADD_DEVICE 0x01
#define I2FDRIVER_EXEC_REQUEST 0x02
#define I2FDRIVER_GET_DRIVE_DATA 0x03
#define MultSHARE 0x10 // old-style definition
#define I2F_SHARE 0x10
#define I2FSHARE_INSTALLCHECK 0x00 // gshare.asm: MFT_Enter
#define I2FSHARE_MAKEENTRY 0x01 // gshare.asm: MFT_Enter
#define I2FSHARE_CLOSE 0x02 // gshare.asm: MFTClose
#define I2FSHARE_CLOSEBYUID 0x03 // gshare.asm: MFTClu
#define I2FSHARE_CLOSEBYPID 0x04 // gshare.asm: MFTCloseP
#define I2FSHARE_CLOSEBYNAME 0x05 // gshare.asm: MFTCloN
#define I2FSHARE_SETBYTELOCK 0x06 // gshare.asm: Set_Mult_Block
#define I2FSHARE_CLRBYTELOCK 0x07 // gshare.asm: Clr_Mult_Block
#define I2FSHARE_CHKBYTELOCK 0x08 // gshare.asm: Chk_Block
#define I2FSHARE_GETENTRY 0x09 // gshare2.asm: MFT_Get
#define I2FSHARE_SAVESFTTOFCB 0x0A // gshare2.asm: ShSave
#define I2FSHARE_CHKFCB 0x0B // gshare2.asm: ShChk
#define I2FSHARE_COLLAPSESFTS 0x0C // gshare2.asm: ShCol
#define I2FSHARE_CLOSEFILE 0x0D // gshare2.asm: ShCloseFile
#define I2FSHARE_UPDATESFTS 0x0E // gshare2.asm: ShSU
#define MultNET 0x11 // old-style definitions
#define MultIFS 0x11
#define I2F_REDIR 0x11
#define I2FREDIR_INSTALLCHECK 0x00
#define I2FREDIR_RMDIR 0x01
#define I2FREDIR_SEQ_RMDIR 0x02
#define I2FREDIR_MKDIR 0x03
#define I2FREDIR_SEQ_MKDIR 0x04
#define I2FREDIR_CHDIR 0x05
#define I2FREDIR_CLOSE 0x06
#define I2FREDIR_COMMIT 0x07
#define I2FREDIR_READ 0x08
#define I2FREDIR_WRITE 0x09
#define I2FREDIR_LOCK 0x0A
#define I2FREDIR_UNLOCK 0x0B
#define I2FREDIR_DISK_INFO 0x0C
#define I2FREDIR_SET_FILE_ATTR 0x0D
#define I2FREDIR_SEQ_SET_FILE_ATTR 0x0E
#define I2FREDIR_GET_FILE_INFO 0x0F
#define I2FREDIR_SEQ_GET_FILE_INFO 0x10
#define I2FREDIR_RENAME 0x11
#define I2FREDIR_SEQ_RENAME 0x12
#define I2FREDIR_DELETE 0x13
#define I2FREDIR_SEQ_DELETE 0x14
#define I2FREDIR_OPEN 0x15
#define I2FREDIR_SEQ_OPEN 0x16
#define I2FREDIR_CREATE 0x17
#define I2FREDIR_SEQ_CREATE 0x18
#define I2FREDIR_SEQ_SEARCH_FIRST 0x19
#define I2FREDIR_SEQ_SEARCH_NEXT 0x1A
#define I2FREDIR_SEARCH_FIRST 0x1B
#define I2FREDIR_SEARCH_NEXT 0x1C
#define I2FREDIR_ABORT 0x1D
#define I2FREDIR_ASSOPER 0x1E
#define I2FREDIR_PRINTER_SET_STRING 0x1F
#define I2FREDIR_FLUSHBUF 0x20
#define I2FREDIR_BUFWRITE 0x21
#define I2FREDIR_RESETENVIRONMENT 0x22
#define I2FREDIR_SPOOLCHECK 0x23
#define I2FREDIR_SPOOLCLOSE 0x24
#define I2FREDIR_DEVICEOPER 0x25
#define I2FREDIR_SPOOLECHOCHECK 0x26
#define I2FREDIR_UNUSED1 0x27
#define I2FREDIR_UNUSED2 0x28
#define I2FREDIR_UNUSED3 0x29
#define I2FREDIR_CLOSEFILES_FOR_UID 0x2A
#define I2FREDIR_DEVICE_IOCTL 0x2B
#define I2FREDIR_UPDATE_CB 0x2C
#define I2FREDIR_FILE_XATTRIBUTES 0x2D
#define I2FREDIR_XOPEN 0x2E
#define I2FREDIR_DEPENDENT_IOCTL 0x2F
#define I2FREDIR_PIPE_PEEK 0x31
#define MultDOS 0x12 // old-style definition
#define I2F_DOS 0x12 // DOS call back
#define I2FDOS_INSTALLCHECK 0x00
#define I2FDOS_CLOSE 0x01
#define I2FDOS_RECSET 0x02
#define I2FDOS_GET_DOSGROUP 0x03
#define I2FDOS_PATHCHRCMP 0x04
#define I2FDOS_OUT 0x05
#define I2FDOS_NET_I24_ENTRY 0x06
#define I2FDOS_PLACEBUF 0x07
#define I2FDOS_FREE_SFT 0x08
#define I2FDOS_BUFWRITE 0x09
#define I2FDOS_SHARE_VIOLATION 0x0A
#define I2FDOS_SHARE_ERROR 0x0B
#define I2FDOS_SET_SFT_MODE 0x0C
#define I2FDOS_DATE16 0x0D
#define I2FDOS_UNUSED1 0x0E // (was SETVISIT)
#define I2FDOS_SCANPLACE 0x0F
#define I2FDOS_UNUSED2 0x10 // (was SKIPVISIT)
#define I2FDOS_STRCPY 0x11
#define I2FDOS_STRLEN 0x12
#define I2FDOS_UCASE 0x13
#define I2FDOS_POINTCOMP 0x14
#define I2FDOS_CHECKFLUSH 0x15
#define I2FDOS_SFFROMSFN 0x16
#define I2FDOS_GETCDSFROMDRV 0x17
#define I2FDOS_GET_USER_STACK 0x18
#define I2FDOS_GETTHISDRV 0x19
#define I2FDOS_DRIVEFROMTEXT 0x1A
#define I2FDOS_SETYEAR 0x1B
#define I2FDOS_DSUM 0x1C
#define I2FDOS_DSLIDE 0x1D
#define I2FDOS_STRCMP 0x1E
#define I2FDOS_INITCDS 0x1F
#define I2FDOS_PJFNFROMHANDLE 0x20
#define I2FDOS__NAMETRANS 0x21
#define I2FDOS_CAL_LK 0x22
#define I2FDOS_DEVNAME 0x23
#define I2FDOS_IDLE 0x24
#define I2FDOS_DSTRLEN 0x25
#define I2FDOS_NLS_OPEN 0x26 // DOS 3.3
#define I2FDOS__CLOSE 0x27 // DOS 3.3
#define I2FDOS_NLS_LSEEK 0x28 // DOS 3.3
#define I2FDOS__READ 0x29 // DOS 3.3
#define I2FDOS_FASTINIT 0x2A // (for FASTOPEN; see fastopen.inc)
#define I2FDOS_NLS_IOCTL 0x2B // DOS 3.3
#define I2FDOS_GETDEVLIST 0x2C // DOS 3.3
#define I2FDOS_NLS_GETEXT 0x2D // DOS 3.3
#define I2FDOS_MSG_RETRIEVAL 0x2E // DOS 4.0
#define I2FDOS_FAKE_VERSION 0x2F // DOS 4.0
#define I2FDOS_FndSFTPathInfo 0x30 // Return SFT path/cluster info
#define I2FDOS_SetFAT32Flgs 0x31 // Signal FAT32 win support and TSR flags
#define I2F_DISK 0x13
#define I2FDISK_SET_INT_HDLR 0x1300
#define NLSFUNC 0x14 // old-style definition
#define I2F_NLSFUNC 0x14 // NLSFUNC CALLS, DOS 3.3
#define I2FNLSFUNC_INSTALLCHECK 0x00
#define I2FNLSFUNC_CHGCODEPAGE 0x01
#define I2FNLSFUNC_GETEXTINFO 0x02
#define I2FNLSFUNC_SETCODEPAGE 0x03
#define I2FNLSFUNC_GETCNTRY 0x04
#define I2F_MSCDEX 0x15
#define I2F_DOS386 0x16
#define I2FDOS386_Logo 0x0E // IO.SYS service for logo management
#define I2FDOS386_INT10 0x0F // IO.SYS service to replace INT 10h hook
#define I2FDOS386_Get_Shell 0x11 // IO.SYS service to return shell info
// Flags returned in BX by the I2FDOS386_Get_Shell call
#define SHELLFLAG_CLEAN 0x01
#define SHELLFLAG_DOSCLEAN 0x02
#define SHELLFLAG_NETCLEAN 0x04
#define SHELLFLAG_INTERACTIVE 0x08
#define SHELLFLAG_NOAUTO 0x20
#define SHELLFLAG_DISABLELOADTOP 0x40
#define SHELLFLAG_MSDOSMODE 0x80
#define I2FDOS386_Get_BIOS_Data 0x12 // IO.SYS service to return IO.SYS data
#define I2FDOS386_Get_SYSDAT_Path 0x13 // IO.SYS service to return path to SYSTEM.DAT
#define I2FDOS386_Set_SYSDAT_Path 0x14 // IO.SYS service to set path to SYSTEM.DAT
#define I2F_CLIPBOARD 0x17
#define I2F_MSMANAGER 0x18 // used by old MS-DOS Manager program
#define I2F_DOS4SHELL 0x19
#define MultANSI 0x1A // old-style definition
#define I2F_ANSI 0x1A // ANSI.SYS multiplex #
#define I2FANSI_INSTALLCHECK 0x00 // install check for ANSI
#define I2FANSI_IOCTL 0x01 // INT 2Fh interface to IOCTL
#define I2FANSI_DA_INFO 0x02 // information passing to ANSI
#define I2F_XMA2EMS 0x1B // is this no longer used???
#define I2F_OS2_3XBOX 0x40
#define I2F3XBOX_SWITCHBGND 0x01
#define I2F3XBOX_SWITCHFGND 0x02
#define I2F_LANMAN41 0x41
#define I2F_LANMAN42 0x42
#define I2F_XMS 0x43 // see HIMEM.SYS for details
#define I2FXMS_INSTALLCHECK 0x00
#define I2FXMS_GETADDRESS 0x10
// private functions:
// 08h - return A20 handler
// 09h - return XMS handle table address
// 20h - used for Mach20 version
// 30h - check for external A20 handler
#define I2F_DOSX 0x44 // what is this exactly???
#define I2F_WINPROFILE 0x45 // what is this exactly???
#define I2F_WIN30 0x46
#define I2FWIN30_INSTALLCHECK 0x80
#define I2F_BASCOM7 0x47
#define I2F_DOSKEY 0x48
#define I2FDOSKEY_INSTALLCHECK 0x00 // AL == non-zero if installed
#define I2FDOSKEY_READLINE 0x10 // DS:DX -> line input buffer
#define I2F_DOSINSTALL 0x49
#define MultMULT 0x4A // old-style definition
#define I2F_MULTIPURPOSE 0x4A
// 0h Swap disk function for single floppy drive m/cs
// BIOS broadcasts with cx==0, and apps who handle
// swap disk messaging set cx == -1. BIOS sets dl == requested
// drive
//
// 1h Get available HMA & pointer to it. Returns in BX & ES:DI
//
// 2h Allocate HMA. BX == number of bytes in HMA to be allocated
// returns pointer in ES:DI
//
// 3h Allocate HMA high. BX == number of bytes in HMA to be allocated
// returns pointer in ES:DI
//
// 4h Query HMA arena header. ES:DI points to first HMA arena header.
//
// 5h Switcher API
//
// 6h Top of Memory for RPL
// BIOS issues INT 2Fh/AX=4A06 & DX=top of mem and any RPL
// code present in TOM should respond with a new TOM in DX
// to protect itself from MSLOAD & SYSINIT tromping over it.
// SYSINIT builds an arena with owner type 8 & name 'RPL' to
// protect the RPL code from COMMAND.COM transient protion.
// It is the responsibility of RPL program to release the mem.
//
// 7h Reserved for PROTMAN support
// 10h smartdrv 4.0
// 11h dblspace api
// 12h MRCI api
// 13h MRCI backpatch
#define MultMULTSWPDSK 0x00 // old-style definitions
#define MultMULTGETHMAPTR 0x01 //
#define MultMULTALLOCHMA 0x02 //
#define MultMULTALLOCHMAEXT 0x03 //
#define MultMULTGETHMAARENA 0x04 //
#define MultMULTRPLTOM 0x06 //
#define I2FMULT_SWPDSK 0x00 // swap Disk in drive A (BIOS)
#define I2FMULT_GETHMAPTR 0x01 // get available HMA & ptr
#define I2FMULT_SUBALLOCHMA 0x02 // allocate HMA (bx == # bytes)
#define I2FMULT_SHELL 0x05 // shell/switcher API
#define I2FMULT_RPLTOM 0x06 // top-of-memory for RPL support
#define I2FMULT_SMARTDRV 0x10 // interface to SmartDrv
// Following values go in the BX register for I2FMULT_SMARTDRV
#define MULT_SMARTDRV_GET_STATS 0x0000
#define MULT_SMARTDRV_COMMIT_ALL 0x0001
#define MULT_SMARTDRV_REINITIALIZE 0x0002
#define MULT_SMARTDRV_CACHE_DRIVE 0x0003
// These are the MULT_SMARTDRV_CACHE_DRIVE sub-sub-sub functions that go in DL
#define MULT_SMARTDRVCACHE_DRIVE_GET 0x00
#define MULT_SMARTDRVCACHE_DRIVE_READ_ENABLE 0x01
#define MULT_SMARTDRVCACHE_DRIVE_READ_DISABLE 0x02
#define MULT_SMARTDRVCACHE_DRIVE_WRIT_ENABLE 0x03
#define MULT_SMARTDRVCACHE_DRIVE_WRIT_DISABLE 0x04
#define MULT_SMARTDRV_GET_INFO 0x0004
#define MULT_SMARTDRV_GET_ORIGINAL_DD_HEADER 0x0007
#define MULT_SMARTDRV_SETGET_PROMPTFLUSH 0x0008
#define MULT_SMARTDRV_UNHOOK 0x0009
#define MULT_SMARTDRV_SHOW_SDISKERR 0x1234
#define I2FMULT_DBLSPACE 0x11 // interface to DblSpace
#define I2FMULT_MRCI 0x12 // interface to MRCI
#define I2FMULT_MRCIBackPatch 0x13 // interface to MRCI backpatch
#define I2FMULT_MULTEMM386 0x15 // Used by EMM386 for IOPORTTRAP
#define I2FMULT_OpenBootLog 0x16 // Open BootLog file
#define I2FMULT_WriteBootLog 0x17 // Write to BootLog File
#define I2FMULT_CloseBootLog 0x18 // Close BootLog File
#define I2FMULT_NWRedir 0x19 // NWRedir control
#define I2FMULT_MRCIBroadcast 0x20 // MRCI detection broadcast
//#define I2FMULT_FlushBootLog 0x21 // Obsolete since no dblspace drive anymore
#define I2FMULT_EXECOVLY 0x30 // Overlay exec broadcast
#define I2FMULT_SetByte 0x31 // Set a byte in OS data area
#define I2FMULT_LogoServices 0x32 // Alias to logo services (AX=160Eh)
#define I2FMULT_ShellServices 0x33 // Alias to shell services (AX=1611h)
// The following are subfunctions of I2FMULT_TASKSHELL (specified in SI)
#define I2FMULTSHELL_CINIT_PROGRAM_LIST 0x00
#define I2FMULTSHELL_CADD_PROGRAM_TO_LIST 0x01
#define I2FMULTSHELL_CGO_Z_NEXT 0x02
#define I2FMULTSHELL_CGO_Z_PREV 0x03
#define I2FMULTSHELL_CDELETE_PROGRAM_FROM_LIST 0x04
#define I2FMULTSHELL_CGO_NEXT 0x05
#define I2FMULTSHELL_CGET_ITH_PROGRAM_STRING 0x06
#define I2FMULTSHELL_CGET_LIST_LENGTH 0x07
#define I2FMULTSHELL_CGET_GLOBAL_SWITCH_DATA 0x08
#define I2FMULTSHELL_CGET_ITH_ENTRY_DATA 0x09
#define I2FMULTSHELL_MAX_HANDLER_CALL 0x09
#define I2FMULTSHELL_CADD_PARAMS 0x0A
#define I2FMULTSHELL_CGET_EXITCODE 0x0B
#define I2FMULTSHELL_CTOTOP_ITH_LIST_PE 0x0C
#define I2FMULT_SystemBootTime 0x50 // System boot timestamp
#define I2F_TASKAPI 0x4B
#define I2FTASK_BUILD_CHAIN 0x01
#define I2FTASKBC_INIT_SWITCHER 0x00
#define I2FTASKBC_QUERY_SUSPEND 0x01
#define I2FTASKBC_SUSPEND 0x02
#define I2FTASKBC_RESUME 0x03
#define I2FTASKBC_SESSION_ACTIVE 0x04
#define I2FTASKBC_CREATE 0x05
#define I2FTASKBC_DESTROY 0X06
#define I2FTASKBC_SWITCHER_EXIT 0x07
#define I2FTASK_DETECT_SWITCHER 0x02
#define I2FTASKDS_GETVERSION 0x00
#define I2FTASKDS_TESTMEMORYREGION 0x01
#define I2FTASKDS_SUSPEND_SWITCHER 0x02
#define I2FTASKDS_RESUME_SWITCHER 0x03
#define I2FTASKDS_HOOK_CALLOUT 0x04
#define I2FTASKDS_UNHOOK_CALLOUT 0x05
#define I2FTASKDS_QUERY_API_SUPPORT 0x06
#define I2FTASK_ALLOCATE_SW_ID 0x03
#define I2FTASK_FREE_SW_ID 0x04
#define I2FTASK_GET_INST_DATA 0x05
#define I2FTASK_RESTART_CMD 0x20
#define I2FTASK_GET_STARTTIME 0x22
#define I2FTASK_GET_REG_CODE_PAGE 0x28
#define I2FTASK_GET_REGISTRY_CACHE 0x29
/*
* These are obselete functions for APM
* See functions 0x53 & 0x54
*/
#define MultAPM 0x4C // old-style definition
#define I2F_APM 0x4C
#define I2FAPM_VERCHK 0x00
#define I2FAPM_SUSSYSREQ 0x01
#define I2FAPM_APM_SUS_RES_BATT_NOTIFY 0xFF
#define I2F_KKC4D 0x4D
#define I2F_KKC4E 0x4E
#define I2F_MULTILANGDOS 0x4F
#define I2F_SETNLS 0x50 // used by SETNLS
#define I2F_ODI 0x51
#define I2F_STAC 0x52 // reserved by MS for Stac Electronics
/*
* 0x53 & 0x54 are used by POWER.EXE for broadcasting APM events
* and to control POWER.EXE's status from application programs
* For details about sub-function numbers refer to ROMDOS 5.0 Technical
* Specification document
*/
#define MultPwr_BRDCST 0x53 // old-style definitions
#define MultPwr_API 0x54 //
#define I2F_POWER_BRDCST 0x53 // used by POWER.EXE to broadcast APM events
#define I2F_POWER_API 0x54 // used for accessing POWER.EXE's API
#define I2F_COMMAND 0x55 // used by COMMAND.COM
/*
* 0x56 - assigned to Sewell Development (InterLnk)
* 0x57 - assigned to Iomega Corp.
*/
#define I2F_INTERLNK 0x56
#define I2F_IOMEGA 0x57
/*
*
* 0x58 - assigned to Chicago network transition interface
* This supports loading Chicago from a remote drive.
*/
#define I2F_NETLOAD 0x58
#define I2F_SWLICENSING 0x70
#define I2F_NOVELL 0x7A // hey, how'd they get in our range?
/****************************************************************************/
/* End of MS-reserved range */
/****************************************************************************/
#define I2F_IBMRESERVED 0xAB
/* GRAPHICS services
*/
#define I2F_GRAPHICS 0xAC
#define I2F_INSTALLCHECK 0x00
/* NLS services
*/
#define I2F_NLS 0xAD
#define I2FNLS_INSTALLCHECK 0x00
#define I2FNLS_UNKNOWN1 0x01
#define I2FNLS_UNKNOWN2 0x02
#define I2FNLS_UNKNOWN3 0x03
#define I2FNLS_UNKNOWN4 0x04
#define I2FNLS_UNKNOWN5 0x10
#define I2FNLS_UNKNOWN6 0x40 // called by PRINT.COM (4.01)
#define I2FKEYB_INSTALLCHECK 0x80
#define I2FKEYB_SETKBCP 0x81
#define I2FKEYB_SETKBMAP 0x82
#define I2FKEYB_GETKBMAP 0x83
/* COMMAND call-outs
*
* Note: APPEND hooks this call to avoid execing the actual APPEND utility
*/
#define I2F_INSTCMD 0xAE // (DX must be -1)
#define I2FINSTCMD_INSTALLCHECK 0x00 // AL == 0FFh if private command
#define I2FINSTCMD_EXECUTE 0x01 //
#define I2F_MODE 0xAF
/* GRAFTABL services
*/
#define I2F_GRAFTABL 0xB0
#define I2FGRAFTABL_INSTALLCHECK 0x00
#define I2FGRAFTABL_GETFONT 0x01
/* APPEND services
*/
#define I2F_APPEND 0xB7
#define I2FAPPEND_INSTALLCHECK 0x00 // AL == -1 if installed
#define I2FAPPEND_OLDDIRPTR 0x01 // (not supported anymore)
#define I2FAPPEND_APPVER 0x02 // AX == -1 ("not network version")
#define I2FAPPEND_DISABLE 0x03 // Disable APPEND (was for TopView)
#define I2FAPPEND_DIRPTR 0x04 // ES:DI -> directory list
#define I2FAPPEND_GETSTATE 0x06 // APPEND flags only (BX)
#define I2FAPPEND_SETSTATE 0x07 // APPEND flags only (BX)
#define I2FAPPEND_VERSION 0x10 // APPEND flags (AX) and version (DX)
#define I2FAPPEND_TRUENAME 0x11 // set one-shot true-name return
#define I2FAPPENDF_ENABLE 0x0001
#define I2FAPPENDF_DRIVEOVERRIDE 0x1000
#define I2FAPPENDF_PATHOVERRIDE 0x2000
#define I2FAPPENDF_APPENDENV 0x4000
#define I2FAPPENDF_SRCHEXECOVERRIDE 0x8000
/* EGA.SYS services (in DOS5, WINDOWS3)
*/
#define I2F_EGASYS 0xBC
#define I2FEGASYS_INSTALLCHECK 0x00
#define I2FEGASYS_GETVERSION 0x06
/****************************************************************************/
/* End of IBM-reserved range */
/****************************************************************************/