include vmm.inc
VxDCall Service
Pushes the specified parameters on the stack, and then calls the specified virtual device service. When the service returns, the macro pops the parameters from the stack.
If parameters are passed, it is assumed that the called service conforms to the C-language parameter-passing and register-usage convention: Parameters are passed from right to left, and the service returns a value in the EAX register (possibly also the EDX register), modifying the ECX and flags register along the way. The C-language calling convention dictates that the caller is responsible for cleaning the stack parameters, but the called procedure is allowed to modify them. Do not assume that the called procedure will leave stack parameters unchanged.
The macro creates a dynamic link in the form of an int 20h instruction followed by a value identifying the service. When the interrupt is executed, the VMM replaces the dynamic link with a call instruction.
VMMCall, VxDJmp