我正在研究 kmdf 卷过滤器驱动程序并想处理关机。WDF 书中的文章WDM IRPs and KMDF Event Callback和评论似乎表明 WDF 仅支持控制(非 PNP)设备的 IRP_MJ_SHUTDOWN。所以我WdfControlDeviceInitSetShutdownNotification(WdfDeviceShutdown)
为我的控制对象添加了调用,这允许我在关机时将文件保存到相同的卷。WdfDeviceShutdown
但是,我没有看到在刷新之前调用的文档 sys 。我已经使用 EvtDeviceWdmIrpPreprocess(IRP_MJ_FLUSH) 回调了刷新。查看 Dbg 打印,我总是在回调之前看到刷新WdfDeviceShutdown
回调。
我想知道我是否遗漏了什么。对此行为的任何评论都将帮助我更好地理解这一点。我之前看到过刷新,因为控制设备处于低于文件系统的卷过滤器级别,因此执行程序在关闭/通知我的设备之前会刷新文件系统缓冲区。
注意:如果我使用)尝试写入文件时WdfControlDeviceInitSetShutdownNotification(WdfDeviceLastChanceShutdown
会出错。0xc0000189 (STATUS_TOO_LATE)