-
-
[求助] MDL内存映射求助
-
发表于:
2012-7-20 13:22
6679
-
PMDL NTAPI IoCreateWriteMdlForAddress(PVOID InAddress,PVOID *OutAddress,size_t Size)
{
PMDL pMdl=NULL;
if(Size>0)
{
if((InAddress==NULL)|(Size==0))
return NULL;
// if(!MmIsAddressValid(InAddress))
// return NULL;
if(OutAddress==NULL)
return NULL;
if(!MmIsAddressValid(OutAddress))
return NULL;
}
else
{
return NULL;
}
pMdl=MmCreateMdl(NULL,InAddress,Size);
if(pMdl==NULL)
{
return NULL;
}
MmBuildMdlForNonPagedPool(pMdl);
// My_Mdl->MdlFlags = My_Mdl->MdlFlags | MDL_MAPPED_TO_SYSTEM_VA;
if(!FlagOn(pMdl->MdlFlags,MDL_MAPPED_TO_SYSTEM_VA))
SetFlag(pMdl->MdlFlags,MDL_MAPPED_TO_SYSTEM_VA);
*OutAddress=MmMapLockedPages(pMdl, KernelMode);
return pMdl;
}
上面代码 在XP下没什么问题 但是在WIN732位 将一段RING3不可写的内存映射后 对映射出的OutAddress内存进行修改 仍然不可写 仍然蓝屏 求大牛指点下
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课