)
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