阅读:1334回复:0
高手指点阿!
写了一个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分发例程中能否放置我的函数?还是需要设置一个线程,来读写呢? 求助:驱动程序完成后希望找人一起测试,完善,我是菜鸟,希望向高手学习。我这有一些需要开发的程序,希望找合作伙伴一起开发。具体私下讨论阿。谢谢大家给个答复! |
|