|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
LDT_ENTRY
The LDT_ENTRY structure describes an entry in the descriptor table. This structure is valid only on x86-based systems.
typedef struct _LDT_ENTRY { // ldte 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
Contains the low 16 bits of the address of the last byte in the segment.
BaseLow
Contains the low 16 bits of the base address of the segment.
HighWord
Contains the high two words of the descriptor. This member may be interpreted as bytes or collections of bits, depending on the level of detail required. The members of the Bits structure are as follows:
Member Contents BaseMid Middle bits (16-23) of the base address of the segment. Type Bitmask that indicates the type of segment. This member can be one of the following values:
Value Meaning 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 Privilege level of the descriptor. This member is an integer value in the range 0 (most privileged) through 3 (least privileged). Pres Present flag. This member is 1 if the segment is present in physical memory or 0 if it is not. LimitHi High bits (16-19) of the address of the last byte in the segment. Sys 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 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 Granularity. This member contains 0 if the segment is byte granular, 1 if the segment is page granular. BaseHi High bits (24-31) of the base address of the segment.
The members of the Bytes structure are as follows:
Member Contents 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.
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.
See Also
GetThreadSelectorEntry
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
LDT_ENTRY
Структура LDT_ENTRY описывает вход на столе дескриптора. Эта структура - в силе только в x86- базирующихся системах.
typedef struct _LDT_ENTRY { // ldte WORD LimitLow; СЛОВО BaseLow; союз { struct { BYTE BaseMid; БАЙТ Flags1; БАЙТ Flags2; БАЙТ BaseHi; } Байты; struct { DWORD BaseMid : 8; ТИП DWORD : 5; DWORD Dpl : 2; DWORD Pres : 1; DWORD LimitHi : 4; DWORD Sys : 1; DWORD Reserved_0 : 1;
DWORD Default_Big : 1; СТЕПЕНЬ детализации DWORD : 1; DWORD BaseHi : 8; } Биты; } HighWord; } LDT_ENTRY, *PLDT_ENTRY;
Участники
LimitLow
Содержит низкие 16 битов адреса последнего байта в сегменте.
BaseLow
Содержит низкие 16 битов базового адреса сегмента.
HighWord
Содержит высокие два слова дескриптора. Этот член может быть интерпретирован как байты или сборы битов, в зависимости от уровня детали требовавшейся. Участники структуры Битов - следующим образом:
Содержание Члена СЕРЕДИНА BaseMid кусает (16-23) базового адреса сегмента. Наберите Bitmask, что указывает тип сегмента. Этот член может быть одним из следующего величин:
Оцените Значению 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 если сегмент меньший чем или равный 64K. Если сегмент является кодовым сегментом, этот элемент содержит 1 если сегмент - кодовый сегмент и прогоны с по умолчанию инструкцией (исконный режим) был установлен. Этот элемент содержит 0 если кодовый сегмент - 80286 кодовых сегментов и прогоны с 16- битовыми смещениями и 80286- совместимая инструкция установлена. Степень детализации Степени детализации. Этот элемент содержит 0 если сегмент - байтовый зернистый, 1 если сегмент страничный зернистый. ВЫСОКИЕ биты BaseHi (24-31) базового адреса сегмента.
Участники структуры Байтов - следующим образом:
Содержание Элемента СЕРЕДИНА BaseMid кусает (16-23) базового адреса сегмента. Величины Flags1 Типа, Dpl, и участников Pres в структуре Битов. Величины Flags2 LimitHi, Sys, Reserved_0, Default_Big, и Степени детализации участников в структуре Битов. ВЫСОКИЕ биты BaseHi (24-31) базового адреса сегмента.
Замечания
Функция GetThreadSelectorEntry заполняет эту структуру информацией с входа в таблице дескриптора. Вы можете использовать эту информацию, чтобы преобразовывать сегментный-относительный адрес в линейный виртуальный адрес. Базовый адрес сегмента является адресом смещения 0 в сегменте. Для того, чтобы вычислять эту величину, объедините BaseLow, BaseMid, и участников BaseHi. Предел сегмента является адресом последнего байта, который может быть адресован в сегмент. Для того, чтобы вычислять эту величину, объедините LimitLow и участников LimitHi.
Смотри Также
GetThreadSelectorEntry
|
|
|
|
| |