_BuildDescriptorDWORDs

include vmm.inc

VMMcall _BuildDescriptorDWORDs, <DESCBase, DESCLimit, DESCType, DESCSize, flags>

mov [DescDWORD1], edx ; high doubleword of descriptor

mov [DescDWORD2], eax ; low doubleword of descriptor


The _BuildDescriptorDWORDs service builds the descriptor parameter used in calls to the _Allocate_GDT_Selector and Allocate_LDT_Selector services.

Parameters

DESCBase

Specifies the 32-bit base address for the descriptor.

DESCLimit

Specifies the 20-bit limit for the descriptor.

DESCType

Specifies the present bit, DPL, and type fields for the descriptor (bits 8–15 of the high doubleword). Only the low 8 bits of the parameter are valid; all other bits must be zero.

DESCSize

Specifies the granularity and big/default fields for the descriptor (bits 20–23 of the high doubleword). Only bits the high four bits (4–7) of the DESCSize parameter are valid; all other bits must be zero.

flags

Specifies the operation flags. This parameter can be the following value:

Value Meaning

BDDExplicitDPL Uses the DPL bits in the DESCType parameters. If this value is not given, the service sets the DPL bits to be equal to the RPL bits for protected-mode applications.

All other values are reserved.

Return Value

The EAX register contains the low doubleword of the descriptor, and the EDX register contains the high doubleword of the descriptor.

Comments

Virtual devices must not rely on the privilege level at which protected-mode applications run. When creating selectors for protected-mode applications, a virtual device should specify the BDDExplicitDPL value. This provides a convenient way to build descriptors without knowing the protection level for protected-mode applications.

Uses

EAX, EDX

See Also

_Allocate_GDT_Selector, _Allocate_LDT_Selector