LDT_ENTRY structure
Applies to: desktop apps only
Describes an entry in the descriptor table. This structure is valid only on x86-based systems.
Syntax
typedef struct _LDT_ENTRY {
WORD LimitLow;
WORD BaseLow;
union {
struct {
BYTE BaseMid;
BYTE Flags1;
BYTE Flags2;
BYTE BaseHi;
} Bytes;
struct {
DWORD BaseMid :8;
DWORD Type :5;
DWORD Dpl :2;
DWORD Pres :1;
DWORD LimitHi :4;
DWORD Sys :1;
DWORD Reserved_0 :1;
DWORD Default_Big :1;
DWORD Granularity :1;
DWORD BaseHi :8;
} Bits;
} HighWord;
} LDT_ENTRY, *PLDT_ENTRY;
Members
- LimitLow
-
The low-order part of the address of the last byte in the segment.
- BaseLow
-
The low-order part of the base address of the segment.
- HighWord
-
The high-order portion of the descriptor. This member may be interpreted as bytes or collections of bits, depending on the level of detail required.
- Bytes
-
- BaseMid
-
Middle bits (16–23) of the base address of the segment.
- Flags1
-
Values of the Type, Dpl, and Pres members in the Bits structure.
- Flags2
-
Values of the LimitHi, Sys, Reserved_0, Default_Big, and Granularity members in the Bits structure.
- BaseHi
-
High bits (24–31) of the base address of the segment.
- Bits
-
- BaseMid
-
The middle bits (16–23) of the base address of the segment.
- Type
-
The type of segment. This member can be one of the following values:
- 0: Read-only data segment
- 1: Read-write data segment
- 2: Unused segment
- 3: Read-write expand-down data segment
- 4: Execute-only code segment
- 5: Executable-readable code segment
- 6: Execute-only "conforming" code segment
- 7: Executable-readable "conforming" code segment
- Dpl
-
The privilege level of the descriptor. This member is an integer value in the range 0 (most privileged) through 3 (least privileged).
- Pres
-
The present flag. This member is 1 if the segment is present in physical memory or 0 if it is not.
- LimitHi
-
The high bits (16–19) of the address of the last byte in the segment.
- Sys
-
The space that is available to system programmers. This member might be used for marking segments in some system-specific way.
- Reserved_0
-
Reserved.
- Default_Big
-
The size of segment. If the segment is a data segment, this member contains 1 if the segment is larger than 64 kilobytes (K) or 0 if the segment is smaller than or equal to 64K.
If the segment is a code segment, this member contains 1 if the segment is a code segment and runs with the default (native mode) instruction set. This member contains 0 if the code segment is an 80286 code segment and runs with 16-bit offsets and the 80286-compatible instruction set.
- Granularity
-
The granularity. This member contains 0 if the segment is byte granular, 1 if the segment is page granular.
- BaseHi
-
The high bits (24–31) of the base address of the segment.
Remarks
The GetThreadSelectorEntry function fills this structure with information from an entry in the descriptor table. You can use this information to convert a segment-relative address to a linear virtual address.
The base address of a segment is the address of offset 0 in the segment. To calculate this value, combine the BaseLow, BaseMid, and BaseHi members.
The limit of a segment is the address of the last byte that can be addressed in the segment. To calculate this value, combine the LimitLow and LimitHi members.
Requirements
|
Minimum supported client | Windows XP |
|---|---|
|
Minimum supported server | Windows Server 2003 |
|
Header |
|
See also
Send comments about this topic to Microsoft
Build date: 3/6/2012