jimaupa
驱动牛犊
驱动牛犊
  • 注册日期2008-08-20
  • 最后登录2008-09-24
  • 粉丝2
  • 关注0
  • 积分8分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1262回复:0

高手指点阿!

楼主#
更多 发布于:2008-09-02 01:56
写了一个disk.sys的过滤驱动,在里面的dispatchpnp例程中,想在某个irpSp->MinorFunction放置我的一个自定义函数,获取移动盘的文件。irpSp->MinorFunction有以下:
#define IRP_MN_START_DEVICE                 0x00
#define IRP_MN_QUERY_REMOVE_DEVICE          0x01
#define IRP_MN_REMOVE_DEVICE                0x02
#define IRP_MN_CANCEL_REMOVE_DEVICE         0x03
#define IRP_MN_STOP_DEVICE                  0x04
#define IRP_MN_QUERY_STOP_DEVICE            0x05
#define IRP_MN_CANCEL_STOP_DEVICE           0x06

#define IRP_MN_QUERY_DEVICE_RELATIONS       0x07
#define IRP_MN_QUERY_INTERFACE              0x08
#define IRP_MN_QUERY_CAPABILITIES           0x09
#define IRP_MN_QUERY_RESOURCES              0x0A
#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS  0x0B
#define IRP_MN_QUERY_DEVICE_TEXT            0x0C
#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D

#define IRP_MN_READ_CONFIG                  0x0F
#define IRP_MN_WRITE_CONFIG                 0x10
#define IRP_MN_EJECT                        0x11
#define IRP_MN_SET_LOCK                     0x12
#define IRP_MN_QUERY_ID                     0x13
#define IRP_MN_QUERY_PNP_DEVICE_STATE       0x14
#define IRP_MN_QUERY_BUS_INFORMATION        0x15
#define IRP_MN_DEVICE_USAGE_NOTIFICATION    0x16
#define IRP_MN_SURPRISE_REMOVAL             0x17

#define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18

我开始把函数放在IRP_MN_START_DEVICE    中,后来放在IRP_MN_REMOVE_DEVICE       ,但是都发现打不开移动盘的句柄,ntstatus:c000003a。我认为是设备还没有完全配置好,我就开始读写了,所以打不开句柄。打开句柄使用L"\\device\\harddisk1\\partition1"。

另外我测试了,等到移动盘可以使用时,我调用那个自定义的函数,可以打开句柄,检索文件阿。
问题一:应该放在什么上面哪个irpSp->MinorFunction中,能够打开移动盘的句柄阿?
问题二:pnp分发例程中能否放置我的函数?还是需要设置一个线程,来读写呢?

求助:驱动程序完成后希望找人一起测试,完善,我是菜鸟,希望向高手学习。我这有一些需要开发的程序,希望找合作伙伴一起开发。具体私下讨论阿。谢谢大家给个答复!
游客

返回顶部