VDD_Get_Mem

include vdd.inc

VxDcall VDD_Get_Mem


The VDD_Get_Mem service returns the flat address and allocation bitmap for the specified virtual machine's video memory. This service returns the main video-save memory and boosts the scheduling priority of the system virtual machine.

Parameters

EDX

Specifies the system virtual machine handle.

EBX

Specifies the handle of the virtual machine to retrieve the memory for.

EDI

Specifies the VDD control block pointer.

EBP

Points to the Client_Reg_Struc structure for the virtual machine.

Client_EBX

Specifies the virtual machine handle.

Client_ES

Specifies the selector identifying the segment containing the buffer to receive the VDA_Mem_State.

Client_EDI

Specifies the address of the buffer to receive the VDA_Mem_State.

Client_CX

Specifies the size of the buffer to hold the VDA_Mem_State. This is for debugging purposes only.

Return Value

The Client_CX register contains the number of bytes copied to the buffer. Otherwise, it contains zero to indicate an error, such as the buffer is too small or an invalid selector.

Comments

To prevent memory from changing between calls to the VDD_Get_Mem and VDD_Free_Mem services, this service boosts the system virtual machine's priority using the Low_Priority_Device_Boost value. This inhibits normal scheduling, but does not hamper scheduling of virtual machines to handle events such as interrupts.

The allocation of memory to the bitmap is dynamic. The grabber must call this service each time it accesses the memory.

A call to the VDD_Get_Mem service must be followed by a call to the VDD_Free_Mem service as soon as possible. No other virtual machine will be scheduled until the call to VDD_Free_Mem is made.

Uses

Flags