Поделиться через


структура 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)

См. также раздел

Структуры отладки

GetThreadSelectorEntry