阅读:2019回复:2
pci驱动诡异问题请教!急,若能解决可付报酬
我们开发了一块pci9052芯片的PCI接口板,出现怪异问题,请帮忙分析下!
基于PDC1000开发的接口板(使用PCI9052)。 数据采集有两部分,第一部分较少数据读写;第二部分大量数据频繁读写(80ms定时器,每80ms有2048次*3*12位/次,读写时钟由2M晶振产生,瞬间读写速度大概2-3M/s),但这80ms只有20-30ms有读写。 电脑开机马上(开机2,3分钟左右)连接测量仪器,第一部分数据读写没问题,采用第二部分读写会出现电脑自动重启。但若电脑开机=10分钟左右再连接机器采集数据会一点问题都没有。 windbg分析dmp文件是CRITICAL_OBJECT_TERMINATION (f4) A process or thread crucial to system operation has unexpectedly exited or been terminated. Several processes and threads are necessary for the operation of the system; when they are terminated (for any reason), the system can no longer function. Arguments: Arg1: 00000003, Process Arg2: 892816c0, Terminating object Arg3: 89281834, Process image file name Arg4: 805d220a, Explanatory message (ascii) 大概说是This system bugchecked when the critical process csrss.exe failed an I/O operation due to insufficient non-paged pool. 但我查了下,申请的内存差不多都释放了啊。困惑! 这是不是驱动的问题,还是接口板硬件问题? 不知道什么原因,谢谢! 急,若能解决可付报酬! qq:2158212446 |
|
沙发#
发布于:2010-06-09 15:22
换个角度: 是不是申请的内存太多?释放的不及时?
|
|
板凳#
发布于:2010-06-09 15:55
DriverName = (char*)ExAllocatePool(NonPagedPool,DriverNameLen);
pEvent = (PDEBUGPRINT_EVENT)ExAllocatePool(NonPagedPool,len); Msg = (char*)ExAllocatePool(NonPagedPool,max); ServiceRegistryPath.Buffer = (PWSTR) ExAllocatePool(PagedPool, pRegistryPath->Length + sizeof(WCHAR)); 只有这4个地方用了,前三个用ExFreePool 了,最后一个用 RtlFreeUnicodeString(&ServiceRegistryPath); 感觉NonPagedPool应该有100多M--200多M,申请这点应该没问题吧。 谢谢指教 |
|