swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:2372回复:4

zwcreatefile 和zwclose不在一个函数里,为什么zwclose 关不掉zwcreatefile打开的文件?

楼主#
更多 发布于:2001-08-30 17:44
我在mpinitialize里调用zwcreatefile来打开一个文件,可是我想在iocontrol里将它关掉,可是总是关不掉,打开那个文件时,说有一个进程在用那个文件。有大侠遇到过此种情况吗?谢谢!
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-08-30 19:13
在2k DDK对ZwClose的说明中讲了,zwClose和ZwCreateFile必须在同一个线程中(设备上下文)被调用,否则无法关闭打开的句柄。所以你在MiniportInitialize中打开文件,则deviceiocontrol中关闭句柄总是失败了。有两个解决办法,一是在MiniportInitialize中打开文件,在MiniportHalt中关闭。二是在IRP_MJ_CREATE_DEVICE中打开文件,在IRP_MJ_CLOSE_DEVICE中关闭文件。
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-08-31 08:09
thank you!
可是我还有个问题,zwwritefile与zwcreatefile是不是也必须在一个线程里?我是在mpinitialize里调用zwcreatefile,在ptreceivecomplete里调用zwwritefile的,可是总是写不进去?为什么?
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-09-07 12:50
    好象是这样的,我写的一个中间层驱动中,在两个线程中分别调用这两个函数,每次写文件时都返回非法的参数错误,但在CreateDevice中CreateFile, DeviceIoControl中WriteFile总是成功的。另外在ndis Driver中你还可以调用NdisOpenFile和NdisMapFile来实现读写操作,它好象没有限制。
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-09-07 13:34
    好象是这样的,我写的一个中间层驱动中,在两个线程中分别调用这两个函数,每次写文件时都返回非法的参数错误,但在CreateDevice中CreateFile, DeviceIoControl中WriteFile总是成功的。另外在ndis Driver中你还可以调用NdisOpenFile和NdisMapFile来实现读写操作,它好象没有限制。
游客

返回顶部