fhw
fhw
驱动牛犊
驱动牛犊
  • 注册日期2001-06-19
  • 最后登录2006-12-02
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1532回复:1

关于创建IRP的问题?

楼主#
更多 发布于:2001-09-20 15:54
我用下面的方式创建一个写IRP没有问题,但是
创建一个读IRP则不行,不只问题出在什么地方。
NTSTATUS HidtoserDevice::Read(KIrp I)
{
   PUCHAR pinBuffer= new (NonPagedPool) UCHAR[16];
   IO_STATUS_BLOCK IoStatus;
   LARGE_INTEGER loffset, *pOff;
   KIrp Irp=IoBuildAsynchronousFsdRequest( IRP_MJ_READ,
I.DeviceObject(CURRENT),
pinBuffer,
8,
pOff,
&IoStatus);


if ( Irp.IsNull() )
{
return I.PnpComplete(this, STATUS_INSUFFICIENT_RESOURCES);

}
Irp.Information() = 0;

status=m_Lower.PnpCall(this,Irp);//在这一句上出现问题,出现蓝屏。

           I.Information() = dwBytesRead;
status=I.PnpComplete(this, status);
return status;
}
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-09-21 09:57
我认为问题出在status=m_Lower.PnpCall(this,Irp);这一句上,我想知道这里的this和I.DeviceObject(CURRENT)  所指向的是同一Device吗?若不是那就有些问题了;若是,我建议不要用this,直接用Device的指针吧!
你是要发IRP发给自身吗?
还有,发异步IRP,要记得释放IRP。
还有,最重要一点,解决的话,记得给分:),我好久没得分了!!!
游客

返回顶部