|
发表于 2023-10-18 20:11:52
|
显示全部楼层
不清楚你怎么定义你的GDTR和IDTR结构体的,总之它是紧密排列的,换言之就是你要确保Limit和Base中间没有因为对齐之类的原因造成的空隙。LGDT和LIDT只会读4或6或10个字节(64位就是10个字节)。另外__vmx_vmread这个东西是会覆盖整个SIZE_T长度,并不会因为你读的是小字段就不覆盖后面的东西。
重启了是因为三重故障:第一次异常发到IDT里没法用,GDT也没法选择段,就会转化成双重故障异常,再次发进IDT里,还是接不住,就转成三重故障,直接重启。 |
评分
-
查看全部评分
|