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.
Service
Name of the service to call. This parameter can be any service that is explicitly defined in the service table for a virtual device.
Parameters
Parameters to pass to the service. If more than one parameter is given, they must be separated with commas enclosed in angle brackets (<>). This parameter is optional.
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.
See also VMMCall, VxDJmp