Virtual Devices (3.1) (vdag31qh.hlp) (
Table of Contents;
Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software,
purely for historical purposes.
If you're looking for up-to-date documentation, particularly for programming,
you should not rely on the information found here, as it will be woefully
out of date.
Map_Lin_To_VM_Addr
◄Up► ◄Next► ◄Previous►
────────────────────────────────────────────────────────────────────────────
include vmm.inc
mov eax, LineAddr ; Linear address to convert
mov ecx, Limit ; segment limit in bytes
VMMcall Map_Lin_To_VM_Addr
jc error ; carry set if error
mov [SegSel], cx ; segment or selector
mov [Offset], edx ; address offset
The Map_Lin_To_VM_Addr service converts a 32-bit ring-0 linear address into
an V86 or protected-mode address. This service converts the address for use
with the current execution mode of the current virtual machine.
Parameter Description
────────────────────────────────────────────────────────────────────────────
LinAddr Specifies the linear address to convert.
Limit Specifies the zero-based segment limit (0 specifies a one-byte
segment, 1 is a two-byte segment, and so on). This parameter is
used only if the service creates an LDT selector.
Return Value
If the carry flag is clear, the CX register contains the segment address or
selector, and EDX regsiter contains the address offset. This offset is
always zero if the virtual machine is running a protected mode application.
The carry flag is set to indicate an error such as no LDT selectors
available.
Comments
If the virtual machine is running in V86 mode, the LineAddr parameter must
specify a linear address that is within the 1 megabyte V86 address space of
the current virtual machine. The service returns a segment:offset pair.
If the virtual machine is running a protected-mode application, the service
returns a selector:offset pair. This service creates a new selector in the
current virtual machine's LDT if the specified base and limit values do not
match a selector the service previously allocated.
A virtual device must never free a selector that is returned by this
service. For this reason, this service should be used sparingly.
Uses
ECX, EDX, Flags
See Also
Map_Flat
♦