c9080 发表于 2016-8-8 12:30:14

关于教程里[2-3]内核里使用内存 代码中的一点疑问

KIRQL WPOFFx64()
{
KIRQL irql=KeRaiseIrqlToDpcLevel();
UINT64 cr0=__readcr0();
cr0 &= 0xfffffffffffeffff;
__writecr0(cr0);
_disable();
return irql;
}
void WPONx64(KIRQL irql)
{
UINT64 cr0=__readcr0();
cr0 |= 0x10000;
_enable();
__writecr0(cr0);
KeLowerIrql(irql);
}

我想请问大牛 其中_disable(); _enable(); 这两个函数的作用是什么,我用F12跟不进去,求指点!

Tesla.Angela 发表于 2016-8-8 12:48:23

等效于指令cli、sti。
这种问题稍微GOOGLE一下就能知道答案。

c9080 发表于 2016-8-8 15:49:24

Tesla.Angela 发表于 2016-8-8 12:48
等效于指令cli、sti。
这种问题稍微GOOGLE一下就能知道答案。

根据你的解释 我又仔细看了一下你写的代码觉得 _disable();函数调用的时机是不是不对
我觉得应该在__writecr0(cr0);函数调用之前,不知道对不对,个人愚见。

Tesla.Angela 发表于 2016-8-8 21:38:59

c9080 发表于 2016-8-8 15:49
根据你的解释 我又仔细看了一下你写的代码觉得 _disable();函数调用的时机是不是不对
我觉得应该在__w ...

1、没有啥绝对的顺序。
2、我的代码也不保证100%无错。只保证没有故意加入的错误。
页: [1]
查看完整版本: 关于教程里[2-3]内核里使用内存 代码中的一点疑问