阅读:1412回复:2
请各位师兄帮小弟一把,小弟先谢过了,9054问题
应用程序代码:
LONG pBuf[4096]; fread( pBuf, sizeof( long ) , 4096 , File1 ); WriteFile(m_hDevice1,pBuf,1025,&nWrite,NULL); 驱动程序代码 SerialWrite例程如下 KMemory Mem(I.Mdl()); PULONG pBuffer = (PULONG) Mem.MapToSystemSpace(); ULONG dwTotalSize = I.WriteSize(CURRENT); ULONG dwBytesSent = 0; m_MemoryRange1.outd(0,pBuffer,dwTotalSize); 为什么用WriteFile写入9054大于1024bytes 就会系统蓝屏,错误应该是在DISPACTCH_LEVEL IRQL上访问了分页内存,错误代码0X0000000A; IRQL_NOT_LESS_OR_EQUAL,一直找不到为什么会出这个问题,还请大虾帮帮忙解决下这个问题 ,困扰我很久了 。(数据传输的特征标志位是 DO_DIRECT_IO) |
|
驱动牛犊
|
沙发#
发布于:2007-06-29 13:12
注意你的代码:
ULONG dwTotalSize = I.WriteSize(CURRENT); //dwTotalSize 返回的要写的字节数 ULONG dwBytesSent = 0; //下面的第三个参数应该是多少个 双字 m_MemoryRange1.outd(0,pBuffer,dwTotalSize); 改为: m_MemoryRange1.outd(0,pBuffer,dwTotalSize/4); 这些细节性的东西帮助上都说得很明白了,写程序时多注意点。 |
板凳#
发布于:2007-06-29 15:21
哎呀 多谢提醒啊
|
|