阅读:1298回复:9
驱动与应用程序的通信问题????
我做的是DSP6205(自带存储器)的PCI驱动
问题: 要求驱动要给应用层提供的一个接口函数是: WriteDeviceMem(hDevice, 0x80004000, 4,(DWORD *)&nDataCount); 其中, 0x80004000为数据写入的目标地址(属于DSP自带存储空间)。 现在想问IRP怎么携带0x80004000信息。并且把这个信息传给驱动程序?????】希望高人指点!!谢谢!!! |
|
|
沙发#
发布于:2005-03-09 16:35
应用程序发个DeviceIoControl
驱动程序处理IRP_MJ_DEVICE_CONTROL |
|
|
板凳#
发布于:2005-03-09 16:55
应用程序发个DeviceIoControl 这种方法最好了,这个例子克隆一个,简单快捷。 |
|
|
地板#
发布于:2005-03-09 20:22
READ,WRITE都可以,只要你驱动知道该如何做即可....
|
|
|
地下室#
发布于:2005-03-09 21:49
我做的是DSP6205(自带存储器)的PCI驱动 把应用程序的请求封状成irp这是io管理器做的事情,,,没有必要了解怎么打包成irp传递给驱动的。。。 io管理器打包irp的时候自然会将应用程序的请求都加到irp内(比如:是读啊还是写,,读写多少,,等等,,都打包成irp数据结构的一部分) |
|
|
5楼#
发布于:2005-03-11 15:31
大家都回答了
|
|
|
6楼#
发布于:2005-03-11 21:27
恩。都回答的不错啊!
|
|
7楼#
发布于:2005-03-11 23:30
pci设备,base addr会被os自动分配的,怎么能硬编码地址呢?你需要知道的是offset
在start_device的时候,进行内存映射,并记下映射后的base addr app按offse写数据 |
|
8楼#
发布于:2005-03-14 23:26
用DeviceIocontrol()函数
|
|
9楼#
发布于:2005-03-16 11:29
张知识了,以前用过IOCTL,不知道还可以这样用,想传什么就传什么。
楼上说的对基地址怎么可以随便指定呢? 即便是你看到的,在别的系统和机器上可能不一样啊, 所以还是应该在StartDevice中获得系统分配的BaseAdd |
|