FSCTL_SET_PURGE_FAILURE_MODE IOCTL (ntifs.h)
フィルター マネージャーは 、FSCTL_SET_PURGE_FAILURE_MODE コントロール コードを使用して、 データ スキャン用に作成されたセクションの有効期間中に操作を同期します。 フィルターは、このコントロール コードを発行しないでください。
メジャー コード
[入力バッファー]
SET_PURGE_FAILURE_MODE_INPUT構造体。
入力バッファーの長さ
SET_PURGE_FAILURE_MODE_INPUTのサイズ (バイト単位)。
出力バッファー
なし
出力バッファーの長さ
該当なし
入力/出力バッファー
なし
入力/出力バッファーの長さ
該当なし
ステータス ブロック
システムで使用するために予約されています。
注釈
フィルター マネージャーでは、このコントロール コードとIRP_MJ_FILE_SYSTEM_CONTROL呼び出しを使用して、セクションの有効期間を角かっこで囲みます。 これらの呼び出しは、キャッシュ マネージャー キャッシュの消去に失敗した場合に、次の方法で動作するようにファイル システム (およびまれにミニフィルター) に指示します。
SET_PURGE_FAILURE_MODE_ENABLED セットで発行されたすべてのFSCTL_SET_PURGE_FAILURE_MODEに対して、SET_PURGE_FAILURE_MODE_DISABLED セットでFSCTL_SET_PURGE_FAILURE_MODEが発行されます。 未処理のSET_PURGE_FAILURE_MODE_ENABLEDがありますが、フィルター マネージャーは、特定の種類の操作に対する特定のエラー状態に対して次のように応答します (次の表を参照)。
• 操作をペンドし、セクションの終了を早めます (可能な場合) • 操作を、エラーを発行したミニフィルターまたはファイル システムに再キューします
フィルター マネージャーがそれに応じて応答するようにトリガーするために、ファイル システム (またはフィルター) は、次の方法でセクションを消去するエラーに応答します。
操作 | 必要な戻り状態 |
---|---|
IRP_MJ_CREATE (破壊的操作) | STATUS_USER_MAPPED_FILE |
IRP_MJ_WRITE (バッファーなし操作のみ) | STATUS_PURGE_FAILED |
IRP_MJ_SET_INFORMATION | STATUS_PURGE_FAILED |
これらの状態は、未処理のSET_PURGE_FAILURE_MODE_ENABLEDがある場合にのみ返す必要があります (負荷分散SET_PURGE_FAILURE_MODE_DISABLED受信されません)。 それ以外の場合は、エラーの状態がアプリケーションに返されます。
他の操作 (キャッシュされた書き込みなど) の場合、ファイル システム (またはフィルター) が未処理のFSCTL_SET_PURGE_FAILURE_MODEがある間にセクションを消去できない場合は、未処理のFSCTL_SET_PURGE_FAILURE_MODEの数が 0 に減少したときに操作を保留し、再び実行する必要があります。 ファイルシステム (またはフィルター) が単にエラー状態 (上記のものを含む) を返すだけの場合、その状態はアプリケーションに返されます。
エラーの状態は、失敗した操作の再キューと同様に、フィルター マネージャー内で完全に処理されます。 つまり、どちらもフィルターには表示されません。フィルターには次のような重要な影響があります。
- プロセス モニターなどのファイル システム監視ツールでは、これらの操作は報告されません。
- 再発行された操作を成功させるために上位フィルターが必要な場合、再キューされた操作は失敗します。 この状況では、この 2 番目のフィルターがエラー状態を返すようにするには、フィルター ライターが必要です。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 |
Header | ntifs.h |