阅读:1667回复:5
用ds写的驱动,*.inf中资源分配怎么写?
在ds的文档中没有找到相关内容。
一个pci卡的驱动,主要功能是把硬盘中的数据通过卡上的并口高速输出。思想是当卡上fifo半满时发出中断,驱动响应中断,通过dma把数据传送至fifo。 问题:这个中断号要在*.inf中申请吗?怎么写? 另外,要传送的数据是在用户态打开,然后共享内存,还是在驱动中产生一个文件对象,用户态只是送出文件路径?怎么做除送速率高? 我第一次接触驱动,请大家不吝赐教。 [编辑 - 5/28/02 by brucezh] |
|
|
沙发#
发布于:2002-05-30 10:26
PCI卡的硬件资源(包括中断号)是由系统分配的,INF不管这个事。
硬件资源的申请(包括中断号)是由硬件来实现的。 对于数据传送,一般可在用户态开一个缓冲区,然后用DMA方式发过去。速度应该慢不了。 兄弟,大方点,给点分吧! |
|
|
板凳#
发布于:2002-05-30 10:42
看来我要学得还很多啊,还要问一点。
用户态程序和驱动应该通过devicectrl通信是吧,是不是还有两者共享内存的问题? 另外,驱动要控制pci硬件进行某种操作,是不是要直接设置它的寄存区,还是有其他的什么办法?简而言之,就是驱动和硬件怎么互动?连这也搞不明白,还要搞驱动,呵呵。 给分给分,本来我有500多呢,误下了一个软件,扣了500分。一气之下买了权限,但我的分回不来了,站长竟然一点分都不送,小器 |
|
|
地板#
发布于:2002-05-30 15:26
是的,驱动程序和应用程序是通过DeviceIoctl来实现调用和通信的。但二者是否共享了内存我不知道。我只知道I/O管理器在系统空间中为驱动程序提供了一个中间缓冲区为其与应用程序之间实现数据通信,该缓冲区地址位于IRP中,分情况具体如下:
方式 ADD BUFFER I/O Irp->AssociatedIrp.SystemBuffer DIRECT I/O Irp->MdlAddress NEITHER I/O Irp->UserBuffer 关于驱动与应用程序之间的“互动”问题,我基本上同意你的理解。去操作硬件设备,其实就是通过驱动去设置该设备的相关寄存器。至于怎样设置寄存器,详见具体的芯片资料。 兄弟,你丢了500分我也很难过! 不过,给你写了这么多,如果你不给我加分,我会更难过的。。。。。。。 [编辑 - 5/30/02 by Dragon2008] |
|
|
地下室#
发布于:2002-05-30 15:51
不好意思,第一次给了一半分,这次还想给,找不到给分的按钮了。这是为什么?能给的时候我一定给分。
|
|
|
5楼#
发布于:2002-05-30 16:18
我真的好难过,兄弟!
记着下次一定给,多给点。等我升级了,好给你放分,要不要? |
|
|