LIUTANG
驱动大牛
驱动大牛
  • 注册日期2001-03-30
  • 最后登录2020-12-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望58点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1368回复:3

驱动程序内部问题

楼主#
更多 发布于:2002-03-14 15:13
    各位老大们,大家好,吃饭没有?天气越来越热,不要中暑了!
    小弟想在一个驱动程序里读取另外一个驱动程序中的数据,用ZwCreateFile打开设备,但在用ZwReadFile读取被打开的设备时无论如何也不能进到被打开设备的Read例程,而且不小心就会死机,我可以肯定我的设备是成功的打开了,因为我在调用ZwCreateFile时被打开设备的Create例程被正常调用,所以现在比较郁闷,有哪位高手有这方面经验的,请一定指教,谢谢。
    另外,如果各位有用得着小弟的,也不要客气。
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-14 17:03
如果你的参数设置没有问题的话,用KeGetCurrentIrql()< DISPATCH_LEVEL函数检查一下调用的级别。如果大于等于DISPATCH_LEVEL的话必须使用工作线程(ExXXXWorkItem)。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
LIUTANG
驱动大牛
驱动大牛
  • 注册日期2001-03-30
  • 最后登录2020-12-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望58点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-03-14 18:20
    我改了一下ZwCreateFile的参数,现在可以读写了,问一下另外一个问题,能不能通过ZwCreateFile返回的句柄来控制设备?就象API里的DeviceIoControl一样?因为用IoBuildDeviceIoControlRequest函数时需要DEVICE_OBJECT参数,而我在调用IoGetDeviceObjectPointer函数时它好象也要打开一次设备,这样设备相当于被打开两次了,而且我不知道如何去关掉被IoGetDeviceObjectPointer打开的设备,请指教.
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-03-15 08:43
当然可以直接用ZwCreateFile,“ZwCreateFile either causes a new file or directory to be created, or it opens an existing file, (device), directory, or volume, giving the caller a handle for the file object”,具体实现方法,你可以参照Chris Cant的DebugPrint例子,他就是使用ZwXXX例程实现的。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
游客

返回顶部