私は kmdf ボリューム フィルター ドライバーに取り組んでおり、シャットダウンを処理したいと考えていました。WDFブックの記事WDM IRPとKMDFイベントコールバックとコメントは、WDFがコントロール(非PNP)デバイスに対してのみIRP_MJ_SHUTDOWNをサポートしていることを示唆しているようです。そのため、制御オブジェクトの呼び出しを追加WdfControlDeviceInitSetShutdownNotification(WdfDeviceShutdown)
し、シャットダウン時にファイルを同じボリュームに保存できるようにしました。ただし、フラッシュの前に呼び出されるドキュメント sysWdfDeviceShutdown
は表示されません。EvtDeviceWdmIrpPreprocess(IRP_MJ_FLUSH) を使用してフラッシュのコールバックを行いました。Dbg print を見ると、コールバックの前に常にフラッシュ コールバックが表示されWdfDeviceShutdown
ます。
私は何かが欠けているのだろうか。この動作に関するコメントは、これをよりよく理解するのに役立ちます。制御デバイスがファイル システムより下のボリューム フィルター レベルにあるため、以前にフラッシュが発生していました。そのため、エグゼクティブはデバイスを閉じる/通知する前にファイル システム バッファーをフラッシュします。
注: ) を使用すると、ファイルに書き込もうとするとWdfControlDeviceInitSetShutdownNotification(WdfDeviceLastChanceShutdown
エラーが発生します。0xc0000189 (STATUS_TOO_LATE)