Call With
EAX: Contains the value to send out the port (writes only).
EBX: Contains the VM handle that is doing the I/O.
ECX: Contains the I/O type (see VMM.INC for details).
EDX: Contains the port to do the I/O to.
Client registers contain the I/O parameters if ECX indicates that the VM wants to do string I/O.
Return Values
Nothing.
Remarks
This service may be used, not only by mini-VDDs, but by any Ring 0 VxD which wishes to perform physical I/O on behalf of a VM client. This service provides all types of I/O to the caller. For string I/O, the parameters of the I/O (for example, Selector:Offset, number of bytes, words, or doublewords to move etc.) are provided in the client registers.
If a mini-VDD or VxD decides that it wants to just allow the I/O that it has trapped to be sent to the actual hardware, it calls this service. This routine then performs the I/O, updates the client registers as appropriate and then returns so that it appears to the VM that the I/O operation has been successfully completed. The VxD caller does not have to make any decisions on doing I/O on its own. The Main VDD understands and accomplishes the physical I/O on behalf of the VM.