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.