阅读:1237回复:4
PCI卡驱动一问?
我在驱动程序里没有实现IRP_MJ_READ和IRP_MJ_WRITE,
我在应用程序里读写采用的是IRP_IO_CONTROL的方式。 问题:我看书上讲,用readfile和writefile读写数据,IO管理器产生IRP_MJ_READ和IRP_MJ_WRITE。 我的做法是,先把PCIBAR的物理地址映射到用户虚地址,然后直接用地址访问。例如: temp=*(U32*)(pUserAdd+offset); 我用这种方法读出的数据是正确的,但我不知道这句话到内核模式后是什么IRP包。如果是IRP_MJ_READ和IRP_MJ_WRITE,我根本就没实现,数据怎么会正确?(不是IRP_IO_CONTROL,因为 我就没调用deviceiocontrol函数。 |
|
沙发#
发布于:2003-08-01 16:54
用这种方法的话,是用Memory Map的方式,根本没用到IRP_MJ_READ和IRP_MJ_WRITE,也没用到IRP_IO_CONTROL。
|
|
|
板凳#
发布于:2003-08-02 02:42
\"先把PCIBAR的物理地址映射到用户虚地址,然后直接用地址访问。例如:
temp=*(U32*)(pUserAdd+offset); 我用这种方法读出的数据是正确的,但我不知道这句话到内核模式后是什么IRP包。 \" when you do this way, there is not any IRP happens, you read the port/memory directly. for small amount of data, this way is ok. |
|
地板#
发布于:2003-08-02 10:49
hehe
|
|
地下室#
发布于:2003-08-02 11:01
叮叮咚咚等等等等等
|
|