阅读:1624回复:5
读物理内存遇到个问题
我在xp下写驱动读物理内存,当用MmMapIoSpace映射内存之后,要不要再调用MmUnmapIoSapce.我用softice调试时运行到MmUnmapIoSapce就会重启,将它删除就能通过。
请老大指教下到底要不要使用MmUnmapIoSapce. 另外写物理内存应如何操作,是不是写映射的内存就可以了吗?[p:5] |
|
沙发#
发布于:2005-06-20 09:41
下面是引用zhaock于2005-06-19 11:04发表的: 我后来将MmUnmapIoSapce这句删了,所以帖上来时打漏了。不过刚才又加上去,却没事了,奇怪。 |
|
板凳#
发布于:2005-06-19 16:29
下面是引用lezy2925于2005-06-19 10:36发表的: DDK Online就是资料啊,奇怪!编译怎么通过的? |
|
|
地板#
发布于:2005-06-19 11:04
MmUnmapIoSapce(gpioPtr);参数不对,应该MmUnmapIoSapce(gpioPtr,len);len等于你MmMapIoSpace时的len。
重起了?ice没有截住吗? |
|
地下室#
发布于:2005-06-19 10:36
我只是写个驱件驱动练下手,将物理内存复制出来就可以了,所以在映射内存之后,就用RtlMoveMemory复制,之后再用MmUnmapIoSapce退出,就只是这里有问题了。就只是下面几句:
gpioPtr=MmMapIoSpace(IoAddress,len,MmNonCached); RtlMoveMemory(pvIOBuffer,gpioPtr,len); MmUnmapIoSapce(gpioPtr);在softice中到这句就重启了. 我手头上也没有什么资料,能介绍下吗? |
|
5楼#
发布于:2005-06-19 09:34
你应该在IRP_MN_STOP_DEVICE处理函数中,调用MmUnmapIoSapce
|
|