Interrupt List, part 6 of 18 Copyright (c) 1989-1999,2000 Ralf Brown --------O-20--------------------------------- INT 20 - Minix - SEND/RECEIVE MESSAGE AX = process ID of other process BX -> message CX = operation (1 send, 2 receive, 3 send&receive) Program: Minix is a Version 7 Unix-compatible operating system by Andrew Tanenbaum Note: the message contains the system call number (numbered as in V7 Unix(tm)) and the call parameters --------D-20--------------------------------- INT 20 - DOS 1+ - TERMINATE PROGRAM CS = PSP segment Return: never Notes: (see INT 21/AH=00h) this function sets the program's return code (ERRORLEVEL) to 00h SeeAlso: INT 21/AH=00h,INT 21/AH=4Ch --------G-20--------------------------------- INT 20 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE FIRMWARE DEBUGGER ??? Return: ??? SeeAlso: INT 21"COMTROL" --------W-20----Vx0001----------------------- INT 20 P - Microsoft Windows - VMM - VxD SERVICES VxD = 0001h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01265) Values for VMM (VxD ID 0001h) service number: 0000h get version 0001h get current VM handle 0002h test current VM handle 0003h get system VM handle 0004h test system VM handle 0005h validate VM handle 0006h get VMM reenter count 0007h begin reentrant execution 0008h end reentrant execution 0009h install V86 breakpoint 000Ah remove V86 breakpoint 000Bh allocate V86 callback 000Ch allocation PM callback 000Dh call when VM returns 000Eh schedule global event 000Fh schedule VM event 0010h call global event 0011h call VM event 0012h cancel global event 0013h cancel VM event 0014h call priority VM event 0015h cancel priority VM event 0016h get NMI handler address 0017h set NMI handler address 0018h hook NMI event 0019h call when VM interrupts enabled 001Ah enable VM interrupts 001Bh disable VM interrupts 001Ch map flat 001Dh map linear to VM address 001Eh adjust execution priority 001Fh begin critical section 0020h end critical section 0021h end critical section and suspend 0022h claim critical section 0023h release critical section 0024h call when not critical 0025h create semaphore 0026h destroy semaphore 0027h wait on semaphore 0028h signal semaphore 0029h get critical section status 002Ah call when task switched 002Bh suspend VM 002Ch resume VM 002Dh no-fail resume VM 002Eh nuke VM 002Fh crash current VM 0030h get execution focus 0031h set execution focus 0032h get time slice priority 0033h set time slice priority 0034h get time slice granularity 0035h set time slice granularity 0036h get time slice information 0037h adjust execution time 0038h release time slice 0039h wake up VM 003Ah call when idle 003Bh get next VM handle 003Ch set global timeout 003Dh set VM timeout 003Eh cancel timeout 003Fh get system time Return: EAX = time in milliseconds that Windows has been running 0040h get VM execution time 0041h hook V86 interrupt chain 0042h get V86 interrupt vector 0043h set V86 interrupt vector 0044h get PM interrupt vector 0045h set PM interrupt vector 0046h simulate interrupt 0047h simulate IRET 0048h simulate far call 0049h simulate far jump 004Ah simulate far RET 004Bh simulate far RET N 004Ch build interrupt stack frame 004Dh simulate push 004Eh simulate pop 004Fh _HeapAllocate 0050h _HeapReAllocate 0051h _HeapFree 0052h _HeapGetSize 0053h _PageAllocate 0054h _PageReAllocate 0055h _PageFree 0056h _PageLock 0057h _PageUnLock 0058h _PageGetSizeAddr 0059h _PageGetAllocInfo 005Ah _GetFreePageCount 005Bh _GetSysPageCount 005Ch _GetVMPgCount 005Dh _MapIntoV86 005Eh _PhysIntoV86 005Fh _TestGlobalV86Mem 0060h _ModifyPageBits 0061h copy page table 0062h map linear into V86 0063h linear page lock 0064h linear page unlock 0065h _SetResetV86Pageabl 0066h _GetV86PageableArray 0067h _PageCheckLinRange 0068h page out dirty pages 0069h discard pages 006Ah _GetNulPageHandle 006Bh get first V86 page 006Ch map physical address to linear address 006Dh _GetAppFlatDSAlias 006Eh _SelectorMapFlat 006Fh _GetDemandPageInfo 0070h _GetSetPageOutCount 0071h hook V86 page 0072h assign device V86 pages 0073h deassign device V86 pages 0074h get array of V86 pages for device 0075h _SetNULPageAddr 0076h allocate GDT selector 0077h free GDT selector 0078h allocate LDT selector 0079h free LDT selector 007Ah _BuildDescriptorDWORDs 007Bh get descriptor 007Ch set descriptor 007Dh toggle HMA 007Eh get fault hook addresses 007Fh hook V86 fault 0080h hook PM fault 0081h hook VMM fault 0082h begin nested V86 execution 0083h begin nested execution 0084h execute V86-mode interrupt 0085h resume execution 0086h end nested execution 0087h allocate PM application callback area 0088h get current PM application callback area 0089h set V86 execution mode 008Ah set PM execution mode 008Bh begin using locked PM stack 008Ch end using locked PM stack 008Dh save client state 008Eh restore client state 008Fh execute VxD interrupt STACK: WORD interrupt number other registers as required by interrupt call Return: registers as returned by interrupt call 0090h hook device service EAX = service ID (high word = VxD ID, low = service number) ESI -> new handler 0091h hook device V86 API 0092h hook device PM API 0093h system control (see also #02657) 0094h simulate I/O 0095h install multiple I/O handlers 0096h install I/O handler DX = I/O port address ESI -> handler to call when I/O access attempted??? 0097h enable global trapping DX = I/O port address 0098h enable local trapping DX = I/O port address 0099h disable global trapping DX = I/O port address 009Ah disable local trapping DX = I/O port address 009Bh create list 009Ch destroy list 009Dh allocate list 009Eh attach list 009Fh attach list tail 00A0h insert into list 00A1h remove from list 00A2h deallocate list 00A3h get first item in list 00A4h get next item in list 00A5h remove first item in list 00A6h add instance item 00A7h allocate device callback area 00A8h allocate global V86 data area 00A9h allocate temporary V86 data area 00AAh free temporary V86 data area 00ABh get decimal integer from profile 00ACh convert decimal string to integer 00ADh get fixed-point number from profile 00AEh convert fixed-point string 00AFh get hex integer from profile 00B0h convert hex string to integer 00B1h get boolean value from profile 00B2h convert boolean string 00B3h get string from profile 00B4h get next string from profile 00B5h get environment string 00B6h get exec path 00B7h get configuration directory 00B8h open file 00B9h get PSP segment 00BAh get DOS vectors 00BBh get machine information 00BCh get/set HMA information 00BDh set system exit code 00BEh fatal error handler 00BFh fatal memory error 00C0h update system clock 00C1h test if debugger installed 00C2h output debugger string 00C3h output debugger character 00C4h input debugger character 00C5h debugger convert hex to binary 00C6h debugger convert hex to decimal 00C7h debugger test if valid handle 00C8h validate client pointer 00C9h test reentry 00CAh queue debugger string 00CBh log procedure call 00CCh debugger test current VM 00CDh get PM interrupt type 00CEh set PM interrupt type 00CFh get last updated system time 00D0h get last updated VM execution time 00D1h test if double-byte character-set lead byte 00D2h _AddFreePhysPage 00D3h _PageResetHandlePAddr 00D4h _SetLastV86Page 00D5h _GetLastV86Page 00D6h _MapFreePhysReg 00D7h _UnmapFreePhysReg 00D8h _XchgFreePhysReg 00D9h _SetFreePhysRegCalBk 00DAh get next arena (MCB) 00DBh get name of ugly TSR 00DCh get debug options 00DDh set physical HMA alias 00DEh _GetGlblRng0V86IntBase 00DFh add global V86 data area 00E0h get/set detailed VM error 00E1h Is_Debug_Chr 00E2h clear monochrome screen 00E3h output character to mono screen 00E4h output string to mono screen 00E5h set current position on mono screen 00E6h get current position on mono screen 00E7h get character from mono screen 00E8h locate byte in ROM 00E9h hook invalid page fault 00EAh unhook invalid page fault 00EBh set delete on exit file 00ECh close VM 00EDh "Enable_Touch_1st_Meg" 00EEh "Disable_Touch_1st_Meg" 00EFh install exception handler 00F0h remove exception handler 00F1h "Get_Crit_Status_No_Block" 00F2h "_Schedule_VM_RTI_Event" 00F3h "_Trace_Out_Service" 00F4h "_Debug_Out_Service" 00F5h "_Debug_Flags_Service" 00F6h VMM add import module name 00F7h VMM Add DDB 00F8h VMM Remove DDB 00F9h get thread time slice priority 00FAh set thread time slice priority 00FBh schedule thread event 00FCh cancel thread event 00FDh set thread timeout 00FEh set asynchronous timeout 00FFh "_AllocatreThreadDataSlot" 0100h "_FreeThreadDataSlot" 0101h create Mutex 0102h destroy Mutex 0103h get Mutex owner 0104h call when thread switched 0105h create thread 0106h start thread 0107h terminate thread 0108h get current thread handle 0109h test current thread handle 010Ah "Get_Sys_Thread_Handle" 010Bh "Test_Sys_Thread_Handle" 010Ch "Validate_Thread_Handle" 010Dh "Get_Initial_Thread_Handle" 010Eh "Test_Initial_Thread_Handle" 010Fh "Debug_Test_Valid_Thread_Handle" 0110h "Debug_Test_Cur_Thread" 0111h "VMM_GetSystemInitState" 0112h "Cancel_Call_When_Thread_Switched" 0113h "Get_Next_Thread_Handle" 0114h "Adjust_Thread_Exec_Priority" 0115h "_Deallocate_Device_CB_Area" 0116h "Remove_IO_Handler" 0117h "Remove_Mult_IO_Handlers" 0118h unhook V86 interrupt chain 0119h unhook V86 fault handler 011Ah unhook PM fault handler 011Bh unhook VMM fault handler 011Ch unhook device service 011Dh "_PageReserve" 011Eh "_PageCommit" 011Fh "_PageDecommit" 0120h "_PagerRegister" 0121h "_PagerQuery" 0122h "_PagerDeregister" 0123h "_ContextCreate" 0124h "_ContextDestroy" 0125h "_PageAttach" 0126h "_PageFlush" 0127h "_SignalID" 0128h "_PageCommitPhys" 0129h "_Register_Win32_Services" 012Ah "Cancel_Call_When_Not_Critical" 012Bh "Cancel_Call_When_Idle" 012Ch "Cancel_Call_When_Task_Switched" 012Dh "_Debug_Printf_Service" 012Eh enter Mutex 012Fh leave Mutex 0130h simulate VM I/O 0131h "Signal_Semaphore_No_Switch" 0132h "_MMSwitchContext" 0133h "_MMModifyPermissions" 0134h "_MMQuery" 0135h "_EnterMustComplete" 0136h "_LeaveMustComplete" 0137h "_ResumeExecMustComplete" 0138h get thread termination status 0139h "_GetInstanceInfo" 013Ah "_ExecIntMustComplete" 013Bh "_ExecVxDIntMustComplete" 013Ch begin V86 serialization 013Dh unhook V86 page 013Eh "VMM_GetVxDLocationList" 013Fh "VMM_GetDDBList" get start of VxD chain (see also #02657 at INT 2F/AX=1684h/BX=0017h) 0140h unhook NMI event 0141h "Get_Instanced_V86_Int_Vector" 0142h get or set real DOS PSP 0143h call priority thread event 0144h "Get_System_Time_Address" 0145h "Get_Crit_Status_Thread" 0146h "Get_DDB" 0147h "Directed_Sys_Control" 0148h "_RegOpenKey" 0149h "_RegCloseKey" 014Ah "_RegCreateKey" 014Bh "_RegDeleteKey" 014Ch "_RegEnumKey" 014Dh "_RegQueryValue" 014Eh "_RegSetValue" 014Fh "_RegDeleteValue" 0150h "_RegEnumValue" 0151h "_RegQueryValueEx" 0152h "_RegSetValueEx" 0153h "_CallRing3" 0154h "Exec_PM_Int" 0155h "_RegFlushKey" 0156h "_PageCommitContig" 0157h "_GetCurrentContext" 0158h "_LocalizeSprintf" 0159h "_LocalizeStackSprintf" 015Ah "Call_Restricted_Event" 015Bh "Cancel_Restricted_Event" 015Ch "Register_PEF_Provider" 015Dh "_GetPhysPageInfo" 015Eh "_RegQueryInfoKey" 015Fh "MemArb_Reserve_Pages" 0160h "Time_Slice_Sys_VM_Idle" 0161h "Time_Slice_Sleep" 0162h "Boost_With_Decay" 0163h "Set_Inversion_Pri" 0164h "Reset_Inversion_Pri" 0165h "Release_Inversion_Pri" 0166h "Get_Thread_Win32_Pri" 0167h "Set_Thread_Win32_Pri" 0168h "Set_Thread_Static_Boost" 0169h "Set_VM_Static_Boost" 016Ah "Release_Inversion_Pri_ID" 016Bh "Attach_Thread_To_Group" 016Ch "Detach_Thread_From_Group" 016Dh "Set_Group_Static_Boost" 016Eh "_GetRegistryPath" 016Fh "_GetRegistryKey" 0170h "_CleanupNestedExec" 0171h "_RegRemapPreDefKey" 0172h "End_V86_Serialization" 0173h "_Assert_Range" 0174h "_Sprintf" 0175h "_PageChangePager" 0176h "_RegCreateDynKey" 0177h "RegQMulti" 0178h "Boost_Thread_With_VM" 0179h "Get_Boot_Flags" 017Ah "Set_Boot_Flags" 017Bh "_lstrcpyn" 017Ch "_lstrlen" 017Dh "_lmemcpy" 017Eh "_GetVxDName" 017Fh "Force_Mutexes_Free" 0180h "Restore_Forced_Mutexes" 0181h "_AddReclaimableItem" 0182h "_SetReclaimableItem" 0183h "_EnumReclaimableItem" 0184h "Time_Slice_Wake_Sys_VM" 0185h "VMM_Replace_Global_Environment" 0186h "Begin_Non_Serial_Nest_V86_Exec" 0187h "Get_Nest_Exec_Status" 0188h "Open_Boot_Log" 0189h "Write_Boot_Log" 018Ah "Close_Boot_Log" 018Bh "EnableDisable_Boot_Log" 018Ch "_Call_On_My_Stack" 018Dh "Get_Inst_V86_Int_Vec_Base" 018Eh "_lstrcmpi" 018Fh "_strupr" 0190h "Log_Fault_Call_Out" 0191h "_AtEventTime" 0191h ...last service for Windows95 SP1 811Ch unhook device service??? (called by KEYREMAP.VXD) EAX = service ID (high word = VxD ID, low = service number) ESI -> handler SeeAlso: #01266,#01267,INT 2F/AX=1684h/BX=0001h --------W-20----Vx0002----------------------- INT 20 P - Microsoft Windows - DEBUG - VxD SERVICES VxD = 0002h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01266,#01340 (Table 01266) Values for DEBUG (VxD ID 0002h) service number: 0000h get version 0001h "DEBUG_Fault" 0002h "DEBUG_CheckFault" 0003h "_DEBUG_LoadSyms" SeeAlso: #01265,#01267 --------W-20----Vx0003----------------------- INT 20 P - Microsoft Windows - VPICD - VxD SERVICES VxD = 0003h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01267,#01340 (Table 01267) Values for VPICD (VxD ID 0003h) service number: 0000h get version 0001h virtualize IRQ 0002h set interrupt request 0003h clear interrupt request 0004h physical EOI 0005h get complete status 0006h get status 0007h test physical request 0008h physically mask 0009h physically unmask 000Ah set automatic masking 000Bh get IRQ complete status 000Ch convert handle to IRQ 000Dh convert IRQ to interrupt 000Eh convert interrupt to IRQ 000Fh call on hardware interrupt 0010h force default owner 0011h force default behavior 0012h "VPICD_Auto_Mask_At_Inst_Swap" 0013h "VPICD_Begin_Inst_Page_Swap" 0014h "VPICD_End_Inst_Page_Swap" 0015h "VPICD_Virtual_EOI" 0016h "VPICD_Get_Virtualization_Count" 0017h "VPICD_Post_Sys_Critical_Init" 0018h "VPICD_VM_SlavePIC_Mask_Change" SeeAlso: #01265,#01268,INT 2F/AX=1684h/BX=0003h --------W-20----Vx0004----------------------- INT 20 P - Microsoft Windows - VDMAD - VxD SERVICES VxD = 0004h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01268) Values for VDMAD (VxD ID 0004h) service number: 0000h get version 0001h virtualize channel 0002h get region information 0003h set region information 0004h get virtual state 0005h set virtual state 0006h set physical state 0007h mask channel 0008h unmask channel 0009h lock DMA region 000Ah unlock DMA region 000Bh scatter lock 000Ch scatter unlock 000Dh reserve buffer space 000Eh request buffer 000Fh release buffer 0010h copy to buffer 0011h copy from buffer 0012h default handler 0013h disable translation 0014h enable translation 0015h get EISA address mode 0016h set EISA address mode 0017h unlock DMA region (ND) 0018h "VDMAD_Phys_Mask_Channel" 0019h "VDMAD_Phys_Unmask_Channel" 001Ah "VDMAD_Unvirtualize_Channel" 001Bh "VDMAD_Set_IO_Address" 001Ch "VDMAD_Get_Phys_Count" 001Dh "VDMAD_Get_Phys_Status" 001Eh "VDMAD_Get_Max_Phys_Page" 001Fh "VDMAD_Set_Channel_Callbacks" 0020h "VDMAD_Get_Virt_Count" 0021h "VDMAD_Set_Virt_Count" 0021h ...last service for Windows95 SP1 SeeAlso: #01267,#02646,#02683 at INT 2F/AX=1684h/BX=0444h --------W-20----Vx0005----------------------- INT 20 P - Microsoft Windows - VTD - VxD SERVICES VxD = 0005h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01269) Values for VTD (VxD ID 0005h) service number: 0000h get version 0001h update system clock 0002h get interrupt period 0003h begin minimum interrupt period 0004h end minimum interrupt period 0005h disable trapping 0006h enable trapping 0007h get real time Return: EDX:EAX = time in 840ns units since Windows was started 0008h "VTD_Get_Date_And_Time" 0009h "VTD_Adjust_VM_Count" 000Ah "VTD_Delay" SeeAlso: #02646 at INT 2F/AX=1684h/BX=0005h --------W-20----Vx0006----------------------- INT 20 P - Microsoft Windows - V86MMGR - VxD SERVICES VxD = 0006h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01270) Values for V86MMGR (VxD ID 0006h) service number: 00h get version 01h allocate V86 pages 02h set EMS and XMS limits 03h get EMS and XMS limits 04h set mapping information 05h get mapping information 06h Xlat API 07h load client pointer 08h allocate buffer 09h free buffer 0Ah get Xlat buffer state 0Bh set Xlat buffer state 0Ch get VM flat selector 0Dh map pages 0Eh free page map region 0Fh _LocalGlobalReg 10h get page status 11h set local A20 12h reset base pages 13h set available mapped pages 14h "V86MMGR_NoUMBInitCalls" 15h "V86MMGR_Get_EMS_XMS_Avail" 16h "V86MMGR_Toggle_HMA" EAX = ??? 17h "V86MMGR_Dev_Init" 18h "V86MMGR_Alloc_UM_Page" SeeAlso: #02646,#01271,INT 2F/AX=1684h"DEVICE API" --------W-20----Vx0007----------------------- INT 20 P - Microsoft Windows - PageSwap - VxD SERVICES VxD = 0007h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01271) Values for PageSwap (VxD ID 0007h) service number: 00h get version 01h test create 02h create swap file 03h destroy swap file 04h in 05h out 06h test if I/O valid 07h "Read_Or_Write" 08h "Grow_File" 09h "Init_File" SeeAlso: #01270,#01272,#01273,#02648 --------W-20----Vx0009----------------------- INT 20 P - Microsoft Windows - REBOOT - VxD SERVICES VxD = 0009h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01272) Values for REBOOT (VxD ID 0009h) service number: 00h get REBOOT version??? 01h ??? 02h ??? 03h ...last service for Windows95 SP1 SeeAlso: #01271,#01273,#02642 --------W-20----Vx000A----------------------- INT 20 P - Microsoft Windows - VDD - VxD SERVICES VxD = 000Ah Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01273) Values for VDD (VxD ID 000Ah) service number: 00h get version 01h PIF state 02h get GrabRtn 03h hide cursor 04h set VM type 05h get ModTime 06h set HCurTrk 07h message clear screen 08h message foreground color 09h message background color 0Ah message output text 0Bh message set cursor position 0Ch query access 0Dh "VDD_Check_Update_Soon" 0Eh "VDD_Get_Mini_Dispatch_Table" 0Fh "VDD_Register_Virtual_Port" DX = base I/O port number CL = number of contiguous ports??? 10h "VDD_Get_VM_Info" 11h "VDD_Get_Special_VM_IDs" Return: ESI = ??? EDI = ??? 12h "VDD_Register_Extra_Screen_Selector" 13h "VDD_Takeover_VGA_Port" DX = VGA I/O port number (03C2h, etc.) ECX -> routine to call on I/O access Return: ECX -> previous handler (to be jumped to at end of new handler) 14h ??? 15h ??? 16h ...last service for Windows95 SP1 SeeAlso: #01272,#01274,#02648 --------W-20----Vx000B----------------------- INT 20 P - Microsoft Windows - VSD - VxD SERVICES VxD = 000Bh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01274) Values for VSD (VxD ID 000Bh) service number: 00h get version 01h bell 02h sound on 03h "VSD_TakeSoundPort" SeeAlso: #01273,#01275 --------W-20----Vx000C----------------------- INT 20 P - Microsoft Windows - VMD / VMOUSE - VxD SERVICES VxD = 000Ch Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01275) Values for VMD / VMOUSE (VxD ID 000Ch) service number: 0000h get version 0001h set mouse type 0002h get mouse owner 0003h "VMOUSE_Post_Pointer_Message" 0004h "VMOUSE_Set_Cursor_Proc" 0005h "VMOUSE_Call_Cursor_Proc" 0006h "VMOUSE_Set_Mouse_Data~Get_Mouse_Data" 0007h "VMOUSE_Manipulate_Pointer_Message" 0008h "VMOUSE_Set_Middle_Button" 0009h "VMD_Set_Middle_Button" 000Ah "VMD_Enable_Disable_Mouse_Events" 000Bh "VMD_Post_Absolute_Pointer_Message" ...last service for Windows95 SP1 SeeAlso: #01274,#01276,INT 2F/AX=1684h/BX=000Ch --------W-20----Vx000D----------------------- INT 20 P - Microsoft Windows - VKD - VxD SERVICES VxD = 000Dh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01276) Values for VKD (VxD ID 000Dh) service number: 0000h get version 0001h define hotkey 0002h remove hotkey 0003h locally enable hotkey 0004h locally disable hotkey 0005h reflect hotkey 0006h cancel hotkey state 0007h force keys 0008h get keyboard owner 0009h define paste mode 000Ah start pasting 000Bh cancel paste 000Ch get message key 000Dh peek message key 000Eh flush message key queue 000Fh "VKD_Enable_Keyboard" 0010h "VKD_Disable_Keyboard" 0011h "VKD_Get_Shift_State" 0012h "VKD_Filter_Keyboard_Input" 0013h "VKD_Put_Byte" 0014h "VKD_Set_Shift_State" ...last service for Windows95 SP1 SeeAlso: #01275,#01277 --------W-20----Vx000E----------------------- INT 20 P - Microsoft Windows - VCD - VxD SERVICES VxD = 000Eh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01277) Values for VCD (VxD ID 000Eh) service number: 0000h get version 0001h set port global 0002h get focus 0003h virtualize port 0004h "VCD_Acquire_Port" 0005h "VCD_Free_Port" 0006h "VCD_Acquire_Port_Windows_Style" 0007h "VCD_Free_Port_Windows_Style" 0008h "VCD_Steal_Port_Windows_Style" 0009h "VCD_Find_COM_Index" 000Ah "VCD_Set_Port_Global_Special" 000Bh "VCD_Virtualize_Port_Dynamic" 000Ch "VCD_Unvirtualize_Port_Dynamic" ...last service for Windows95 SP1 SeeAlso: #01276,#01278 --------W-20----Vx0010----------------------- INT 20 P - Microsoft Windows - BlockDev / IOS - VxD SERVICES VxD = 0010h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01278) Values for BlockDev/IOS (VxD ID 0010h) service number: 0000h get version 0001h register device 0002h find INT 13 drive 0003h get device list 0004h send command 0005h command complete 0006h synchronous command 0007h "IOS_Register" 0008h "IOS_Requestor_Service" 0009h "IOS_Exclusive_Access" 000Ah "IOS_Send_Next_Command" 000Bh "IOS_Set_Async_Time_Out" 000Ch "IOS_Signal_Semaphore_No_Switch" 000Dh "IOSIdleStatus" 000Eh "IOSMapIORSToI24" 000Fh "IOSMapIORSToI21" 0010h "PrintLog" SeeAlso: #01277,#01279 --------W-20----Vx0011----------------------- INT 20 P - Microsoft Windows - VMCPD - VxD SERVICES VxD = 0011h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01279) Values for VMCPD (VxD ID 0011h) service number: 0000h "VMCPD_Get_Version" 0001h "VMCPD_Get_Virt_State" 0002h "VMCPD_Set_Virt_State" 0003h "VMCPD_Get_CR0_State" 0004h "VMCPD_Set_CR0_State" 0005h "VMCPD_Get_Thread_State" 0006h "VMCPD_Set_Thread_State" 0007h "_VMCPD_Get_FP_Instruction_Size" 0008h "VMCPD_Set_Thread_Precision" SeeAlso: #01278,#01280,#02642 --------W-20----Vx0012----------------------- INT 20 P - Microsoft Windows - EBIOS - VxD SERVICES VxD = 0012h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01280) Values for EBIOS (VxD ID 0012h) service number: 00h get EBIOS version 01h get unused memory SeeAlso: #01279,#01281 --------W-20----Vx0014----------------------- INT 20 P - Microsoft Windows - VNETBIOS - VxD SERVICES VxD = 0014h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01281) Values for VNETBIOS (VxD ID 0014h) service number: 00h get version 01h register 02h submit 03h enum 04h deregister 05h register2 06h map 07h enum2 SeeAlso: #01280,#01282 --------W-20----Vx0015----------------------- INT 20 P - Microsoft Windows - DOSMGR - VxD SERVICES VxD = 0015h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01282) Values for DOSMGR (VxD ID 0015h) service number: 0000h get version 0001h set exec VM data 0002h coyp VM drive state 0003h execute VM 0004h get InDOS pointer 0005h add device 0006h remove device 0007h instance device 0008h get DOS critical status 0009h enable InDOS polling 000Ah backfill allowed 000Bh "LocalGlobalReg" 000Ch "Init_UMB_Area" 000Dh "Begin_V86_App" 000Eh "End_V86_App" 000Fh "Alloc_Local_Sys_VM_Mem" EAX = number of paragraphs??? to allocate 0010h "DOSMGR_Grow_CDSs" 0011h "DOSMGR_Translate_Server_DOS_Call" 0012h "DOSMGR_MMGR_PSP_Change_Notifier" SeeAlso: #01281,#02656 at INT 2F/AX=1684h/BX=0015h --------W-20----Vx0017----------------------- INT 20 P - Microsoft Windows - SHELL - VxD SERVICES VxD = 0017h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01283) Values for SHELL (VxD ID 0017h) service number: 0000h get version 0001h resolve contention 0002h event 0003h SYSMODAL message 0004h message 0005h get VM information 0006h "_SHELL_PostMessage" 0007h "_SHELL_WinExec" 0008h "_SHELL_CallDll" 0009h "SHELL_OpenClipboard" 000Ah "SHELL_SetClipboardData" 000Bh "SHELL_GetClipboardData" 000Ch "SHELL_CloseClipboard" 000Dh "_SHELL_Install_Taskman_Hooks" 000Eh "SHELL_Hook_Properties" 000Fh "SHELL_Unhook_Properties" 0010h "SHELL_OEMKeyScan" 0011h "SHELL_Update_User_Activity" 0012h "_SHELL_UnhookSystemBroadcast" 0013h "_SHELL_LocalAllocEx" 0014h "_SHELL_LocalFree" 0015h "_SHELL_LoadLibrary" 0016h "_SHELL_FreeLibrary" 0017h "_SHELL_GetProcAddress" 0018h "_SHELL_CallDll" 0019h "_SHELL_SuggestSingleMSDOSMode" 001Ah "SHELL_CheckHotkeyAllowed" 001Bh "_SHELL_GetDOSAppInfo" SeeAlso: #01282,#01284,#02657 at INT 2F/AX=1684h/BX=0017h --------W-20----Vx0018----------------------- INT 20 P - Microsoft Windows - VMPoll - VxD SERVICES VxD = 0018h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01284) Values for VMPoll (VxD ID 0018h) service number: 00h get version 01h enable/disable 02h reset detection 03h check idle SeeAlso: #01269,#02657 at INT 2F/AX=1684h/BX=0017h --------W-20----Vx001A----------------------- INT 20 P - Microsoft Windows - DOSNET - VxD SERVICES VxD = 001Ah Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01285) Values for DOSNET (VxD ID 001Ah) service number: 00h get version 01h send FILESYSCHANGE 02h do PSP adjust SeeAlso: #01284,#01286 --------W-20----Vx001B----------------------- INT 20 P - Microsoft Windows - VFD - VxD SERVICES VxD = 001Bh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01286,#01340 (Table 01286) Values for VFD (VxD ID 001Bh) service number: 0000h get version SeeAlso: #01285,#01287 --------W-20----Vx001C----------------------- INT 20 P - Microsoft Windows - LoadHi - VxD SERVICES VxD = 001Ch Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01287) Values for LoadHi (VxD ID 001Ch) service number: 00h get version Return: CF clear EAX = version (AH = major, AL = minor) ESI -> ASCIZ signature "LoadHi" SeeAlso: #01286,#01288 --------W-20----Vx0020----------------------- INT 20 P - Microsoft Windows - Int13 - VxD SERVICES VxD = 0020h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01288) Values for Int13 (VxD ID 0020h) service number: 00h get version 01h device registered 02h translate VM interrupt 03h hooking BIOS interrupt 04h unhooking BIOS interrupt SeeAlso: #01287,#01289 --------W-20----Vx0021----------------------- INT 20 P - Microsoft Windows - PAGEFILE - VxD SERVICES VxD = 0021h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01289) Values for PAGEFILE (VxD ID 0021h) service number: 00h get version 01h init file 02h clean up 03h grow file 04h read or write 05h cancel 06h test I/O valid 07h "Get_Size_Info" 08h "Set_Async_Manager" 09h "Call_Async_Manager" SeeAlso: #01288,#02661 at INT 2F/AX=1684h/BX=0021h --------W-20----Vx0026----------------------- INT 20 P - Microsoft Windows - VPOWERD - VxD SERVICES VxD = 0026h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01290) Values for VPOWERD (VxD ID 0026h) service number: 00h get version Return: CF clear EAX = version (AH = major, AL = minor) 01h get APM BIOS version Return: CF clear EAX = APM BIOS version 02h get current power management level Return: CF clear EAX = power management level 03h enable/disable power management (see INT 15/AX=5308h) Return: EAX = error code (see #02665) or 00000000h if successful 04h set power state (see INT 15/AX=5307h) ??? Return: EAX = error code (see #02665) or 00000000h if successful 05h set system power status Return: EAX = error code (see #02665) or 00000000h if successful 06h restore APM power-on defaults (see INT 15/AX=5309h) Return: EAX = error code (see #02665) or 00000000h if successful 07h get power status (see INT 15/AX=530Ah) Return: ??? 08h get APM 1.1 power state (see INT 15/AX=530Ch) Return: ??? 09h invoke OEM APM function ??? -> bufer containing parameters for INT 15/AX=5380h Return: EAX = error code (see #02665) or 00000000h if successful buffer updated if successful 0Ah register power handler ??? Return: EAX = error code (see #02665) or 00000000h if successful 0Bh deregister power handler ??? Return: EAX = error code (see #02665) or 00000000h if successful 0Ch Win32 get system power status 0Dh Win32 set system power status SeeAlso: #01289,#01291,INT 2F/AX=1684h/BX=0026h --------W-20----Vx0027----------------------- INT 20 P - Microsoft Windows - VXDLDR - VxD SERVICES VxD = 0027h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01291) Values for VXDLDR (VxD ID 0027h) service number: 0000h "VXDLDR_Get_Version" 0001h "VXDLDR_LoadDevice" 0002h "VXDLDR_UnloadDevice" 0003h "VXDLDR_DevInitSucceeded" 0004h "VXDLDR_DevInitFailed" 0005h "VXDLDR_GetDeviceList" 0006h "VXDLDR_UnloadMe" 0007h "PELDR_LoadModule" 0008h "PELDR_GetModuleHandle" 0009h "PELDR_GetModuleUsage" 000Ah "PELDR_GetEntryPoint" 000Bh "PELDR_GetProcAddress" 000Ch "PELDR_AddExportTable" 000Dh "PELDR_RemoveExportTable" 000Eh "PELDR_FreeModule" 000Fh "VXDLDR_Notify" 0010h "_PELDR_InitCompleted" 0011h "_PELDR_LoadModuleEx" SeeAlso: #01289,#01292 --------W-20----Vx0028----------------------- INT 20 P - Microsoft Windows - NDIS - VxD SERVICES VxD = 0028h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01292) Values for NDIS (VxD ID 0028h) service number: 00h "NdisGetVersion" 01h "NdisAllocateSpinLock" 02h "NdisFreeSpinLock" 03h "NdisAcquireSpinLock" 04h "NdisReleaseSpinLock" 05h "NdisOpenConfiguration" 06h "NdisReadConfiguration" 07h "NdisCloseConfiguration" 08h "NdisReadEisaSlotInformation" 09h "NdisReadMcaPosInformation" 0Ah "NdisAllocateMemory" 0Bh "NdisFreeMemory" 0Ch "NdisSetTimer" 0Dh "NdisCancelTimer" 0Eh "NdisStallExecution" 0Fh "NdisInitializeInterrupt" 10h "NdisRemoveInterrupt" 11h "NdisSynchronizeWithInterrupt" 12h "NdisOpenFile" 13h "NdisMapFile" 14h "NdisUnmapFile" 15h "NdisCloseFile" 16h "NdisAllocatePacketPool" 17h "NdisFreePacketPool" 18h "NdisAllocatePacket" 19h "NdisReinitializePacket" 1Ah "NdisFreePacket" 1Bh "NdisQueryPacket" 1Ch "NdisAllocateBufferPool" 1Dh "NdisFreeBufferPool" 1Eh "NdisAllocateBuffer" 1Fh "NdisCopyBuffer" 20h "NdisFreeBuffer" 21h "NdisQueryBuffer" 22h "NdisGetBufferPhysicalAddress" 23h "NdisChainBufferAtFront" 24h "NdisChainBufferAtBack" 25h "NdisUnchainBufferAtFront" 26h "NdisUnchainBufferAtBack" 27h "NdisGetNextBuffer" 28h "NdisCopyFromPacketToPacket" 29h "NdisRegisterProtocol" 2Ah "NdisDeregisterProtocol" 2Bh "NdisOpenAdapter" 2Ch "NdisCloseAdapter" 2Dh "NdisSend" 2Eh "NdisTransferData" 2Fh "NdisReset" 30h "NdisRequest" 31h "NdisInitializeWrapper" 32h "NdisTerminateWrapper" 33h "NdisRegisterMac" 34h "NdisDeregisterMac" 35h "NdisRegisterAdapter" 36h "NdisDeregisterAdapter" 37h "NdisCompleteOpenAdapter" 38h "NdisCompleteCloseAdapter" 39h "NdisCompleteSend" 3Ah "NdisCompleteTransferData" 3Bh "NdisCompleteReset" 3Ch "NdisCompleteRequest" 3Dh "NdisIndicateReceive" 3Eh "NdisIndicateReceiveComplete" 3Fh "NdisIndicateStatus" 40h "NdisIndicateStatusComplete" 41h "NdisCompleteQueryStatistics" 42h "NdisEqualString" 43h "NdisNetAddressStringToBinary" 44h "NdisReadNetworkAddress" 45h "NdisWriteErrorLogEntry" 46h "C_MapPhysToLinear" 47h "C_HeapFree" 48h "NdisAllocateSharedMemory" 49h "NdisFreeSharedMemory" ... 5Fh ...last service for Windows95 SP1 SeeAlso: #01291,#01293 --------W-20----Vx002A----------------------- INT 20 P - Microsoft Windows - VWIN32 - VxD SERVICES VxD = 002Ah Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01293) Values for VWIN32 (VxD ID 002Ah) service number: 0000h "VWin32_Get_Version" 0001h "VWin32_Wake_For_Event" 0002h "_VWIN32_QueueUserApc" 0003h "_VWIN32_Get_Thread_Context" 0004h "_VWIN32_Set_Thread_Context" 0005h "_VWIN32_CopyMem" 0006h "_VWIN32_BlockForTermination" 0007h "_VWIN32_Emulate_Npx" 0008h "_VWIN32_CheckDelayedNpxTrap" 0009h "VWIN32_EnterCrstR0" 000Ah "VWIN32_LeaveCrstR0" 000Bh "_VWIN32_FaultPopup" 000Ch "VWIN32_GetContextHandle" 000Dh "VWIN32_GetCurrentProcessHandle" 000Eh "_VWIN32_SetWin32Event" 000Fh "_VWIN32_PulseWin32Event" 0010h "_VWIN32_ResetWin32Event" 0011h "_VWIN32_WaitSingleObject" 0012h "_VWIN32_WaitMultipleObjects" 0013h "_VWIN32_CreateRing0Thread" 0014h "_VWIN32_CloseVxDHandle" 0015h "VWIN32_ActiveTimeBiasSet" 0016h "VWIN32_GetCurrentDirectory" 0017h "VWIN32_BlueScreenPopup" 0018h "VWIN32_TerminateApp" 0019h "_VWIN32_QueueKernelAPC" 001Ah "VWIN32_SysErrorBox" 001Bh "_VWIN32_IsClientWin32" 001Ch "VWIN32_IFSRIPWhenLev2Taken" SeeAlso: #01292,#01294 --------W-20----Vx002B----------------------- INT 20 P - Microsoft Windows - VCOMM - VxD SERVICES VxD = 002Bh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01294) Values for VCOMM (VxD ID 002Bh) service number: 0000h "VCOMM_Get_Version" 0001h "_VCOMM_Register_Port_Driver" 0002h "_VCOMM_Acquire_Port" 0003h "_VCOMM_Release_Port" 0004h "_VCOMM_OpenComm" 0005h "_VCOMM_SetCommState" 0006h "_VCOMM_GetCommState" 0007h "_VCOMM_SetupComm" 0008h "_VCOMM_TransmitCommChar" 0009h "_VCOMM_CloseComm" 000Ah "_VCOMM_GetCommQueueStatus" 000Bh "_VCOMM_ClearCommError" 000Ch "_VCOMM_GetModemStatus" 000Dh "_VCOMM_GetCommProperties" 000Eh "_VCOMM_EscapeCommFunction" 000Fh "_VCOMM_PurgeComm" 0010h "_VCOMM_SetCommEventMask" 0011h "_VCOMM_GetCommEventMask" 0012h "_VCOMM_WriteComm" 0013h "_VCOMM_ReadComm" 0014h "_VCOMM_EnableCommNotification" 0015h "_VCOMM_GetLastError" 0016h "_VCOMM_Steal_Port" 0017h "_VCOMM_SetReadCallBack" 0018h "_VCOMM_SetWriteCallBack" 0019h "_VCOMM_GetSetCommTimeouts" 001Ah "_VCOMM_SetWriteRequest" 001Bh "_VCOMM_SetReadRequest" 001Ch "_VCOMM_Dequeue_Request" 001Dh "_VCOMM_Dequeue_Request" 001Eh "_VCOMM_Enumerate_DevNodes" 001Fh "VCOMM_Map_Win32DCB_To_Ring0" 0020h "VCOMM_Map_Ring0DCB_To_Win32" 0021h "_VCOMM_Get_Contention_Handler" 0022h "_VCOMM_Map_Name_To_Resource" SeeAlso: #01293,#01295 --------W-20----Vx002C----------------------- INT 20 P - Microsoft Windows - SPOOLER - VxD SERVICES VxD = 002Ch Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01295) Values for SPOOLER (VxD ID 002Ch) service number: 0000h get version??? 0001h ??? 0010h ...last service for Windows95 SP1 SeeAlso: #01294,#01296 --------W-20----Vx0032----------------------- INT 20 P - Microsoft Windows - VSERVER - VxD SERVICES VxD = 0032h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01296) Values for VSERVER (VxD ID 0032h) service number: 00h get VSERVER version Return: CF clear EAX = version (AH = major, AL = minor) EBX = ??? (00000000h) 01h allocate ??? AX = ??? ESI = ??? Return: CF clear if successful CF set on error (table full) 02h NOP??? Return: EBX = 00000000h 03h ??? Return: ZF clear SeeAlso: #01295,#01297,INT 2F/AX=1684h/BX=0032h --------W-20----Vx0033----------------------- INT 20 P - Microsoft Windows - CONFIGMG - VxD SERVICES VxD = 0033h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01297) Values for CONFIGMG (VxD ID 0033h) service number: 0000h "_CONFIGMG_Get_Version" 0001h "_CONFIGMG_Initialize" 0002h "_CONFIGMG_Locate_DevNode" 0003h "_CONFIGMG_Get_Parent" 0004h "_CONFIGMG_Get_Child" 0005h "_CONFIGMG_Get_Sibling" 0006h "_CONFIGMG_Get_Device_ID_Size" 0007h "_CONFIGMG_Get_Device_ID" 0008h "_CONFIGMG_Get_Depth" 0009h "_CONFIGMG_Get_Private_DWord" 000Ah "_CONFIGMG_Set_Private_DWord" 000Bh "_CONFIGMG_Create_DevNode" 000Ch "_CONFIGMG_Query_Remove_SubTree" 000Dh "_CONFIGMG_Remove_SubTree" 000Eh "_CONFIGMG_Register_Device_Driver" 000Fh "_CONFIGMG_Register_Enumerator" 0010h "_CONFIGMG_Register_Arbitrator" 0011h "_CONFIGMG_Deregister_Arbitrator" 0012h "_CONFIGMG_Query_Arbitrator_Free_Size" 0013h "_CONFIGMG_Query_Arbitrator_Free_Data" 0014h "_CONFIGMG_Sort_NodeList" 0015h "_CONFIGMG_Yield" 0016h "_CONFIGMG_Lock" 0017h "_CONFIGMG_Unlock" 0018h "_CONFIGMG_Add_Empty_Log_Conf" 0019h "_CONFIGMG_Free_Log_Conf" 001Ah "_CONFIGMG_Get_First_Log_Conf" 001Bh "_CONFIGMG_Get_Next_Log_Conf" 001Ch "_CONFIGMG_Add_Res_Des" 001Dh "_CONFIGMG_Modify_Res_Des" 001Eh "_CONFIGMG_Free_Res_Des" 001Fh "_CONFIGMG_Get_Next_Res_Des" 0020h "_CONFIGMG_Get_Performance_Info" 0021h "_CONFIGMG_Get_Res_Des_Data_Size" 0022h "_CONFIGMG_Get_Res_Des_Data" 0023h "_CONFIGMG_Process_Events_Now" 0024h "_CONFIGMG_Create_Range_List" 0025h "_CONFIGMG_Add_Range" 0026h "_CONFIGMG_Delete_Range" 0027h "_CONFIGMG_Test_Range_Available" 0028h "_CONFIGMG_Dup_Range_List" 0029h "_CONFIGMG_Free_Range_List" 002Ah "_CONFIGMG_Invert_Range_List" 002Bh "_CONFIGMG_Intersect_Range_List" 002Ch "_CONFIGMG_First_Range" 002Dh "_CONFIGMG_Next_Range" 002Eh "_CONFIGMG_Dump_Range_List" 002Fh "_CONFIGMG_Load_DLVxDs" 0030h "_CONFIGMG_Get_DDBs" 0031h "_CONFIGMG_Get_CRC_CheckSum" 0032h "_CONFIGMG_Register_DevLoader" 0033h "_CONFIGMG_Reenumerate_DevNode" 0034h "_CONFIGMG_Setup_DevNode" 0035h "_CONFIGMG_Reset_Children_Marks" 0036h "_CONFIGMG_Get_DevNode_Status" 0037h "_CONFIGMG_Remove_Unmarked_Children" 0038h "_CONFIGMG_ISAPNP_To_CM" 0039h "_CONFIGMG_CallBack_Device_Driver" 003Ah "_CONFIGMG_CallBack_Enumerator" 003Bh "_CONFIGMG_Get_Alloc_Log_Conf" 003Ch "_CONFIGMG_Get_DevNode_Key_Size" 003Dh "_CONFIGMG_Get_DevNode_Key" 003Eh "_CONFIGMG_Read_Registry_Value" 003Fh "_CONFIGMG_Write_Registry_Value" 0040h "_CONFIGMG_Disable_DevNode" 0041h "_CONFIGMG_Enable_DevNode" 0042h "_CONFIGMG_Move_DevNode" 0043h "_CONFIGMG_Set_Bus_Info" 0044h "_CONFIGMG_Get_Bus_Info" 0045h "_CONFIGMG_Set_HW_Prof" 0046h "_CONFIGMG_Recompute_HW_Prof" 0047h "_CONFIGMG_Query_Change_HW_Prof" 0048h "_CONFIGMG_Get_Device_Driver_Private_DWord" 0049h "_CONFIGMG_Set_Device_Driver_Private_DWord" 004Ah "_CONFIGMG_Get_HW_Prof_Flags" 004Bh "_CONFIGMG_Set_HW_Prof_Flags" 004Ch "_CONFIGMG_Read_Registry_Log_Confs" 004Dh "_CONFIGMG_Run_Detection" 004Eh "_CONFIGMG_Call_At_Appy_Time" 004Fh "_CONFIGMG_Fail_Change_HW_Prof" 0050h "_CONFIGMG_Set_Private_Problem" 0051h "_CONFIGMG_Debug_DevNode" 0052h "_CONFIGMG_Get_Hardware_Profile_Info" 0053h "_CONFIGMG_Register_Enumerator_Function" 0054h "_CONFIGMG_Call_Enumerator_Function" 0055h "_CONFIGMG_Add_ID" 0056h "_CONFIGMG_Find_Range" 0057h "_CONFIGMG_Get_Global_State" 0058h "_CONFIGMG_Broadcast_Device_Change_Message" 0059h "_CONFIGMG_Call_DevNode_Handler" 005Ah "_CONFIGMG_Remove_Reinsert_All" Note: the VxD services appear to be identical to the PM/V86 APIs on INT 2F/AX=1684h SeeAlso: #01296,#01299,INT 2F/AX=1684h/BX=0033h --------W-20----Vx0034----------------------- INT 20 P - Microsoft Windows - DWCFGMG.SYS - VxD SERVICES VxD = 0034h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01298) Values for DWCFGMG.SYS (VxD ID 0034h) service number: 00h "CM_GetVersion" get supported DDI version Return: EAX = 00000000h if not installed else AH = major version number AL = minor version number EBX = number of devices controlled by DWCFGMG.SYS 01h "CM_GetConfig" get device configuration EBX = device index EDI -> buffer for configuration information (see #02675) Return: EAX = status (0000h successful, 0001h index out of range) 02h "CM_LockConfig" lock device configuration EDI -> configuration information (see #02675) Return: EAX = status 0000h successful 0001h resource conflict 0002h invalid request 03h "CM_UnlockConfig" unlock device configuration EDI -> configuration information (see #02675) Return: EAX = status (0000h successful, 0001h invalid request) 04h "CME_QueryResources" 05h "CME_AllocResources" 06h "CME_DeallocResources" SeeAlso: INT 2F/AX=1684h/BX=0034h --------W-20----Vx0036----------------------- INT 20 P - Microsoft Windows - VFBACKUP - VxD SERVICES VxD = 0036h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01299) Values for VFBACKUP (VxD ID 0036h) service number: 0000h get version Return: CF clear EAX = version (AH = major, AL = minor) 0001h "VFBACKUP_Lock_NEC" 0002h "VFBACKUP_UnLock_NEC" 0003h "VFBACKUP_Register_NEC" 0004h "VFBACKUP_Register_VFD" 0005h "VFBACKUP_Lock_All_Ports" SeeAlso: #01297,#01300 --------W-20----Vx0037----------------------- INT 20 P - Microsoft Windows - VMINI / ENABLE - VxD SERVICES VxD = 0037h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01300) Values for VMINI / ENABLE (VxD ID 0037h) service number: 0000h get version Return: CF clear EAX = version (AH = major, AL = minor) 0001h "VMINI_Update" ??? (performs VMMCall 1800Eh, then falls through to service 04h) Return: EAX = system time??? 0002h "VMINI_Status" get current ??? Return: EAX = ??? 0003h "VMINI_DisplayError" (schedules a global event via VMMCall 1800Eh) Return: ??? 0004h "VMINI_SetTimeStamp" (performs VMMCall 100CFh) Return: EAX = system time 0005h "VMINI_Siren" (call ??? priority event) Return: nothing 0006h "VMINI_RegisterAccess" (set ??? / get ???) EDI -> buffer containing data to copy into VxD and space for results Return: EDI buffer updated 0007h "VMINI_GetData" EBX = ??? flags (bits 2,15,17,18 checked) EDI -> ??? ??? Return: ??? 0008h "VMINI_ShutDownItem" (schedules a global event via VMMCall 1800Eh) Return: ??? 0009h "VMINI_RegisterSK" (get ??? data) EDI -> buffer for data (see #01301) Return: EDI buffer updated if large enough SeeAlso: #01299,#01302,#02677 at INT 2F/AX=1684h/BX=0037h Format of ENABLE.VXD ??? data: Offset Size Description (Table 01301) 00h DWORD (ret) length of data, including this word (call) length of buffer 04h DWORD -> 24-byte (or larger) buffer 08h DWORD -> 20-byte buffer 0Ch DWORD -> 260-byte buffer 10h DWORD -> 260-byte buffer SeeAlso: #01300 --------W-20----Vx0038----------------------- INT 20 P - Microsoft Windows - VCOND - VxD SERVICES VxD = 0038h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01302) Values for VCOND (VxD ID 0038h) service number: 0000h get VCOND version Return: CF clear EAX = version (AH = major, AL = minor) 0001h "VCOND_Launch_ConApp_Inherited" SeeAlso: #01303,#01300,#01304 (Table 01303) Values for Windows95 VCOND (Vxd ID 0038h) Win32 service number: 00h get VCOND version Return: EAX = version (AH = major, AL = minor) ... 34h ...last Win32 service for Windows95 SP1 SeeAlso: #01302 --------W-20----Vx003D----------------------- INT 20 P - Microsoft Windows - BIOS - VxD SERVICES VxD = 003Dh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01304) Values for BIOS (VxD ID 003Dh) service number: 00h get version??? 01h ??? 02h ??? 03h ??? SeeAlso: #01302,#01305 --------W-20----Vx003E----------------------- INT 20 P - Microsoft Windows - WSOCK - VxD SERVICES VxD = 003Eh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01305) Values for WSOCK (VxD ID 003Eh) service number: 00h get WSOCK version Return: CF clear AH = major version AL = minor version EAX high word = 0000h 01h ??? EAX = ??? or 00000000h Return: CF clear if successful EAX = 00000000h CF set on error EAX = ??? 02h ??? EAX = ??? or 00000000h Return: ??? 03h ??? 04h ...last service for Windows95 SP1 SeeAlso: #01304,#01306 --------W-20----Vx0040----------------------- INT 20 P - Microsoft Windows - IFSMgr - VxD SERVICES VxD = 0040h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01306) Values for IFSMGR (VxD ID 0040h) service number: 00h get version 01h "RegisterMount" 02h "RegisterNet" 03h "RegisterMailSlot" 04h "Attach" 05h "Detach" 06h "Get_NetTime" 07h "Get_DOSTime" 08h "SetupConnection" 09h "DerefConnection" 0Ah "ServerDOSCall" 0Bh "CompleteAsync" 0Ch "RegisterHeap" 0Dh "GetHeap" 0Eh "RetHeap" 0Fh "CheckHeap" 10h "CheckHeapItem" 11h "FillHeapSpare" 12h "Block" 13h "Wakeup" 14h "Yield" 15h "SchedEvent" 16h "QueueEvent" 17h "KillEvent" 18h "FreeIOReg" 19h "MakeMailSlot" 1Ah "DeleteMailSlot" 1Bh "WriteMailSlot" 1Ch "PopUp" 1Dh "printf" 1Eh "AssertFailed" 1Fh "LogEntry" 20h "DebugMenu" 21h "DebugVars" 22h "GetDebugString" 23h "GetDebugHexNum" 24h "NetFunction" 25h "DoDelAllUses" 26h "SetErrString" 27h "GetErrString" 28h "SetReqHook" 29h "SetPathHook" 2Ah "UseAdd" 2Bh "UseDel" 2Ch "InitUseAdd" 2Dh "ChangeDir" 2Eh "DelAllUses" 2Fh "CDROM_Attach" 30h "CDROM_Detach" 31h "Win32DupHandle" 32h "Ring0_FileIO" 33h "Toggle_Extended_File_Handle" 34h "IFSMgr_GetDrive_Info" 35h "IFSMgr_Ring0GetDriveInfo" 36h "IFSMgr_BlockNoEvents" 37h "IFSMgr_NetToDosTime" 38h "IFSMgr_DosToNetTime" 39h "IFSMgr_DosToWin32Time" 3Ah "IFSMgr_Win32ToDosTime" 3Bh "IFSMgr_NetToWin32Time" 3Ch "IFSMgr_Win32ToNetTime" 3Dh "IFSMgr_MetaMatch" 3Eh "IFSMgr_TransMatch" 3Fh "IFSMgr_CallProvider" 40h "UniToBCS" 41h "UniToBCSPath" 42h "BCSToUni" 43h "UniToUpper" 44h "UniCharToOEM" 45h "CreateBasis" 46h "MatchBasisName" 47h "AppendBasisTail" 48h "FcbToShort" 49h "ShortToFcb" 4Ah "IFSMgr_ParsePath" 4Bh "Query_PhysLock" 4Ch "_VolFlush" 4Dh "NotifyVolumeArrival" 4Eh "NotifyVolumeRemoval" 4Fh "QueryVolumeRemoval" 50h "IFSMgr_FSDUnmountCFSD" 51h "IFSMgr_GetConversionTablePtrs" 52h "IFSMgr_CheckAccessConflict" 53h "IFSMgr_LockFile" 54h "IFSMgr_UnlockFile" 55h "IFSMgr_RemoveLocks" 56h "IFSMgr_CheckLocks" 57h "IFSMgr_CountLocks" 58h "IFSMgr_ReassignLockFileInst" 59h "IFSMgr_UnassignLockList" 5Ah "IFSMgr_MountChildVolume" 5Bh "IFSMgr_UnmountChildVolume" 5Ch "IFSMgr_SwapDrives" 5Dh "IFSMgr_FSDMapFHtoIOREQ" 5Eh "IFSMgr_FSDParsePath" 5Fh "IFSMgr_FSDAttachSFT" 60h "IFSMgr_GetTimeZoneBias" 61h "IFSMgr_PNPEvent" 62h "IFSMgr_RegisterCFSD" 63h "IFSMgr_Win32MapExtendedHandleToSFT" 64h "IFSMgr_DbgSetFileHandleLimit" 65h "IFSMgr_Win32MapSFTToExtendedHandle" 66h "IFSMgr_FSDGetCurrentDrive" 67h "IFSMgr_InstallFileSystemApiHook" 68h "IFSMgr_RemoveFileSystemApiHook" 69h "IFSMgr_RunScheduledEvents" 6Ah "IFSMgr_CheckDelResource" 6Bh "IFSMgr_Win32GetVMCurdir" 6Ch "IFSMgr_SetupFailedConnection" 6Dh "_GetMappedErr" 6Eh "ShortToLossyFcb" 6Fh "IFSMgr_GetLockState" 70h "BcsToBcs" 71h "IFSMgr_SetLoopback" 72h "IFSMgr_ClearLoopback" 73h "IFSMgr_ParseOneElement" 74h "BcsToBcsUpper" SeeAlso: #01305,#01307 --------W-20----Vx0041----------------------- INT 20 P - Microsoft Windows - VCDFSD - VxD SERVICES VxD = 0041h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01307) Values for VCDFSD (VxD ID 0041h) service number: 00h get VCDFSD version??? 01h ??? 02h ??? 03h ??? SeeAlso: #01306,#01308 --------W-20----Vx0048----------------------- INT 20 P - Microsoft Windows - PERF - VxD SERVICES VxD = 0048h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01308) Values for PERF (VxD ID 0048h) service number: 00h get version Return: CF clear EAX = version (AH = major, AL = minor) 01h "PERF_Server_Register" (creates/sets a registry key for the server) 02h "PERF_Server_Deregister" end performance monitoring (deletes registry key for server) 03h "PERF_Server_Add_Stat" start performance monitoring (creates/sets a registry key) 04h "PERF_Server_Remove_Stat" end performance monitoring (deletes registry key) SeeAlso: #01307,#01311,#01309 --------W-20----Vx004A----------------------- INT 20 P - Microsoft Windows - MTRR - VxD SERVICES VxD = 004Ah Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01309) Values for MTRR (VxD ID 004Ah) service number: 00h get version 01h ??? (highest service defined for Win95B) SeeAlso: #01308,#01310 --------W-20----Vx004B----------------------- INT 20 P - Microsoft Windows - NTKERN - VxD SERVICES VxD = 004Bh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01310) Values for NTKERN (VxD ID 004Bh) service number: 00h get version??? ... 08h ??? (highest service defined for Win95B) SeeAlso: #01309,#01311 --------W-20----Vx011F----------------------- INT 20 P - Microsoft Windows - VFLATD - VxD SERVICES VxD = 011Fh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01311) Values for VFLATD (VxD ID 011Fh) service number: 00h get VFLATD version??? 01h ??? SeeAlso: #01308,#01312 --------W-20----Vx0449----------------------- INT 20 P - Microsoft Windows - vjoyd - VxD SERVICES VxD = 0449h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01312) Values for vjoyd (VxD ID 0449h) service number: 00h get vjoyd version??? 01h ??? SeeAlso: #01311,#01313 --------W-20----Vx044A----------------------- INT 20 P - Microsoft Windows - mmdevldr - VxD SERVICES VxD = 044Ah Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01313) Values for mmdevldr (VxD ID 044Ah) service number: 00h get mmdevldr version??? 01h ??? 02h ??? 03h ??? 04h ??? 05h ??? SeeAlso: #01312,#01314 --------W-20----Vx0480----------------------- INT 20 P - Microsoft Windows - VNetSup - VxD SERVICES VxD = 0480h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01314) Values for VNetSup (VxD ID 0480h) service number: 00h get VNetSup version??? 01h ??? 02h ??? 03h ??? 04h ??? 05h ??? 06h ??? SeeAlso: #01313,#01315 --------W-20----Vx0481----------------------- INT 20 P - Microsoft Windows - VREDIR - VxD SERVICES VxD = 0481h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01315) Values for VREDIR (VxD ID 0481h) service number: 0000h "VRedir_Get_Version" 0001h "VRedir_Register" 0002h "VRedir_MakeMailSlot" 0003h "VRedir_DeleteMailSlot" 0004h "VRedir_ServerEnum" 0010h ...last service for Windows95 SP1 SeeAlso: #01314,#01316 --------W-20----Vx0483----------------------- INT 20 P - Microsoft Windows - VSHARE - VxD SERVICES VxD = 0483h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01316) Values for VSHARE (VxD ID 0483h) service number: 00h get VSHARE version??? SeeAlso: #01315,#01317 --------W-20----Vx0487----------------------- INT 20 P - Microsoft Windows - NWLINK - VxD SERVICES VxD = 0487h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01317) Values for NWLINK (VxD ID 0487h) service number: 00h get NWLINK version??? 01h ??? 06h ...last service for Windows95 SP1 SeeAlso: #01316,#01318,#02642 --------W-20----Vx0488----------------------- INT 20 P - Microsoft Windows - VTDI - VxD SERVICES VxD = 0488h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01318) Values for VTDI (VxD ID 0488h) service number: 00h get VTDI version??? 01h ??? 08h get ??? seen called with DWORD -> ASCIZ "MSTCP" on stack, returning EAX=??? 0Dh ...last service for Windows95 SP1 SeeAlso: #01317,#01319 --------W-20----Vx0489----------------------- INT 20 P - Microsoft Windows - VIP - VxD SERVICES VxD = 0489h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01319) Values for VIP (VxD ID 0489h) service number: 00h get VIP version??? 01h ??? 05h ??? 06h ??? returns EAX=0/1 08h ...last service for Windows95 SP1 ---Frontier Technologies' FTCVIP--- 09h ??? returns EAX=1 SeeAlso: #01318,#01320 --------W-20----Vx048A----------------------- INT 20 P - Microsoft Windows - MSTCP - VxD SERVICES VxD = 048Ah Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01320) Values for MSTCP (VxD ID 048Ah) service number: 00h get MSTCP version??? SeeAlso: #01319,#01321 --------W-20----Vx048B----------------------- INT 20 P - Microsoft Windows - VCACHE - VxD SERVICES VxD = 048Bh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01321) Values for VCACHE (VxD ID 048Bh) service number: 0000h "VCACHE_Get_Version" 0001h "VCACHE_Register" 0002h "VCACHE_GetSize" 0003h "VCACHE_CheckAvail" 0004h "VCACHE_FindBlock" 0005h "VCACHE_FreeBlock" 0006h "VCACHE_MakeMRU" 0007h "VCACHE_Hold" 0008h "VCACHE_Unhold" 0009h "VCACHE_Enum" 000Ah "VCACHE_TestHandle" 000Bh "VCACHE_VerifySums" 000Ch "VCACHE_RecalcSums" 000Dh "VCACHE_TestHold" 000Eh "VCACHE_GetStats" 000Fh "VCache_Deregister" 0010h "VCache_AdjustMinimum" 0011h "VCache_SwapBuffers" 0012h "VCache_RelinquishPage" 0013h "VCache_UseThisPage" 0014h "_VCache_CreateLookupCache" 0015h "_VCache_CloseLookupCache" 0016h "_VCache_DeleteLookupCache" 0017h "_VCache_Lookup" 0018h "_VCache_UpdateLookup" SeeAlso: #01320,#01322 --------W-20----Vx048E----------------------- INT 20 P - Microsoft Windows - NWREDIR - VxD SERVICES VxD = 048Eh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01322) Values for NWREDIR (VxD ID 048Eh) service number: 00h get NWREDIR version??? 01h ??? SeeAlso: #01321,#01323 --------W-20----Vx0491----------------------- INT 20 P - Microsoft Windows - FILESEC - VxD SERVICES VxD = 0491h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01323) Values for FILESEC (VxD ID 0491h) service number: 00h get FILESEC version??? 01h ??? 10h ...last service for Windows95 SP1 SeeAlso: #01322,#01324 --------W-20----Vx0492----------------------- INT 20 P - Microsoft Windows - NWSERVER - VxD SERVICES VxD = 0492h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01324) Values for NWSERVER (VxD ID 0492h) service number: 00h get NWSERVER version??? 01h ??? 02h ??? 03h ??? SeeAlso: #01323,#01325 --------W-20----Vx0493----------------------- INT 20 P - Microsoft Windows - MSSP / NWSP - VxD SERVICES VxD = 0493h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01325) Values for MSSP/NWSP (VxD ID 0493h) service number: 00h get NSSP / NWSP version??? 01h ??? 06h ...last service for Windows95 SP1 SeeAlso: #01324,#01326 --------W-20----Vx0494----------------------- INT 20 P - Microsoft Windows - NSCL - VxD SERVICES VxD = 0494h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01326) Values for NSCL (VxD ID 0494h) service number: 00h get NSCL version??? 01h ??? 02h ??? SeeAlso: #01325,#01327 --------W-20----Vx0495----------------------- INT 20 P - Microsoft Windows - AFVXD - VxD SERVICES VxD = 0495h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01327) Values for AFVXD (VxD ID 0495h) service number: 00h get version Return: CF clear AX = version (AH = high, AL = low) 01h ??? EAX -> ??? EBX -> ??? ECX = ??? Return: ??? 02h ??? EAX -> ??? Return: ??? SeeAlso: #01326,#01328 --------W-20----Vx0496----------------------- INT 20 P - Microsoft Windows - NDIS2SUP - VxD SERVICES VxD = 0496h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier (see #02642) SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01328) Values for NDIS2SUP (VxD ID 0496h) service number: 00h get NDIS2SUP version??? 01h ??? SeeAlso: #01327,#01329 --------W-20----Vx0498----------------------- INT 20 P - Microsoft Windows - Splitter - VxD SERVICES VxD = 0498h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier (see #02642) SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01329) Values for Splitter (VxD ID 0498h) service number: 00h get Splitter version Return: CF clear EAX = version (00000001h) 01h ??? 02h ??? 03h hook/unhook VMM "hook device service" service EAX = request (0 = unhook, nonzero = hook) Return: if EAX nonzero on entry, Splitter's service 04h replaces VMM service 0090h; otherwise, default handler is restored 04h Splitter "hook device service" handler SeeAlso: #01328,#01330 --------W-20----Vx0499----------------------- INT 20 P - Microsoft Windows - PPPMAC - VxD SERVICES VxD = 0499h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier (see #02642) SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01330) Values for PPPMAC (VxD ID 0499h) service number: 00h ??? 09h ...last service for Windows95 SP1 SeeAlso: #01329,#01331,#02642 --------W-20----Vx049A----------------------- INT 20 P - Microsoft Windows - VDHCP - VxD SERVICES VxD = 049Ah Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier (see #02642) SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01331) Values for VDHCP (VxD ID 049Ah) service number: 00h get VDHCP version??? 01h ??? 02h ??? 03h ??? SeeAlso: #01330,#01332 --------W-20----Vx049B----------------------- INT 20 P - Microsoft Windows - VNBT - VxD SERVICES VxD = 049Bh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier (see #02642) SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01332) Values for VNBT (VxD ID 049Bh) service number: 00h get VNBT version??? SeeAlso: #01331,#01333 --------W-20----Vx049D----------------------- INT 20 P - Microsoft Windows - LOGGER - VxD SERVICES VxD = 049Dh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier (see #02642) SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01333) Values for LOGGER (VxD ID 049Dh) service number: 00h get LOGGER version??? 01h ??? 02h ??? 03h ??? 04h ??? SeeAlso: #01332,#01334 --------W-20----Vx097C----------------------- INT 20 P - Microsoft Windows - PCCARD - VxD SERVICES VxD = 097Ch Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier (see #02642) SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01334,#01340 (Table 01334) Values for PCCARD (VxD ID 097Ch) service number: 0000h "PCCARD_Get_Version" 0001h "PCCARD_Card_Services" SeeAlso: #01333,#01337 ----------20----Vx3048----------------------- INT 20 P - Frontier Technologies ??? - VxD SERVICES VxD = 3048h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01335 (Table 01335) Values for ??? (VxD ID 3048h) service number: 00h get version??? 03h ??? called with 5 DWORDs on stack, returns EAX=???, ECX nonzero on error 04h ??? called with DWORD on stack, returns EAX=???, ECX nonzero on error 06h ??? called with DWORD on stack, returns EAX=???, ECX nonzero on error 07h ??? called with 3 DWORDs on stack, returns EAX=???, ECX nonzero on error 0Bh ??? called with 2 DWORDs on stack, returns EAX=???, ECX nonzero on error 0Ch ??? called with 2 DWORDs on stack, returns EAX=???, ECX nonzero on error 0Dh ??? called with 6 DWORDs on stack, returns EAX=???, ECX nonzero on error 1Ah ??? called with 3 DWORDs on stack SeeAlso: #01336 ----------20----Vx3049----------------------- INT 20 P - Frontier Technologies ??? - VxD SERVICES VxD = 3049h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01336 (Table 01336) Values for ??? (VxD ID 3049h) service number: 00h get version??? 1Dh ??? called with 2 DWORDs on stack; returns EAX=???, ECX nonzero on error 1Eh ??? called with 6 DWORDs on stack; returns EAX=???, ECX nonzero on error SeeAlso: #01335 --------W-20----Vx3098----------------------- INT 20 P - QEMM - VstlthD - VxD SERVICES VxD = 3098h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01337) Values for VStlthD (VxD ID 3098h) service number: 00h get version Return: CF clear EAX = version (AH = major, AL = BCD minor) 01h ??? 02h get current ??? Return: CF clear EDX = current value of ??? 03h ??? SeeAlso: #01334,#01338 --------W-20----Vx30F6----------------------- INT 20 P - Microsoft Windows - WSVV - VxD SERVICES VxD = 30F6h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01338) Values for WSVV (VxD ID 30F6h) service number: 00h get WSVV version??? SeeAlso: #01337,#01339 --------W-20----Vx33FC----------------------- INT 20 P - Microsoft Windows - ASPIENUM - VxD SERVICES VxD = 33FCh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01339) Values for ASPIENUM (VxD ID 33FCh) service number: 00h get ASPIENUM version??? 01h ??? 02h ??? 03h ??? SeeAlso: #01338,#01340 --------W-20----Vx357E----------------------- INT 20 P - Microsoft Windows - DSOUND - VxD SERVICES VxD = 357Eh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01340) Values for DSOUND (VxD ID 357Eh) service number: 00h get DSOUND version??? 01h ??? 02h ??? SeeAlso: #01339,#01341 --------W-20----Vx39E6----------------------- INT 20 P - Microsoft Windows - A3D - VxD SERVICES VxD = 39E6h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01341) Values for A3D (VxD ID 39E6h) service number: 00h get version??? 01h ??? 02h ??? (highest service defined) SeeAlso: #01340,#01342 --------W-20----Vx3BFD----------------------- INT 20 P - Microsoft Windows - CWCPROXY - VxD SERVICES VxD = 3BFDh Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01342) Values for CWCPROXY (VxD ID 3BFDh) service number: 00h get version??? ... 03h ??? (highest service defined) SeeAlso: #01341,#01343 --------W-20----Vx3C78----------------------- INT 20 P - Microsoft Windows - VGARTD - VxD SERVICES VxD = 3C78h Note: the desired VxD and service number are identified by the data immediately following the INT 20 instruction, as in: INT 20h DW service number DW VxD identifier SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340 (Table 01343) Values for VGARTD (VxD ID 3C78h) service number: 00h get version??? ... 05h ??? (highest service defined) SeeAlso: #01342,#02642 --------G-21--------------------------------- INT 21 - COMTROL HOSTESS i/ISA DEBUGGER - GET SEGMENT FOR CONTROL PROGRAM USE ??? Return: AX = first segment available for control program use SeeAlso: INT 20"COMTROL",INT 22"COMTROL" --------D-2100------------------------------- INT 21 - DOS 1+ - TERMINATE PROGRAM AH = 00h CS = PSP segment Notes: Microsoft recommends using INT 21/AH=4Ch for DOS 2+ this function sets the program's return code (ERRORLEVEL) to 00h execution continues at the address stored in INT 22 after DOS performs whatever cleanup it needs to do (restoring the INT 22,INT 23,INT 24 vectors from the PSP assumed to be located at offset 0000h in the segment indicated by the stack copy of CS, etc.) if the PSP is its own parent, the process's memory is not freed; if INT 22 additionally points into the terminating program, the process is effectively NOT terminated not supported by MS Windows 3.0 DOSX.EXE DOS extender SeeAlso: AH=26h,AH=31h,AH=4Ch,INT 20,INT 22 --------D-2101------------------------------- INT 21 - DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO AH = 01h Return: AL = character read Notes: ^C/^Break are checked, and INT 23 executed if read ^P toggles the DOS-internal echo-to-printer flag ^Z is not interpreted, thus not causing an EOF if input is redirected character is echoed to standard output standard input is always the keyboard and standard output the screen under DOS 1.x, but they may be redirected under DOS 2+ SeeAlso: AH=06h,AH=07h,AH=08h,AH=0Ah --------v-21010F----------------------------- INT 21 - VIRUS - "Susan" - INSTALLATION CHECK AX = 010Fh Return: AX = 7553h ("Su") if resident SeeAlso: INT 16/AH=DDh"VIRUS",INT 21/AX=0B56h --------D-2102------------------------------- INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT AH = 02h DL = character to write Return: AL = last character output (despite the official docs which state nothing is returned) (at least DOS 2.1-7.0) Notes: ^C/^Break are checked, and INT 23 executed if pressed standard output is always the screen under DOS 1.x, but may be redirected under DOS 2+ the last character output will be the character in DL unless DL=09h on entry, in which case AL=20h as tabs are expanded to blanks if standard output is redirected to a file, no error checks (write- protected, full media, etc.) are performed SeeAlso: AH=06h,AH=09h --------D-2103------------------------------- INT 21 - DOS 1+ - READ CHARACTER FROM STDAUX AH = 03h Return: AL = character read Notes: keyboard checked for ^C/^Break, and INT 23 executed if detected STDAUX is usually the first serial port SeeAlso: AH=04h,INT 14/AH=02h,INT E0/CL=03h --------D-2104------------------------------- INT 21 - DOS 1+ - WRITE CHARACTER TO STDAUX AH = 04h DL = character to write Notes: keyboard checked for ^C/^Break, and INT 23 executed if detected STDAUX is usually the first serial port if STDAUX is busy, this function will wait until it becomes free SeeAlso: AH=03h,INT 14/AH=01h,INT E0/CL=04h --------D-2105------------------------------- INT 21 - DOS 1+ - WRITE CHARACTER TO PRINTER AH = 05h DL = character to print Notes: keyboard checked for ^C/^Break, and INT 23 executed if detected STDPRN is usually the first parallel port, but may be redirected under DOS 2+ if the printer is busy, this function will wait SeeAlso: INT 17/AH=00h --------D-2106------------------------------- INT 21 - DOS 1+ - DIRECT CONSOLE OUTPUT AH = 06h DL = character (except FFh) Return: AL = character output (despite official docs which state nothing is returned) (at least DOS 2.1-7.0) Notes: does not check ^C/^Break writes to standard output, which is always the screen under DOS 1.x, but may be redirected under DOS 2+ SeeAlso: AH=02h,AH=09h --------D-2106--DLFF------------------------- INT 21 - DOS 1+ - DIRECT CONSOLE INPUT AH = 06h DL = FFh Return: ZF set if no character available AL = 00h ZF clear if character available AL = character read Notes: ^C/^Break are NOT checked if the returned character is 00h, the user pressed a key with an extended keycode, which will be returned by the next call of this function this function reads from standard input, which is always the keyboard under DOS 1.x, but may be redirected under DOS 2+ although the return of AL=00h when no characters are available is not documented, some programs rely on this behavior SeeAlso: AH=0Bh --------D-2107------------------------------- INT 21 - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO AH = 07h Return: AL = character read from standard input Notes: does not check ^C/^Break standard input is always the keyboard under DOS 1.x, but may be redirected under DOS 2+ if the interim console flag is set (see AX=6301h), partially-formed double-byte characters may be returned SeeAlso: AH=01h,AH=06h,AH=08h,AH=0Ah --------D-2108------------------------------- INT 21 - DOS 1+ - CHARACTER INPUT WITHOUT ECHO AH = 08h Return: AL = character read from standard input Notes: ^C/^Break are checked, and INT 23 executed if detected standard input is always the keyboard under DOS 1.x, but may be redirected under DOS 2+ if the interim console flag is set (see AX=6301h), partially-formed double-byte characters may be returned SeeAlso: AH=01h,AH=06h,AH=07h,AH=0Ah,AH=64h"DOS 3.2+" --------D-2109------------------------------- INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT AH = 09h DS:DX -> '$'-terminated string Return: AL = 24h (the '$' terminating the string, despite official docs which state that nothing is returned) (at least DOS 2.1-7.0 and NWDOS) Notes: ^C/^Break are checked, and INT 23 is called if either pressed standard output is always the screen under DOS 1.x, but may be redirected under DOS 2+ under the FlashTek X-32 DOS extender, the pointer is in DS:EDX SeeAlso: AH=02h,AH=06h"OUTPUT" --------D-210A------------------------------- INT 21 - DOS 1+ - BUFFERED INPUT AH = 0Ah DS:DX -> buffer (see #01344) Return: buffer filled with user input Notes: ^C/^Break are checked, and INT 23 is called if either detected reads from standard input, which may be redirected under DOS 2+ if the maximum buffer size (see #01344) is set to 00h, this call returns immediately without reading any input SeeAlso: AH=0Ch,INT 2F/AX=4810h Format of DOS input buffer: Offset Size Description (Table 01344) 00h BYTE maximum characters buffer can hold 01h BYTE (call) number of chars from last input which may be recalled (ret) number of characters actually read, excluding CR 02h N BYTEs actual characters read, including the final carriage return --------K-210A00----------------------------- INT 21 - WCED v1.6+ - INSTALLATION CHECK AX = 0A00h DS:DX -> 6-byte buffer whose first two bytes must be 00h Return: buffer offset 02h-05h filled with "Wced" if installed Program: WCED is a free command-line editor and history utility by Stuart Russell SeeAlso: AH=FFh"CED" --------D-210B------------------------------- INT 21 - DOS 1+ - GET STDIN STATUS AH = 0Bh Return: AL = status 00h if no character available FFh if character is available Notes: ^C/^Break are checked, and INT 23 is called if either pressed standard input is always the keyboard under DOS 1.x, but may be redirected under DOS 2+ if the interim console flag is set (see AX=6301h), this function returns AL=FFh if a partially-formed double-byte character is available SeeAlso: AH=06h"INPUT",AX=4406h --------v-210B56----------------------------- INT 21 - VIRUS - "Perfume" - INSTALLATION CHECK AX = 0B56h Return: AX = 4952h if resident SeeAlso: AX=0D20h,INT 12/AX=4350h/BX=4920h,INT 13/AH=F2h,INT 21/AX=010Fh --------D-210C------------------------------- INT 21 - DOS 1+ - FLUSH BUFFER AND READ STANDARD INPUT AH = 0Ch AL = STDIN input function to execute after flushing buffer other registers as appropriate for the input function Return: as appropriate for the specified input function Note: if AL is not one of 01h,06h,07h,08h, or 0Ah, the buffer is flushed but no input is attempted SeeAlso: AH=01h,AH=06h"INPUT",AH=07h,AH=08h,AH=0Ah --------D-210D------------------------------- INT 21 - DOS 1+ - DISK RESET AH = 0Dh Return: (DOS 6 only) CF clear (earlier versions preserve CF) Notes: This function writes all modified disk buffers to disk, but does not update the directory information (that is only done when files are closed or a SYNC call is issued) SeeAlso: AX=5D01h,AX=710Dh,INT 13/AH=00h,INT 2F/AX=1120h --------v-210D20----------------------------- INT 21 - VIRUS - "Crazy Imp" - INSTALLATION CHECK AX = 0D20h Return: AX = 1971h if resident SeeAlso: AX=0B56h,AX=1812h,AX=2C2Ch,AX=710Dh,AH=30h/DX=ABCDh --------D-210E------------------------------- INT 21 - DOS 1+ - SELECT DEFAULT DRIVE AH = 0Eh DL = new default drive (00h = A:, 01h = B:, etc) Return: AL = number of potentially valid drive letters Notes: under Novell NetWare, the return value is always 32, the number of drives that NetWare supports under DOS 3.0+, the return value is the greatest of 5, the value of LASTDRIVE= in CONFIG.SYS, and the number of drives actually present on a DOS 1.x/2.x single-floppy system, AL returns 2 since the floppy may be accessed as either A: or B: otherwise, the return value is the highest drive actually present DOS 1.x supports a maximum of 16 drives, 2.x a maximum of 63 drives, and 3+ a maximum of 26 drives under Novell DOS 7, this function returns the correct LASTDRIVE value even when the undocumented LASTDRIVE=27..32 directive was used in CONFIG.SYS "parse FCB" (see AH=29h) can be used to determine whether a drive letter is valid SeeAlso: AH=19h,AH=3Bh,AH=DBh --------v-210E--DLAD------------------------- INT 21 U - Novell DOS 7 - SDRes v27.03 - INSTALLATION CHECK AH = 0Eh DL = ADh Return: AL = BAh if installed Program: SDRes is the resident portion of the Search&Destroy antiviral by Fifth Generation Systems, as bundled with Novell DOS 7 Note: SDRes will terminate programs which test for the presence of viruses using interrupt-based installation calls, saying that the program may be infected SeeAlso: AH=0Eh/DL=AEh,AH=0Eh/DL=AFh,AH=4Ah/BX=00B6h,INT 13/AX=A759h --------v-210E--DLAE------------------------- INT 21 U - Novell DOS 7 - SDRes v27.03 - CLEAR ??? FLAG AH = 0Eh DL = AEh SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AFh,INT 13/AX=A759h --------v-210E--DLAF------------------------- INT 21 U - Novell DOS 7 - SDRes v27.03 - SET ??? FLAG AH = 0Eh DL = AFh SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AEh,INT 13/AX=A759h --------D-210F------------------------------- INT 21 - DOS 1+ - OPEN FILE USING FCB AH = 0Fh DS:DX -> unopened File Control Block (see #01345,#01346) Return: AL = status 00h successful FFh file not found or access denied Notes: (DOS 3.1+) file opened for read/write in compatibility mode an unopened FCB has the drive, filename, and extension fields filled in and all other bytes cleared not supported by MS Windows 3.0 DOSX.EXE DOS extender DR DOS checks password attached with AX=4303h (FAT32 drive) this function will only succeed for creating a volume label; FAT32 does not support FCBs for file I/O BUG: APPEND for DOS 3.3+ corrupts DX if the file is not found SeeAlso: AH=10h,AH=16h,AH=3Dh,AX=4303h Format of File Control Block: Offset Size Description (Table 01345) 00h BYTE drive number (0 = default, 1 = A, etc) FFh is not allowed (signals extended FCB, see #01346) 01h 8 BYTEs blank-padded file name 09h 3 BYTEs blank-padded file extension 0Ch WORD current block number 0Eh WORD logical record size 10h DWORD file size 14h WORD date of last write (see #01666 at AX=5700h) 16h WORD time of last write (see #01665 at AX=5700h) (DOS 1.1+) 18h 8 BYTEs reserved (see #01347,#01348,#01349,#01350,#01351) 20h BYTE record within current block 21h DWORD random access record number (if record size is > 64 bytes, high byte is omitted) SeeAlso: #01346 Format of Extended File Control Block (XFCB): Offset Size Description (Table 01346) 00h BYTE FFh signature for extended FCB 01h 5 BYTEs reserved 06h BYTE file attribute if extended FCB 07h 36 BYTEs standard FCB (all offsets are shifted by seven bytes) SeeAlso: #01246 Format of FCB reserved field for DOS 1.0: Offset Size Description (Table 01347) 16h WORD location in directory (if high byte = FFh, low byte is device ID) 18h WORD number of first cluster in file 1Ah WORD current absolute cluster number on disk 1Ch WORD current relative cluster number within file (0 = first cluster of file, 1 = second cluster, etc.) 1Eh BYTE dirty flag (00h = not dirty) 1Fh BYTE unused Format of FCB reserved field for DOS 1.10-1.25: Offset Size Description (Table 01348) 18h BYTE bit 7: set if logical device bit 6: not dirty bits 5-0: disk number or logical device ID 19h WORD starting cluster number on disk 1Bh WORD current absolute cluster number on disk 1Dh WORD current relative cluster number within file 1Fh BYTE unused Format of FCB reserved field for DOS 2.x: Offset Size Description (Table 01349) 18h BYTE bit 7: set if logical device bit 6: set if open??? bits 5-0: ??? 19h WORD starting cluster number on disk 1Bh WORD ??? 1Dh BYTE ??? 1Eh BYTE ??? 1Fh BYTE ??? Format of FCB reserved field for DOS 3.x: Offset Size Description (Table 01350) 18h BYTE number of system file table entry for file 19h BYTE attributes bits 7,6: 00 = SHARE.EXE not loaded, disk file 01 = SHARE.EXE not loaded, character device 10 = SHARE.EXE loaded, remote file 11 = SHARE.EXE loaded, local file or device bits 5-0: low six bits of device attribute word ---SHARE.EXE loaded, local file--- 1Ah WORD starting cluster of file on disk 1Ch WORD (DOS 3.x) offset within SHARE of sharing record (see #01637 at AH=52h) 1Eh BYTE file attribute 1Fh BYTE ??? ---SHARE.EXE loaded, remote file--- 1Ah WORD number of sector containing directory entry (see #01352) 1Ch WORD relative cluster within file of last cluster accessed 1Eh BYTE absolute cluster number of last cluster accessed 1Fh BYTE ??? ---SHARE.EXE not loaded--- 1Ah BYTE (low byte of device attribute word AND 0Ch) OR open mode 1Bh WORD starting cluster of file 1Dh WORD number of sector containing directory entry (see #01352) 1Fh BYTE number of directory entry within sector Note: if FCB opened on character device, DWORD at 1Ah is set to the address of the device driver header, then the BYTE at 1Ah is overwritten. SeeAlso: #01646 Format of FCB reserved field for DOS 5.0: Offset Size Description (Table 01351) 18h BYTE number of system file table entry for file 19h BYTE attributes bits 7,6: 00 = SHARE.EXE not loaded, disk file 01 = SHARE.EXE not loaded, character device 10 = SHARE.EXE loaded, remote file 11 = SHARE.EXE loaded, local file or device bits 5-0: low six bits of device attribute word ---SHARE.EXE loaded, local file--- 1Ah WORD starting cluster of file on disk 1Ch WORD unique sequence number of sharing record 1Eh BYTE file attributes 1Fh BYTE unused??? ---SHARE.EXE loaded, remote file--- 1Ah WORD network handle 1Ch DWORD network ID ---SHARE not loaded, local device--- 1Ah DWORD pointer to device driver header (see #01646) 1Eh 2 BYTEs unused??? ---SHARE not loaded, local file--- 1Ah BYTE extra info bit 7: read-only attribute from SFT bit 6: archive attribute from SFT bits 5-0: high bits of sector number 1Bh WORD starting cluster of file 1Dh WORD low word of sector number containing directory entry (see #01352) 1Fh BYTE number of directory entry within sector --------D-2110------------------------------- INT 21 - DOS 1+ - CLOSE FILE USING FCB AH = 10h DS:DX -> File Control Block (see #01345) Return: AL = status 00h successful FFh failed Notes: a successful close forces all disk buffers used by the file to be written and the directory entry to be updated not supported by MS Windows 3.0 DOSX.EXE DOS extender SeeAlso: AH=0Fh,AH=16h,AH=3Eh --------D-2111------------------------------- INT 21 - DOS 1+ - FIND FIRST MATCHING FILE USING FCB AH = 11h DS:DX -> unopened FCB (see #01345), may contain '?' wildcards Return: AL = status 00h successful [DTA] unopened FCB for first matching file FFh no matching filename, or bad FCB Notes: the type of the returned FCB depends on whether the input FCB was a normal or an extended FCB the data returned in the DTA (disk transfer area) is actually the drive number (or extended FCB header and drive number) followed by the file's directory entry (see #01352); this format happens to be compatible with an unopened FCB for extended FCBs with search attribute 08h, the volume label (if any) will be returned even if the current directory is not the root dir. DOS 3.0+ also allows the '*' wildcard the search FCB at DS:DX must not be modified if AH=12h will be used to continue searching; DOS 3.3 has set the following parts of the FCB: 0Ch BYTE ??? 0Dh WORD directory entry number of matching file 0Fh WORD cluster number of current directory 11h 4 BYTEs ??? 15h BYTE drive number (1=A:) this function is used by many copy protection schemes to obtain the starting cluster of a file BUG: under Windows95, if a .EXE program ("MZ" header) rather than a true .COM calls this function from a DOS box, the ten bytes of the directory entry from 0Ch to 15h may be filled with zeros rather than the additional file times SeeAlso: AH=12h,AH=1Ah,AH=4Eh,INT 2F/AX=111Bh Format of DOS directory entry: Offset Size Description (Table 01352) 00h 8 BYTEs blank-padded filename first character is set to E5h for deleted files (05h for pending delete files under Novell DOS / OpenDOS) 08h 3 BYTEs blank-padded file extension 0Bh BYTE attributes 0Ch 10 BYTEs (MS-DOS 1.0-6.22) reserved (DR DOS) used to store file password / owner (see #01354) (see also INT 21/AX=4302h) (Novell DOS 7) DELWATCH data (see #01354) (MS-DOS 7/Windows95) additional file times (see #01353) 16h WORD time of creation or last update (see #01665 at AX=5700h) 18h WORD date of creation or last update (see #01666 at AX=5700h) 1Ah WORD starting cluster number (see also AX=440Dh/CX=0871h) (may not be set in INT 21/AH=11h return data for FAT32 drives) 1Ch DWORD file size SeeAlso: #01355,#02628,#02629 Format of MS-DOS 7/Windows95 additional file times: Offset Size Description (Table 01353) 00h BYTE reserved 01h BYTE 10-millisecond units past creation time below 02h WORD file creation time 04h WORD file creation date 06h WORD last-access date 08h WORD (FAT32) high word of starting cluster number Note: this data is stored beginning at offset 0Ch in a standard directory entry SeeAlso: #01352 Format of DR DOS 6/Novell DOS 7 additional file information: Offset Size Description (Table 01354) 0Ch BYTE reserved (00h) (DOSPLUS v1.2) user-defined attributes for CP/M compatibility (bit 7 = F1,...,bit 4 = F4, bits 3-0 reserved (0)) 0Dh BYTE first character of original filename for deleted file 0Eh WORD encrypted file/directory password 10h WORD reserved (00h) (Novell DOS 7 DELWATCH) original file time cleared when file is undeleted or purged 12h WORD (DR DOS 6) file owner ID (Novell DOS 7 DELWATCH) original file date cleared when file is undeleted or purged 14h WORD single/multiuser file/directory access rights (see AX=4302h) ---deleted files--- 16h WORD (Novell DOS 7 DELWATCH) time of deletion 18h WORD (Novell DOS 7 DELWATCH) date of deletion Note: offsets are within the full directory entry SeeAlso: #01352 Format of MS-DOS 7/Windows95 long-filename directory entry: Offset Size Description (Table 01355) 00h BYTE LFN record sequence and flags bits 5-0: sequence number bit 6: set if last long-filename record for file bit 7: set if file deleted 01h 10 BYTEs long filename, first part 0Bh BYTE 0Fh (otherwise impossible file attribute, used as signature) 0Ch BYTE reserved??? (00h) 0Dh BYTE checksum for short filename 0Eh 12 BYTEs long filename, second part 1Ah WORD first cluster number (always 0000h for LFN records) 1Ch 4 BYTEs long filename, third part Notes: long-filename entries are always stored in the directory just prior to the short-name entry for a file multiple LFN records are used if the long filename does not fit into a single record the short-filename checksum byte is computed by adding up the eleven bytes of the short filename, rotating the intermediate sum right one bit before adding the next character the long filename is encoded as 16-bit Unicode characters; for most filenames, this appears in the directory as the ASCII character followed by 00h SeeAlso: #01352,INT 21/AX=5704h,INT 21/AH=71h --------D-2112------------------------------- INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB AH = 12h DS:DX -> unopened FCB (see #01345) Return: AL = status 00h successful Disk Transfer Area filled with unopened FCB FFh no more matching filenames Note: (see AH=11h) assumes that successful FindFirst executed on search FCB before call SeeAlso: AH=1Ah,AH=4Fh,INT 2F/AX=111Ch --------D-2113------------------------------- INT 21 - DOS 1+ - DELETE FILE USING FCB AH = 13h DS:DX -> unopened FCB (see #01345), filename filled with template for deletion ('?' wildcards allowed) Return: AL = status 00h one or more files successfully deleted FFh no matching files or all were read-only or locked Notes: DOS 1.25+ deletes everything in the current directory (including subdirectories) and sets the first byte of the name to 00h (entry never used) instead of E5h if called on an extended FCB with filename '???????????' and bits 0-4 of the attribute set (bits 1 and 2 for DOS 1.x). This may have originally been an optimization to minimize directory searching after a mass deletion (DOS 1.25+ stop the directory search upon encountering a never-used entry), but can corrupt the filesystem under DOS 2+ because subdirectories are removed without deleting the files they contain. currently-open files should not be deleted MS-DOS allows deletion of read-only files with an extended FCB, whereas Novell NetWare, DR DOS 6, and Novell DOS 7/OpenDOS 7.01 do not this function generates a trap "D" under OS/2 v4.x (Warp4) when called on an HPFS partition with a wildcard in the filename; it operates correctly on FAT partitions and when called without wildcards SeeAlso: AH=41h,INT 2F/AX=1113h --------D-2114------------------------------- INT 21 - DOS 1+ - SEQUENTIAL READ FROM FCB FILE AH = 14h DS:DX -> opened FCB (see #01345) Return: AL = status 00h successful 01h end of file (no data) 02h segment wrap in DTA 03h end of file, partial record read Disk Tranfer Area filled with record read from file Notes: reads a record of the size specified in the FCB beginning at the current file position, then updates the current block and current record fields in the FCB if a partial record was read, it is zero-padded to the full size not supported by MS Windows 3.0 DOSX.EXE DOS extender SeeAlso: AH=0Fh,AH=15h,AH=1Ah,AH=3Fh"DOS",INT 2F/AX=1108h --------D-2115------------------------------- INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE AH = 15h DS:DX -> opened FCB (see #01345) Disk Tranfer Area contains record to be written Return: AL = status 00h successful 01h disk full 02h segment wrap in DTA Notes: writes a record of the size specified in the FCB beginning at the current file position, then updates the current block and current record fields in the FCB if less than a full sector is written, the data is placed in a DOS buffer to be written out at a later time not supported by MS Windows 3.0 DOSX.EXE DOS extender SeeAlso: AH=0Fh,AH=14h,AH=1Ah,AH=40h,INT 2F/AX=1109h --------D-2116------------------------------- INT 21 - DOS 1+ - CREATE OR TRUNCATE FILE USING FCB AH = 16h DS:DX -> unopened FCB (see #01345), wildcards not allowed Return: AL = status 00h successful FFh directory full or file exists and is read-only or locked Notes: if file already exists, it is truncated to zero length if an extended FCB is used, the file is given the attribute in the FCB; this is how to create a volume label in the disk's root dir not supported by MS Windows 3.0 DOSX.EXE DOS extender (FAT32 drive) this function will only succeed for creating a volume label; FAT32 does not support FCBs for file I/O SeeAlso: AH=0Fh,AH=10h,AH=3Ch --------D-2117------------------------------- INT 21 - DOS 1+ - RENAME FILE USING FCB AH = 17h DS:DX -> modified FCB (see also #01345) the old filename ('?' wildcards OK) is in the standard location while the new filename ('?' wildcards OK, no drive) is stored in the 11 bytes beginning at offset 11h Return: AL = status 00h successfully renamed FFh no matching files,file is read-only, or new name already exists Notes: subdirectories may be renamed using an extended FCB with the appropriate attribute, as may volume labels DR DOS checks password attached with AX=4303h before permitting rename SeeAlso: AH=0Fh,AH=13h,AX=4303h,AH=56h,INT 2F/AX=1111h --------D-2118------------------------------- INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY AH = 18h Return: AL = 00h Note: corresponds to the CP/M BDOS function "get bit map of logged drives", which is meaningless under MS-DOS SeeAlso: AH=1Dh,AH=1Eh,AH=20h,AX=4459h,INT 60/DI=0513h --------O-2118------------------------------- INT 21 - U - PTS-DOS 6.51 & S/DOS 1.0 - EXTENDED RENAME FILE USING FCB AH = 18h DS:DX -> modified FCB (see also #01345) Return: AL = status 00h successfully renamed FFh no matching files,file is read-only, or new name already exists Notes: This function is provided by Paragon Technology Systems S/DOS 1.0 (and most probably also PTS-DOS 6.51, maybe even earlier). It uses the same code as for function INT 21/AH=17h, but additionally sets an internal "SERVER" flag on entry. Apparently this results in different usage of attributes and wildcards. It is currently unknown if this function is also supported by PhysTechSoft's PTS-DOS 6.60, 6.70, or 2000. SeeAlso: AH=17h,AH=0Fh,AH=13h,AX=4303h,AH=56h,INT 2F/AX=1111h,INT21/AH=5Dh --------v-211812------------------------ INT 21 - VIRUS - "Tasha Yar" - INSTALLATION CHECK AX = 1812h Return: AL = 00h if resident DX = 4310h if resident SeeAlso: INT 21/AX=0B56h"VIRUS",INT 21/AX=187Fh,INT 21/AX=2C2Ch"VIRUS" --------v-21187FBX4453----------------------- INT 21 - VIRUS - "DS-3783" -INSTALLATION CHECK AX = 187Fh BX = 4453h Return: BX = 87A1h if resident SeeAlso: AX=1812h"VIRUS",AX=18FFh"VIRUS" --------v-2118FF----------------------------- INT 21 - VIRUS - "Pathogen:SMEG" - INSTALLATION CHECK AX = 18FFh Return: AX = E701h if resident SeeAlso: INT 21/AX=1812h"VIRUS",INT 21/AX=2080h"VIRUS" --------D-2119------------------------------- INT 21 - DOS 1+ - GET CURRENT DEFAULT DRIVE AH = 19h Return: AL = drive (00h = A:, 01h = B:, etc) Note: Novell NetWare uses the fact that DOS 2.x COMMAND.COM issues this call from a particular location every time it starts a command to determine when to issue an automatic EOJ SeeAlso: AH=0Eh,AH=47h,AH=BBh --------D-211A------------------------------- INT 21 - DOS 1+ - SET DISK TRANSFER AREA ADDRESS AH = 1Ah DS:DX -> Disk Transfer Area (DTA) Notes: the DTA is set to PSP:0080h when a program is started under the FlashTek X-32 DOS extender, the pointer is in DS:EDX SeeAlso: AH=11h,AH=12h,AH=2Fh,AH=4Eh,AH=4Fh --------D-211B------------------------------- INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR DEFAULT DRIVE AH = 1Bh Return: AL = sectors per cluster (allocation unit) CX = bytes per sector DX = total number of clusters DS:BX -> media ID byte (see #01356) Notes: under DOS 1.x, DS:BX points at an actual copy of the FAT; later versions return a pointer to a copy of the FAT's ID byte this function may not be properly supported on CD-ROMs and other installable file systems (use AX=4402h"CD-ROM" for CD-ROMs instead) BUG: DOS 7.10 (Win95B/Win98) reportedly returns incorrect values in AL and DX for FAT12/FAT16 drives, even though it manages correct results for FAT32 drives (DOS windows are not affected, only real-mode DOS) SeeAlso: AH=1Ch,AH=36h (Table 01356) Values for media ID byte: FFh floppy, double-sided, 8 sectors per track (320K) FEh floppy, single-sided, 8 sectors per track (160K) FDh floppy, double-sided, 9 sectors per track (360K) FCh floppy, single-sided, 9 sectors per track (180K) FAh HP 200LX D: ROM disk, 16 sectors per track (995K) HP 200LX E: (Stacker host drive ???) F9h floppy, double-sided, 15 sectors per track (1.2M) floppy, double-sided, 9 sectors per track (720K,3.5") F8h hard disk F0h other media (e.g. floppy, double-sized, 18 sectors per track -- 1.44M,3.5") --------D-211C------------------------------- INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE AH = 1Ch DL = drive (00h = default, 01h = A:, etc) Return: AL = sectors per cluster (allocation unit), or FFh if invalid drive CX = bytes per sector DX = total number of clusters DS:BX -> media ID byte (see #01356) Notes: under DOS 1.x, DS:BX points at an actual copy of the FAT; later versions return a pointer to a copy of the FAT's ID byte on a DBLSPACE drive, the total number of clusters is based on the estimated compression ratio this function may not be properly supported on CD-ROMs and other installable file systems (use AX=4402h"CD-ROM" for CD-ROMs instead) BUG: DOS 7.10 (Win95B/Win98) reportedly returns incorrect values in AL and DX for FAT12/FAT16 drives, even though it manages correct results for FAT32 drives (DOS windows are not affected, only real-mode DOS) SeeAlso: AH=1Bh,AH=36h --------D-211D------------------------------- INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY AH = 1Dh Return: AL = 00h Note: corresponds to the CP/M BDOS function "get bit map of read-only drives", which is meaningless under MS-DOS SeeAlso: AH=18h,AH=1Eh,AH=20h,AX=4459h --------D-211E------------------------------- INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY AH = 1Eh Return: AL = 00h Note: corresponds to the CP/M BDOS function "set file attributes" which was meaningless under MS-DOS 1.x SeeAlso: AH=18h,AH=1Dh,AH=20h --------D-211F------------------------------- INT 21 - DOS 1+ - GET DRIVE PARAMETER BLOCK FOR DEFAULT DRIVE AH = 1Fh Return: AL = status 00h successful DS:BX -> Drive Parameter Block (DPB) (see #01357 for DOS 1.x, AH=32h for DOS 2+) FFh invalid drive Note: this call was undocumented prior to the release of DOS 5.0; however, only the DOS 4.0+ version of the DPB has been documented SeeAlso: AH=32h,AX=7302h Format of DOS 1.1 and MS-DOS 1.25 drive parameter block: Offset Size Description (Table 01357) 00h BYTE sequential device ID 01h BYTE logical drive number (0=A:) 02h WORD bytes per sector 04h BYTE highest sector number within a cluster 05h BYTE shift count to convert clusters into sectors 06h WORD starting sector number of first FAT 08h BYTE number of copies of FAT 09h WORD number of directory entries 0Bh WORD number of first data sector 0Dh WORD highest cluster number (number of data clusters + 1) 0Fh BYTE sectors per FAT 10h WORD starting sector of directory 12h WORD address of allocation table Note: the DOS 1.0 table is the same except that the first and last fields are missing; see INT 21/AH=32h for the DOS 2+ version SeeAlso: #01395,#04039 --------D-2120------------------------------- INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY AH = 20h Return: AL = 00h Note: corresponds to the CP/M BDOS function "get/set default user (sublibrary) number", which is meaningless under MS-DOS SeeAlso: AH=18h,AH=1Dh,AH=1Eh,AX=4459h --------O-2120------------------------------- INT 21 - S/DOS 1.0+ & PTS-DOS 6.51+ - GET OEM REVISION AH = 20h AL = which OEM code to retrieve 00h get PTS OEM code Return: CF cleared AL = OEM code (currently always 00h) 01h get PTS OEM revision code Return: CF cleared AL = revision code (default is 00h, but may vary) Desc: S/DOS is a reduced and modified PTS-DOS 6.51 release with source code on CD Note: This function is provided by S/DOS 1.0 (and is most probably also supported with PTS-DOS 6.51+, maybe even earlier). It clears the CF flag for all other AL arguments, too. However, AL = 00h and 01h are handled separately. The revision code can be individually defined in the MAKEFILE at compilation time. The PTS OEM code does not correlate with the DOS OEM code returned by INT 21/AH=30h, likewise the PTS OEM revision does not correlate with the DOS revision returned by INT 21/AX=3306h. SeeAlso: INT 21/AH=30h,INT 21/AX=3306h --------v-212080----------------------------- INT 21 - VIRUS - "New-Year" - INSTALLATION CHECK AX = 2080h Return: AH = 00h if resident (normal DOS return would be AX = 2000h) SeeAlso: INT 21/AX=18FFh"VIRUS",INT 21/AX=2C2Ch"VIRUS" --------D-2121------------------------------- INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE AH = 21h DS:DX -> opened FCB (see #01345) Return: AL = status 00h successful 01h end of file, no data read 02h segment wrap in DTA, no data read 03h end of file, partial record read Disk Tranfer Area filled with record read from file Notes: the record is read from the current file position as specified by the random record and record size fields of the FCB the file position is not updated after reading the record if a partial record is read, it is zero-padded to the full size not supported by MS Windows 3.0 DOSX.EXE DOS extender SeeAlso: AH=14h,AH=22h,AH=27h,AH=3Fh"DOS" --------D-2122------------------------------- INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE AH = 22h DS:DX -> opened FCB (see #01345) Disk Transfer Area contains record to be written Return: AL = status 00h successful 01h disk full 02h segment wrap in DTA Notes: the record is written to the current file position as specified by the random record and record size fields of the FCB the file position is not updated after writing the record if the record is located beyond the end of the file, the file is extended but the intervening data remains uninitialized if the record only partially fills a disk sector, it is copied to a DOS disk buffer to be written out to disk at a later time not supported by MS Windows 3.0 DOSX.EXE DOS extender SeeAlso: AH=15h,AH=21h,AH=28h,AH=40h --------D-2123------------------------------- INT 21 - DOS 1+ - GET FILE SIZE FOR FCB AH = 23h DS:DX -> unopened FCB (see #01345), wildcards not allowed Return: AL = status 00h successful (matching file found) FCB random record field filled with size in records, rounded up to next full record FFh failed (no matching file found) Notes: not supported by MS Windows 3.0 DOSX.EXE DOS extender MS-DOS returns nonsense if the FCB record number field is set to a very large positive number, and status FFh if negative; DR DOS returns the correct file size in both cases BUG: APPEND for DOS 3.3+ corrupts DX if the file is not found SeeAlso: AH=42h --------D-2124------------------------------- INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB AH = 24h DS:DX -> opened FCB (see #01345) Notes: computes the random record number corresponding to the current record number and record size, then stores the result in the FCB normally used when switching from sequential to random access not supported by MS Windows 3.0 DOSX.EXE DOS extender SeeAlso: AH=21h,AH=27h,AH=42h --------D-2125------------------------------- INT 21 - DOS 1+ - SET INTERRUPT VECTOR AH = 25h AL = interrupt number DS:DX -> new interrupt handler Notes: this function is preferred over direct modification of the interrupt vector table some DOS extenders place an API on this function, as it is not directly meaningful in protected mode under DR DOS 5.0-6.0, this function does not use any of the DOS-internal stacks and may thus be called at any time; however, under Novell DOS 7.0 - DR-DOS 7.02, this function was not reentrant. Since 1998/05/29, DR-DOS 7.03 no longer uses any internal stacks and tests for this function much earlier, to allow a minimal stack usage of just two words in addition to the IRET frame, allowing it to be called from INT 21h functions, specificially device drivers. This fixes the MCS SMB client Novell NetWare (except the new DOS Requester) monitors the offset of any INT 24 set, and if equal to the value at startup, substitutes its own handler to allow handling of network errors; this introduces the potential bug that any program whose INT 24 handler offset happens to be the same as COMMAND.COM's will not have its INT 24 handler installed SeeAlso: AX=2501h,AH=35h --------E-212501----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - RESET DOS EXTENDER DATA STRUCTURES AX = 2501h SS = application's original SS or DS (FlashTek X-32VM) Return: CF clear if successful CF set on error caller is operating on X-32 stack (FlashTek X-32VM) Notes: Phar Lap uses INT 21/AH=25h as the entry point for all 386/DOS-Extender system calls. Only available when directly using 386/DOS-Extender or a compatible DOS extender, or when using a product that was created using 386-DOS/Extender or a compatible this function is also supported by FlashTek X-32VM SeeAlso: AH=30h"Phar Lap" --------E-212502----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - GET PROTECTED-MODE INTERRUPT VECTOR AX = 2502h CL = interrupt number Return: CF clear ES:EBX = CS:EIP of protected-mode interrupt handler Note: this function is also supported by FlashTek X-32VM SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0204h --------E-212503----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE INTERRUPT VECTOR AX = 2503h CL = interrupt number Return: CF clear EBX = CS:IP of real-mode interrupt handler Note: this function is also supported by FlashTek X-32VM SeeAlso: AX=2502h,AX=2504h,AH=35h,INT 31/AX=0200h --------E-212504----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - SET PROTECTED-MODE INTERRUPT VECTOR AX = 2504h CL = interrupt number DS:EDX = CS:EIP of protected-mode interrupt handler Return: CF clear Note: this function is also supported by FlashTek X-32VM SeeAlso: AX=2502h,AX=2505h,INT 31/AX=0205h --------E-212505----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - SET REAL-MODE INTERRUPT VECTOR AX = 2505h CL = interrupt number EBX = CS:IP of real-mode interrupt handler Return: CF clear Note: this function is also supported by FlashTek X-32VM SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0201h --------E-212506----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CNTRL IN PR. MODE AX = 2506h CL = interrupt number DS:EDX = CS:EIP of protected-mode interrupt handler Return: CF clear Notes: this function modifies both the real-mode low-memory interrupt vector table and the protected-mode Interrupt Descriptor Table (IDT) interrupts occurring in real mode are resignaled in protected mode this function is also supported by FlashTek X-32VM --------E-212507----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS AX = 2507h CL = interrupt number DS:EDX = CS:EIP of protected-mode interrupt handler EBX = CS:IP of real-mode interrupt handler Return: CF clear Notes: interrupts are disabled until both vectors have been modified this function is also supported by FlashTek X-32VM SeeAlso: AX=2504h,AX=2505h --------E-212508----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT LINEAR BASE ADDRESS AX = 2508h BX = segment selector Return: CF clear if successful ECX = linear base address of segment CF set if invalid segment selector Note: this function is also supported by FlashTek X-32VM SeeAlso: AX=2509h --------E-212509----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - CONVERT LINEAR TO PHYSICAL ADDRESS AX = 2509h EBX = linear address to convert Return: CF clear if successful ECX = physical address (carry flag clear) CF set if linear address not mapped in page tables SeeAlso: AX=2508h --------E-212509----------------------------- INT 21 P - FlashTek X-32VM - GET SYSTEM SEGMENTS AND SELECTORS AX = 2509h Return: CF clear EAX high word = default DS AX = alias for 16-bit data segment BX = real mode code segment EDX high word = selector covering full 4GB address space DX = default SS ESI high word = PSP selector SI = environment selector --------E-21250A----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - MAP PHYSICAL MEMORY AT END OF SEGMENT AX = 250Ah ES = segment selector in the Local Descriptor Table (LDT) of segment to modify EBX = physical base address of memory to map (multiple of 4K) ECX = number of physical 4K pages to map Return: CF clear if successful EAX = 32-bit offset in segment of mapped memory CF set on error EAX = error code 08h insufficient memory to create page tables 09h invalid segment selector SeeAlso: INT 31/AX=0800h --------E-21250C----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - GET HARDWARE INTERRUPT VECTORS AX = 250Ch Return: CF clear AL = base interrupt vector for IRQ0-IRQ7 AH = base interrupt vector for IRQ8-IRQ15 BL = interrupt vector for BIOS print screen function (Phar Lap only) Note: this function is also supported by FlashTek X-32VM SeeAlso: INT 31/AX=0400h,INT 67/AX=DE0Ah --------E-21250D----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION AX = 250Dh Return: CF clear EAX = CS:IP of real-mode callback procedure (see #01358) that will call through from real mode to a protected-mode routine EBX = 32-bit real-mode address of intermode call data buffer ECX = size in bytes of intermode call data buffer ES:EDX = protected-mode address of intermode call data buffer Notes: this function is also supported by FlashTek X-32VM X-32VM guarantees the intermode buffer to be at least 4 KB SeeAlso: AX=250Eh (Table 01358) Call Phar Lap real-mode callback with: STACK: DWORD offset to protected-mode code WORD placeholder for protected-mode CS DWORD pointer to selector structure (see #01359) or 0000h:0000h for defaults var parameters for protected-mode procedure Return: via FAR return Format of Phar Lap selector structure: Offset Size Description (Table 01359) 00h WORD protected-mode GS selector 02h WORD protected-mode FS selector 04h WORD protected-mode ES selector 06h WORD protected-mode DS selector --------E-21250E----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE AX = 250Eh EBX = CS:IP of real-mode procedure to call ECX = number of two-byte words to copy from protected-mode stack to real-mode stack Return: CF clear if successful all segment registers unchanged all general registers contain values set by real-mode procedure all other flags set as they were left by real-mode procedure stack unchanged CF set on error EAX = error code 01h not enough real-mode stack space Note: this function is also supported by FlashTek X-32VM; under X-32VM, the call will fail if ECX > 0000003Fh SeeAlso: AX=250Dh,AX=2510h,AH=E1h"OS/286",INT 31/AX=0301h --------E-21250F----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS AX = 250Fh ES:EBX = 48-bit protected-mode address to convert ECX = 00000000h or length of data in bytes Return: CF clear if successful (address < 1MB and contiguous) ECX = 32-bit real-mode MS-DOS address CF set on error (address >= 1MB or not contiguous) ECX = linear address Note: this function is also supported by FlashTek X-32VM SeeAlso: AX=2510h --------E-212510----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE, REGISTERS AX = 2510h EBX = CS:IP of real-mode procedure to call ECX = number of two-byte words to copy to protected-mode stack to real-mode stack DS:EDX -> pointer to parameter block (see #01360) Return: CF clear if successful all segment registers unchanged, EDX unchanged all other general registers contain values set by real-mode proc all other flags are set as they were left by real-mode procedure real-mode register values are returned in the parameter block CF set on error EAX = error code 01h not enough real-mode stack space Note: unlike most of the preceding 25xxh functions, this one is not supported by FlashTek X-32VM SeeAlso: AX=250Eh,AX=250Fh Format of Phar Lap real-mode call parameter block: Offset Size Description (Table 01360) 00h WORD real-mode DS value 02h WORD real-mode ES value 04h WORD real-mode FS value 06h WORD real-mode GS value 08h DWORD real-mode EAX value 0Ch DWORD real-mode EBX value 10h DWORD real-mode ECX value 14h DWORD real-mode EDX value --------E-212511----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT AX = 2511h DS:EDX -> parameter block (see #01361) Return: all segment registers unchanged EDX unchanged all other registers contain values set by the real-mode int handler the flags are set as they were left by the real-mode interrupt handler real-mode register values are returned in the parameter block Note: this function is also supported by FlashTek X-32VM SeeAlso: AX=2503h,AX=2505h,AX=250Eh,AH=E3h"OS/286",INT 31/AX=0300h Format of Phar Lap real-mode interrupt parameter block: Offset Size Description (Table 01361) 00h WORD interrupt number 02h WORD real-mode DS value 04h WORD real-mode ES value 06h WORD real-mode FS value 08h WORD real-mode GS value 0Ah DWORD real-mode EAX value 0Eh DWORD real-mode EDX value Note: all other real-mode values set from protected-mode registers --------E-212512----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING AX = 2512h DS:EDX -> pointer to ASCIZ program name ES:EBX -> pointer to parameter block (see #01363) ECX = size in bytes of LDT buffer Return: CF clear if successful EAX = number of segment descriptors in LDT CF set on error EAX = error code (see #01362) SeeAlso: AX=2517h (Table 01362) Values for Phar Lap error code: 02h file not found or path invalid 05h access denied 08h insufficient memory 0Ah environment invalid 0Bh invalid file format 80h LDT too small Format of Phar Lap program load parameter block: Offset Size Description (Table 01363) Input: 00h DWORD 32-bit offset of environment string 04h WORD segment of environment string 06h DWORD 32-bit offset of command-tail string 0Ah WORD segment of command-tail string 0Ch DWORD 32-bit offset of LDT buffer (size in ECX) 10h WORD segment of LDT buffer Output: 12h WORD real-mode paragraph address of PSP (see also AH=26h) 14h WORD real/protected mode flag 0000h real mode 0001h protected mode 16h DWORD initial EIP value 1Ah WORD initial CS value 1Ch DWORD initial ESP value 20h WORD initial SS value 22h WORD initial DS value 24h WORD initial ES value 26h WORD initial FS value 28h WORD initial GS value --------E-212513----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - ALIAS SEGMENT DESCRIPTOR AX = 2513h BX = segment selector of descriptor in GDT or LDT CL = access-rights byte for alias descriptor CH = use-type bit (USE16 or USE32) for alias descriptor Return: CF clear if successful AX = segment selector for created alias CF set on error EAX = error code 08h insufficient memory (can't grow LDT) 09h invalid segment selector in BX --------E-212514----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - CHANGE SEGMENT ATTRIBUTES AX = 2514h BX = segment selector of descriptor in GDT or LDT CL = new access-rights byte CH = new use-type bit (USE16 or USE32) Return: CF clear if successful CF set on error EAX = error code 09h invalid selector in BX SeeAlso: AX=2515h,INT 31/AX=0009h --------E-212515----------------------------- INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT ATTRIBUTES AX = 2515h BX = segment selector of descriptor in GDT or LDT Return: CF clear if successful CL = access-rights byte for segment CH = use-type bit (USE16 or USE32) ECX<16-31> destroyed CF set on error EAX = error code 09h invalid segment selector in BX SeeAlso: AX=2514h --------E-212516----------------------------- INT 21 P - Phar Lap 386/DOS-Extender v2.2+ - FREE ALL MEMORY OWNED BY LDT AX = 2516h Return: CF clear Note: this function must be called from Ring 0 or the CS descriptor is freed --------E-212517----------------------------- INT 21 P - Phar Lap 386/DOS-Extender v2.1c+ - GET INFO ON DOS DATA BUFFER AX = 2517h Return: CF clear ES:EBX -> data buffer (protected mode address) ECX -> data buffer (real mode address) EDX = size of data buffer in bytes Note: the data buffer's address changes after calls to AX=2512h and AX=252Ah SeeAlso: AX=2512h,AX=252Ah,AX=2530h --------E-212518----------------------------- INT 21 P - Phar Lap 386/DOS-Extender 2.1c+ - SPECIFY HANDLER FOR MOVED SEGMENTS AX = 2518h ES:EBX -> function to call when a segment is moved Return: CF clear ES:EBX -> previous handler --------E-212519----------------------------- INT 21 P - Phar Lap 386/DOS-Extender VMM - GET ADDITIONAL MEMORY ERROR INFO AX = 2519h Return: CF clear EAX = error code 0000h no error 0001h out of physical memory 0002h out of swap space (unable to grow swap file) 0003h out of LDT entries and unable to grow LDT 0004h unable to change extended memory allocation mark FFFFFFFFh paging disabled Note: VMM is the Virtual Memory Manager option --------E-21251A----------------------------- INT 21 P - Phar Lap 386/DOS-Extender VMM - LOCK PAGES IN MEMORY AX = 251Ah EDX = number of 4k pages to lock if BL = 00h ECX = linear address of first page to lock if BL = 01h ES:ECX -> pointer to first page to lock Return: CF clear if successful CF set on error EAX = error code 08h insufficient memory 09h invalid address range SeeAlso: AX=251Bh,AX=EB06h,INT 31/AX=0600h --------E-21251B----------------------------- INT 21 P - Phar Lap 386/DOS-Extender VMM - UNLOCK PAGES AX = 251Bh EDX = number of pages to unlock if BL = 00h ECX = linear address of first page to unlock if BL = 01h ES:ECX -> pointer to first page to unlock Return: CF clear if successful CF set on error EAX = error code 09h invalid address range SeeAlso: AX=251Ah,AX=EB07h,INT 31/AX=0601h --------E-21251C----------------------------- INT 21 P - Phar Lap 386/DOS-Extender VMM v2.1c+ - FREE PHYSICAL MEMORY PAGES AX = 251Ch BH = preservation flag (00h preserve contents, 01h discard contents) EDX = number of pages to free BL = address type 00h linear address ECX = linear address of first page to be freed 01h pointer ES:ECX -> first page to be freed Return: CF clear if successful CF set on error EAX = error code 08h memory error, swap space full, no VMM or DPMI 09h invalid address --------E-21251D----------------------------- INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - READ PAGE-TABLE ENTRY AX = 251Dh BL = address type 00h linear address ECX = linear address of page table entry to read 01h pointer ES:ECX -> page table entry to read Return: CF clear if successful EAX = contents of page table entry CF set on error EAX = error code 09h invalid address or NOPAGE option set 78h invalid under DPMI Note: this function is obsolete; use AX=252Bh/BH=09h in