LDT_ENTRY

【勇芳软件工作室】汉化HomePreviousNext

LDT_ENTRY结构描述了描述符表中的一个条目。此结构仅在基于x86的系统上有效。

typedef struct _LDT_ENTRY { // Ldate

WORD LimitLow;

WORD BaseLow;

工会{

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

包含片段中最后一个字节地址的低16位。

BaseLow

包含片段基地址的低16位。

HighWord

包含描述符的高两个字。这个成员可以被解释为字节或位集合,具体取决于所需的详细程度。

结构的成员如下:

会员内容
BaseMid段的基地址的中间位(16-23)。
类型指示段的类型的位掩码。该成员可以是以下值之一:

含义
0只读数据段
1读写数据段
2未使用的段
3读写扩展数据段
4仅执行代码段
5可执行代码段
6仅执行“符合”代码段
7可执行可读“符合”代码段

ASL特权级别的描述符。该成员是0(最特权)到3(最低特权)范围内的整数值。
普雷斯现在国旗如果段存在于物理内存中,则该成员为1,否则为0。
LimitHi段中最后一个字节的地址的高位(16-19)。
SYS可用于系统程序员的空间。该成员可能用于以某种系统特定的方式标记段。
Reserved_0保留。
Default_Big段的大小如果段是一个数据段,如果段大于64千字节(K),该成员将包含1,如果段小于或等于64K,则该成员将包含0。
 如果段是代码段,则该成员包含1,如果段是代码段,并使用默认(本机模式)指令集运行。如果代码段是80286代码段,并且以16位偏移和80286兼容指令集运行,则该成员将包含0。
粒度粒度。如果段是字节粒度,则该成员包含0,如果段是页面粒度,则该成员包含0。
BaseHi段的基址的高位(24-31)。

字节结构的成员如下:

会员内容
BaseMid段的基地址的中间位(16-23)。
FLAGS1类型ASL普雷斯成员在结构中的值。
Flags2#989796155}结构中LimitHiSYSReserved_0Default_Big粒度成员的值。
BaseHi段的基址的高位(24-31)。

备注

GetThreadSelectorEntry函数使用描述符表中的条目填充此结构。您可以使用此信息将片段相对地址转换为线性虚拟地址。

段的基址是段中的偏移量0的地址。要计算此值,请合并BaseLowBaseMidBaseHi成员。

段的极限是可以在段中寻址的最后一个字节的地址。要计算此值,请组合LimitLowLimitHi成员。

也可以看看

GetThreadSelectorEntry