VDMAD_Set_Virt_State
include vdmad.inc
mov eax, DMA_Handle
mov ebx, VMHandle
mov esi, OFFSET32 Address
mov ecx, Size
mov dl, Mode
mov dh, ExtMode
VxDcall VDMAD_Set_Virt_State
Modifies the virtual state of a DMA channel. Uses flags
- DMA_Handle
- Handle of the DMA.
- VMHandle
- Handle of the VM.
- Address
- A high linear address or a physical byte address. If translation is enabled, this parameter is the high linear address of the user's DMA region. A high linear address is used so that the DMA can proceed even if a different virtual machine is actually running at the time of the transfer. If translation is not enabled, this parameter specifies a physical byte address programmed (shifted left 1, for word ports).
- Size
- Specifies the count in bytes.
- Mode
- Specifies the mode. This is the same as the 8237 mode byte with the channel number removed, and the following DMA_masked and DMA_requested values set as appropriate:
DMA_masked |
Channel masked and not ready for a transfer. |
DMA_requested |
Software request flag set. |
- ExtMode
- Specifies the extended mode (ignored on non-PS/2 machines that do not have extended DMA capabilities).
This service is used when a channel owner wants to change the virtual state of a channel from how the virtual machine programmed it. This might be used to split a DMA request into smaller pieces.