структура LDT_ENTRY (winnt.h)
Описывает запись в таблице дескриптора. Эта структура допустима только в системах на базе x86.
Синтаксис
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;
Члены
LimitLow
Часть адреса последнего байта в сегменте в нижнем порядке.
BaseLow
Часть базового адреса сегмента в нижнем порядке.
HighWord
Часть дескриптора высокого порядка. Этот элемент может интерпретироваться как байты или коллекции битов в зависимости от требуемого уровня детализации.
HighWord.Bytes
HighWord.Bytes.BaseMid
Средние биты (16–23) базового адреса сегмента.
HighWord.Bytes.Flags1
Значения элементов Type, Dpl и Pres в структуре Bits .
HighWord.Bytes.Flags2
Значения элементов LimitHi, Sys, Reserved_0, Default_Big и Granularity в структуре Bits .
HighWord.Bytes.BaseHi
Высокие биты (24–31) базового адреса сегмента.
HighWord.Bits
HighWord.Bits.BaseMid
Средние биты (16–23) базового адреса сегмента.
HighWord.Bits.Type
Тип сегмента. Этот элемент может иметь одно из следующих значений:
HighWord.Bits.Dpl
Уровень привилегий дескриптора. Этот член является целочисленным значением в диапазоне от 0 (наиболее привилегированный) до 3 (с наименьшими привилегиями).
HighWord.Bits.Pres
Настоящий флаг. Этот элемент имеет значение 1, если сегмент присутствует в физической памяти, или 0, если это не так.
HighWord.Bits.LimitHi
Высокие биты (16–19) адреса последнего байта в сегменте.
HighWord.Bits.Sys
Пространство, доступное системным программистам. Этот элемент может использоваться для маркировки сегментов определенным системным способом.
HighWord.Bits.Reserved_0
Зарезервировано.
HighWord.Bits.Default_Big
Размер сегмента. Если сегмент является сегментом данных, этот член содержит 1, если сегмент больше 64 килобайт (K), или 0, если сегмент меньше или равен 64 КБ.
Если сегмент является сегментом кода, этот член содержит 1, если сегмент является сегментом кода, и выполняется с набором инструкций по умолчанию (в собственном режиме). Этот элемент содержит значение 0, если сегмент кода является сегментом кода 80286 и выполняется с 16-разрядными смещениями и набором инструкций, совместимым с 80286.
HighWord.Bits.Granularity
Степень детализации. Этот элемент содержит 0, если сегмент детализирован по байтам, 1, если сегмент является детализированным на странице.
HighWord.Bits.BaseHi
Высокие биты (24–31) базового адреса сегмента.
Комментарии
Функция GetThreadSelectorEntry заполняет эту структуру сведениями из записи в таблице дескриптора. Эти сведения можно использовать для преобразования относительного сегмента адреса в линейный виртуальный адрес.
Базовый адрес сегмента — это адрес смещения 0 в сегменте. Чтобы вычислить это значение, объедините элементы BaseLow, BaseMid и BaseHi .
Предел сегмента — это адрес последнего байта, который может быть рассмотрен в сегменте. Чтобы вычислить это значение, объедините элементы LimitLow и LimitHi .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Верхняя часть | winnt.h (включая Windows.h) |