阅读:1835回复:5
请教关于内存映射的一个问题。
使用ReadFile的时候,我将如下一个结构体传给驱动
struct abc { long type; unsigned char* buffer; } 那我在驱动里面处理Read Irq时,对内存地址进行页面锁定和地址映射,那么buffer的地址是不是有可能是无效(未映射)的呢? 或者有可能有冲突? |
|
沙发#
发布于:2009-03-09 22:05
你申请内存了吗?buffer得先指向一块内存啊
|
|
|
板凳#
发布于:2009-03-10 00:41
你的buffer生存周期是多少?
如果遇到分非页buffer申请失败会如何? |
|
|
地板#
发布于:2009-03-10 10:51
这个abc结构体内存以及所包含的buffer内存是外部程序访问PCI卡时申请的。
我在访问abc的时候使用了MmGetSystemAddressForMdlSafe这个函数来对用户模式下的地址进行映射。 但是访问abc->buffer的时候也需要调用该函数吗?还是直接访问就可以了? |
|
地下室#
发布于:2009-03-11 18:36
引用第3楼vaccy于2009-03-10 10:51发表的 : 我也这样用过,在调用MmGetSystemAddressForMdlSafe之前你锁定了这块内存应该用MmGetSystemAddressForMdlSafe返回的地址驱动就可以访问了 |
|
|
5楼#
发布于:2009-03-12 16:53
我仔细的看了下,应该是不可以的,有出错的可能
|
|