include vmm.inc push dword ptr Interrupt ; number of interrupt to execute VMMcall Exec_VxD_Int |
The Exec_VxD_Int service executes the specified software interrupt. Virtual devices use this service to call MS-DOS or BIOS functions outside the context of a nested execution block.
Interrupt
Specifies the number of the interrupt to execute.
One or more registers may contain return values, depending on the function of the specified interrupt.
Before calling this service, a virtual device must set registers to values that are appropriate for the specified software interrupt. This service supports all MS-DOS and BIOS functions that are supported in protected-mode programs.
This service does not change the client registers and flags, so there is no need for the virtual device to save and restore the client register structure. This service also pops the interrupt number from the stack.
The following examples calls the MS-DOS function Get Version (Interrupt 21h, Function 30h):
mov ax, 3000h
push dword ptr 21h
VMMcall Exec_VxD_Int
mov [Major], al ; major MS-DOS version
mov [Minor], al ; minor MS-DOS version