IRP_MJ_FLUSH_BUFFERS (FS およびフィルター ドライバー)
送信時
I/O マネージャー、その他のオペレーティング システム コンポーネント、およびその他のカーネル モード ドライバーは、バッファーされたデータをディスクにフラッシュする必要がある場合に、IRP_MJ_FLUSH_BUFFERS リクエストを送信します。 たとえば、ユーザーモード アプリケーションが次のような Win32 関数を呼び出したときに送信できます (FlushFileBuffers) など。 (ファイル システム ドライバーとファイル システム フィルター ドライバーの場合は、CcFlushCache IRP を送信するよりも推奨されます。)
データの内部バッファーを維持するすべてのファイル システムおよびフィルター ドライバーは、ファイル データまたはメタデータへの変更がシステムのシャットダウン後も保持されるように、この IRP を処理する必要があります。
操作: ファイル システム ドライバー
ファイル システム ドライバーは、ファイル オブジェクトに関連付けられた重要なデータまたはメタデータをディスクにフラッシュし、IRP を完了する必要があります。 この IRP の処理方法の詳細については、FASTFAT サンプルを参照してください。
操作: レガシー ファイル システム フィルター ドライバー
フィルター ドライバーは、ファイル オブジェクトに関連付けられた重要なデータまたはメタデータをディスクにフラッシュし、この IRP をスタック上の 1 つ下のドライバーに渡す必要があります。
パラメーター
ファイル システムまたはフィルター ドライバーの呼び出し IoGetCurrentIrpStackLocation 指定された IRP を使用して、独自の IRP へのポインターを取得します。stack location IRP では、次のリストに示されています。IrpSp. (IRP は次のように表示されます Irp.) ドライバーは、フラッシュ バッファー要求を処理する際に、IRP の次のメンバーと IRP スタックの場所に設定されている情報を使用できます。
DeviceObject ターゲット デバイス オブジェクトへのポインターです。
Irp->Ioステータス は、最終的な完了ステータスと要求された操作に関する情報を受け取る IO_STATUS_BLOCK構造体を指します。
IrpSp->FileObject は、DeviceObject に関連付けられているファイル オブジェクトを指します。
IrpSp->FileObject パラメーターには、FILE_OBJECT構造体でもある RelatedFileObject フィールドへのポインターが含まれています。 RelatedFileObject FILE_OBJECT 構造体のフィールドは、IRP_MJ_FLUSH_BUFFERS の処理中は無効なので、使用しないでください。
IrpSp->MajorFunction は IRP_MJ_FLUSH_BUFFERS に設定されます。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示