VDD_Do_Physical_IO

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 that 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.