|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
各位小伙伴,大家好,本人在开发win7 64bit内核驱动时,遇到如下问题:
函数IoGetDmaAdapter执行后,出现蓝屏重启现象。
该驱动需要开辟一段DMA物理内存空间,在老款主板上运行ok,但在新主板上执行发生蓝屏现象。
请教各位大侠,这可能是什么原因导致的呢?
相关代码如下:
RtlZeroMemory(&deviceDescription, sizeof(DEVICE_DESCRIPTION));
deviceDescription.Version = DEVICE_DESCRIPTION_VERSION;
deviceDescription.Master = TRUE;
deviceDescription.ScatterGather = FALSE;
deviceDescription.InterfaceType = PCIBus;
//deviceDescription.Dma32BitAddresses = TRUE;
deviceDescription.Dma64BitAddresses = TRUE;
deviceDescription.MaximumLength = 0x00020000;
pdx->MaxMapRegisters = BYTES_TO_PAGES(0x00000200); // 减少内存开辟,依然蓝屏
KdPrint(("MaxMapRegisters=0x%x\n", pdx->MaxMapRegisters));
// 下面的函数,对某些型号的主板会有蓝屏现象
pdx->DmaAdapter = IoGetDmaAdapter(
//NULL,
pdx->NextStackDevice, // 20151124
&deviceDescription,
&pdx->MaxMapRegisters
);
该问题已经困扰兄弟很久了,望各位相助,不胜感激! |
|