2440_WinCE_6.0 驱动和应用程序共享内存
现在在做一个摄像头的数据采集,在驱动中分配了一段连续的物理地址给2440的camera interface。现在应用程序想获得这些数据,所以我用了VirtualAllocEx和VirtualCopyEx将驱动中的这段物理地址也映射到了应用程序的虚拟地址空间。但是遇到的问题是当我关闭这个应用程序是,操作系统会回收所有的由该应用程序创建的内存空间,所以这段映射的物理地址也随之被回收了,这就早成了下次调用摄像头驱动的时候驱动崩溃的情况。
所以现在想问一下是否有其他方法可以实现CE下驱动和应用程序共享内存,而且可以按照共享内存的机制去安全释放内存。由于WDK上的很多函数在CE下是没有实现的,所以我也不知道有什么函数可以来实现。
谢谢!
[解决办法]
不知道LZ在驱动中申请共享内存是咋搞的,理论上,当使用CreateFile的时候打开驱动,这时应该要在驱动中(XXX_Open)申请共享内存,在CloseHandle的时候驱动(XXX_Close)释放共享内存,这样的话是可以实现数据共享的。但是,使用这个会有个缺陷,在应用程序非正常退出的时候,上次在驱动申请的共享内存就没有被释放掉。
[解决办法]
楼主的内存在驱动开辟,那应该是map到上层来用的吧,那你每次用完,要退出前至少要unmap一下啊,不然肯定会连累下面的内存啊。
[解决办法]
楼主可以看看《WinCE6.0中应用程序如何直接访问物理空间》,http://www.cnblogs.com/we-hjb/archive/2010/02/25/1673815.html
可能对你有帮助
[解决办法]
unmap用VirtualFree为什么不行?
[解决办法]
这个总比驱动崩溃要强吧。
内存泄漏70KB是怎么得来的,如能捕捉到地址,应该会有很大帮助