Структура LDT_ENTRY характеризует запись в таблице дескрипторов. Эта структура допустима только в системах, базирующихся на 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
Старшая часть дескриптора. Этот член структуры может интерпретироваться как байты или как совокупности битов, в зависимости от уровня требуемой детализации.
Члены структуры Bits следуют ниже.
Член структуры | Предназначение |
---|---|
BaseMid | Средние биты (16-23) из базового адреса сегмента. |
Type | Битовая маска, которая обозначает тип сегмента. Этот член структуры может быть одним из следующих значений: |
0 |
Только читаемый сегмент данных. |
1 |
Сегмент данных записи - чтения. |
2 |
Неиспользуемый сегмент |
3 |
Расширяемый вниз сегмент данных записи - чтения. |
4 |
Только исполняемый сегмент кода |
5 |
Читаемый - исполняемый сегмент кода |
6 |
"Адаптированный" только для исполнения сегмент кода |
7 |
"Адаптированный" для чтения - исполнения сегмент кода |
Dpl | Уровень привилегии дескриптора. Этот член структуры - целочисленное значение в интервале от 0 (привилегированный) до 3 (наименее привилегированный). |
Pres | Флажок присутствия. Этот член структуры - 1, если сегмент присутствует в физической памяти или 0 если это не так. |
LimitHi | Старшие биты (16-19) из адреса последнего байта в сегменте. |
Sys | Пространство, которое является доступным для системных программистов. Этот член структуры может использоваться для того, чтобы отмечать сегменты некоторым специальным для системы способом. |
Reserved_0 | Зарезервирован. |
Default_Big | Размер
сегмента. Если сегмент - сегмент
данных, этот член структуры содержит
1, если сегмент является большим, чем
64 килобайта (K) или 0, если сегмент
является меньшим, чем или равным 64 КБ. Если сегмент - сегмент кода, этот член структуры содержит 1, если сегмент - сегмент кода и выполняется с заданным по умолчанию (родной режим) набором инструкций. Этот член структуры содержит 0, если сегмент кода является сегментом кода 80286 и выполняется с 16-разрядными смещениями и 80286-совместимым набором инструкций. |
Granularity | Гранулярность (Степень дробления). Этот член структуры содержит 0, если сегмент - гранулированный байт, и 1, если сегмент - гранулированная страница. |
BaseHi | Старшие биты (24-31) из базового адреса сегмента. |
Члены структуры Bytes следуют ниже.
Член структуры | Предназначение |
---|---|
BaseMid | Средние биты (16-23) из базового адреса сегмента. |
Flags1 | Значения членов Type, Dpl и Pres в структуре Bits. |
Flags2 | Значения членов LimitHi, Sys, Reserved_0, Default_Big и Granularity в структуре Bits. |
BaseHi | Старшие биты (24-31) из базового адреса сегмента. |
Замечания
Функция GetThreadSelectorEntry заполняет эту структуру информацией из записей в таблице дескрипторов. Вы можете использовать эту информацию, чтобы преобразовать адрес относительно начала сегмента в линейный виртуальный адрес.
Базовый адрес сегмента - это адрес с 0 смещением в сегменте. Чтобы вычислить это значение, объедините члены BaseLow, BaseMid и BaseHi.
Предельный размер сегмента - это адрес последнего байта, который может адресоваться в сегменте. Чтобы вычислять это значение, объедините члены LimitLow и LimitHi.
Смотри также
Обзор Основы отладки, Структуры, используемые при отладке, GetThreadSelectorEntry
Размещение и совместимость LDT_ENTRY |
||
К |
Windows XP |
Да |
л |
Windows 2000 Professional |
Да |
и |
Windows NT Workstation |
Да |
е |
Windows Me |
Да |
н |
Windows 98 |
Да |
т |
Windows 95 |
Да |
С |
Windows Server 2003 |
Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да |
в | ||
е | ||
р | ||
Используемая библиотека |
- |
|
Используемая DLL | - | |
Заголовочный файл | ||
- объявлено в |
Winnt.h |
|
- включено в |
Windows.h |
|
Unicode |
Нет |
|
Замечания по платформе |
Не имеется |