次の方法で共有


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 に設定されます。

関連項目

CcFlushCache

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_FLUSH_BUFFERS (WDK Kernel Reference)