![]() |
#2
vfdff2010-08-14 22:55
回复 楼主 vfdff
|

VOID DisableWriteProtect(PULONG pOldAttr)
{
ULONG uAttr;
_asm
{
push eax
mov eax, cr0
mov uAttr, eax
and eax, 0FFFEFFFFh // CR0 16 BIT = 0
mov cr0, eax
pop eax
};
*pOldAttr = uAttr; //保存原有的 CRO 属性
}
VOID EnableWriteProtect(ULONG uOldAttr )
{
_asm
{
push eax
mov eax, uOldAttr //恢复原有 CR0 属性
mov cr0, eax
pop eax
};
}
网上看到的DisableWriteProtect和EnableWriteProtect这两个函数的实现有问题吗?为什么我使用VC6.0编译错误呢?{
ULONG uAttr;
_asm
{
push eax
mov eax, cr0
mov uAttr, eax
and eax, 0FFFEFFFFh // CR0 16 BIT = 0
mov cr0, eax
pop eax
};
*pOldAttr = uAttr; //保存原有的 CRO 属性
}
VOID EnableWriteProtect(ULONG uOldAttr )
{
_asm
{
push eax
mov eax, uOldAttr //恢复原有 CR0 属性
mov cr0, eax
pop eax
};
}
这个是在 http://hi.baidu.com/chinbey/blog/item/725de0ae35f042cb7cd92ac5.html上看到的