_Allocate_Temp_V86_Data_Area

include vmm.inc

VMMCall _Allocate_Temp_V86_Data_Area, <nBytes, flags>

or      eax, eax        ; zero if error
jz      error
mov     [Address], eax  ; address of temporary block
 

Allocates a block of memory from the global V86 data area. The block is for exclusive use by the virtual device during system initialization only. A virtual device typically allocates a temporary block to serve as a buffer for calls to MS-DOS or BIOS functions. A virtual device makes such calls using the Simulate_Int service while inside a nested execution block. This service is only available during initialization. Uses EAX, ECX, EDX, and Flags.

nBytes
Number of bytes to allocate.
flags
Operation flags. Must be zero.

This service always aligns the temporary block on a paragraph boundary and fills the block with zeros.

Virtual devices must free the temporary block as soon as possible. The system provides only one temporary data area, therefore only one temporary block can be allocated at a time. Attempts to allocate a temporary block when it is already allocated will result in an error.

See Also

_Free_Temp_V86_Data_Area