阅读:1600回复:4
胡哥,帮我分析一下原因
最近写了一个pci卡的驱动程序.现在出现以下情况:
1.在win98系统下,收发数据正常,但是在系统重一旦启动别的程序,比如msdn等软件时,发送数据例程会出现停止发送数据的情况; 2.在win2k系统中,没有这种现象. 我很困惑,不知道原因,快帮我分析一下. |
|
沙发#
发布于:2002-05-31 17:15
最近写了一个pci卡的驱动程序.现在出现以下情况: 我考,你这不是害我吗? 我怎么知道原因?我又没有你的机器,你的代码。 我只能认为是你的driver用内存用得太狠了。 我还能说什么?就算是walter oney我看也说不出什么。 |
|
|
板凳#
发布于:2002-06-02 19:44
胡哥很久没有在msn上碰到你了,最近是不是很忙啊?
在应用程序和驱动程序之间,我使用的是io缓冲方式,系统会将应用程序中的数据缓冲复制一份到驱动程序,由于这种方式系统分配的是非分页内存,而系统的非分页内存是有限的,采用这种方式,是不是非常耗费资源而导致系统资源不足? |
|
地板#
发布于:2002-06-02 19:52
因为我们开发的卡最大可读取的最大字节数是4k,而每次发送读IRP时,由于应用程序并不知道每次读取的字节数的大小,因此每次分配的数据缓冲时,我都是按照会读取的最大的字节数来分配的,也就是4k分配的。我想这可能会导致系统内存资源的不足,你看是不是这个原因。
如果我还想继续使用IO缓冲的方式,有什么好的解决办法? 如果没有好的解决办法,是不是要使用直接缓冲的方式? 希望胡哥,尽快帮我解决这个问题。 |
|
地下室#
发布于:2002-06-02 20:32
因为我们开发的卡最大可读取的最大字节数是4k,而每次发送读IRP时,由于应用程序并不知道每次读取的字节数的大小,因此每次分配的数据缓冲时,我都是按照会读取的最大的字节数来分配的,也就是4k分配的。我想这可能会导致系统内存资源的不足,你看是不是这个原因。 应该不会啊,每次你如果能正确的在IRP处理完后调用,IoCompleteRequest函数的话那么不会有资源泄露的情况。 |
|
|