gazelle
驱动牛犊
驱动牛犊
  • 注册日期2001-08-16
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1464回复:3

这样设备的Driver的读写IRP部分如何设计?

楼主#
更多 发布于:2001-09-26 11:33
各位朋友:
    我正为我手头的Driver开发头疼,我虽然已经算是比较明白WDM的结构,甚至是细节,但我的设备的特殊性使我一筹莫展,等我描述完我的烦恼之后,请各位朋友给我指导一番:
    我的硬件设备的核心是个压缩语音的DSP(就是TI459系列,压缩算法是第三方做好的),通过PCI桥接芯片连接到微机的PCI总线上。DSP芯片的另一侧是若干个64Kbps的PCM通道的语言流。硬件的中断是在DSP压缩完一个PCM语音包之后发生,要求Windows Driver迅速作出反应:读走这个包,并马上写入一个压缩过的包给DSP(因为语音通信的双向性和实时性)。
     我所接触到和阅读到的WDM Driver的例子都是这样:读操作和写操作独立。而我的写操作要依赖于读操作。我不知道在StartIo、ISR和DPC三个关键的Routine中如何处理我的读和写操作。在ISR中如果既完成了读又完成了写,那么IRP_MJ_READ 和IRP_MJ_WRITE的完成(即:IoCompleteIrp调用)如何保证顺利进行?

最新喜欢:

zackaryzackar...
ppl
ppl
驱动小牛
驱动小牛
  • 注册日期2001-06-13
  • 最后登录2006-05-21
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-09-26 12:53
提供一个IOCTL,同时进行读写操作;
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-09-26 15:25
在ISR里完成读写,DPC里完成IRP
BSOD
驱动牛犊
驱动牛犊
  • 注册日期2001-09-28
  • 最后登录2004-09-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-09-28 06:37
Sorry, I can't type Chinese.

you need to maintain 2 driver IO queues and 2 buffer queues(linked-list), one stores the data being sent to the DSP, the other holds the data from the DSP.

on interrupt(compression done),defers the control to DPC,
on DPC
 store the data, checks if there is pending read-IRP, if true, move the data to UM by setting Irp->IoStatus.information = bytesread, complete the read IRP.
then checks if there's data in write-queue to send and if there's pending write-irp, if true, send the data to the DSP, complete the write IRP.


[BSOD 编辑于 2001-09-28 06:44]
COOL NDIS
游客

返回顶部