Int 20/Vx=0001h

lup.gif ldown.gif Interrups Categories Contents

rbline.gif

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

See Also: 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

See Also: #01266 - #01267 - INT 2F/AX=1684h/BX=0001h

Category: Windows - Int 20h - M

rbline.gif

lup.gif ldown.gif Interrups Categories Contents