下载后可任意编辑Windows 文件系统过滤驱动开发教程(7)7
IRP 完成函数,中断级,如何超越中断级别的限制 先讨论一下 Volumne 设备是如何得到的
首先看以下几个函数: // ------------------wdf
h 中的内容 ------------------------- typedef VPB wd_vpb; _inline wd_vpb * wd_dev_vbp(wd_dev *dev) { return dev->Vpb; } _inline wd_dev * wd_vbp_dev(wd_vpb *vpb) { return vpb->DeviceObject; } VPB 是 Volume parameter block
一个数据结构
它的主要作用是把实际存储媒介设备对象和文件系统上的卷设备对象联系起来
wd_dev_vbp 可以让你从一个 Storage Device Object 得到一个 VPB,而 wd_vbp_dev 这个函数可以得到这个 VPB 所对应的 Volmue 设备
现在首先要得到 Storage Device Object
实际上这个东西保存在当前 IO_STACK_LOCATION中
// ------------------wdf
h 中的内容 ----------------------- _inline wd_dev *wd_irpsp_mount_storage(wd_io_stack *irpsp) { return irpsp->Parameters
MountVolume
Vpb->RealDevice; }; 那么,从 irp 出发,我最终可以通过以下的方式得到 Volumue 设备: wd_irpsp *irpsp = wd_cur_io_stack(irp); 下载后可任意编辑wd_dev