根据Microsoft文档可以知道,页表项被不恰当的方式使用。
笔者在开发开发过程中遇到一个custom报告的一个bug check0xDA的问题,可是在Local无法重现。问题出现在UnMap memory的时候。
问题发生时,如果我们map了一段memory,但是后来并没有访问该地址,在我们unmap该地址时会发生bugcheck 0xDA.
后来给这个问题这个没有找到原因的BSOD patch了一下:
*****************************************************************************************
BYTE g_TempPatchData;
LONG MyDriverMapMemory(PMYDRIVER_ADAPTER_CONTEXT hAdapter,
IN PHYSICAL_ADDRESS PhysicalAddress,
IN OUT PULONG Length,
IN PULONG InIoSpace,
IN OUT PVOID *VirtualAddress)
{
PVOID HwDeviceExtension = hAdapter->MiniportDeviceContext;
NTSTATUS status;
status = VideoPortMapMemory(HwDeviceExtension,
PhysicalAddress,
Length,
InIoSpace,
VirtualAddress);
if (NO_ERROR == status)
{
BYTE* pData = (BYTE*)(*VirtualAddress);
g_TempPatchData= *pData;
}
return(status);
}
*******************************************************************************************