次の方法で共有


RxPurgeRelatedFobxs 関数 (scavengr.h)

RxPurgeRelatedFobxs は、NET_ROOT構造体に関連付けられているすべての FOBX 構造体を消去します。

構文

NTSTATUS RxPurgeRelatedFobxs(
  PNET_ROOT   NetRoot,
  PRX_CONTEXT RxContext,
  BOOLEAN     AttemptFinalization,
  PFCB        PurgingFcb
);

パラメーター

NetRoot

FOBX 構造体を消去する必要があるNET_ROOT構造体へのポインター。

RxContext

RX_CONTEXT構造体へのポインター。

AttemptFinalization

関連付けられた FCB 構造体の最終処理と解放を試みる必要があるかどうかを示すブール値。

PurgingFcb

消去が行われる FCB 構造体へのポインター。

戻り値

RxPurgeRelatedFobxs は 、成功した場合はSTATUS_SUCCESSを返し、失敗した場合は次のいずれかのエラー値を返します。

リターン コード 説明
STATUS_UNSUCCESSFUL
関連する FOBX 構造体を消去できませんでした。

注釈

クリーンアップ時に、ファイル オブジェクトに関連付けられているユーザー ハンドルはこれ以上ありません。 このような場合、閉じるとクリーンアップの間の時間枠は、メモリ マネージャーとキャッシュ マネージャーによって維持される追加の参照によって決まります。 クリーンアップ時に、FOBX はクローズ・ペンディング・リストに入れられ、クローズ操作を受け取ったときに対応するリストから削除されます。 その間、開いている操作がACCESS_DENIED状態で失敗した場合、RDBSS は FOBX 構造体を強制的に消去できます。 これは同期操作です。

ディレクトリの名前を変更するには、ディレクトリの下にあるすべてのファイルを閉じる必要があります。 ネットワーク ミニ リダイレクターは、ディレクトリの名前を変更するIRP_MJ_SET_INFORMATION要求に応答して、 RxPurgeRelatedFobxsRxScavengeFobxsForNetRoot を呼び出す場合があります。 ディレクトリのNET_ROOT構造体と NULL FCB を渡すことで、ディレクトリに関連付けられているすべての FOBX 構造体が消去され、清掃されます。

RxPurgeRelatedFobxs ルーチンは、消去要求を受信する前にクローズ操作が保留されていたすべての FOBX 構造体を消去しようとします。 RxPurgeRelatedFobxs ルーチンは、スカベンジャー ミューテックスを取得し、スカベンジャー オブジェクトの ClosePendingFobxsList メンバーを走査してリスト エントリを削除してから、ミューテックスを解放します。

AttemptFinalizeTRUE に設定されている場合、RxPurgeRelatedFobxs は関連付けられている FCB の最終処理と解放を試みます。

PFCBNULL ではなく、この消去 FCB strcuture が ClosePendingFobxsList メンバーの FOBX に関連付けられている FCB 構造体と同じでない場合、RxPurgeRelatedFobxs は、このルーチンがサポートされている場合、ネットワーク ミニ リダイレクターによって提供される MRxAreFilesAliased コールバック ルーチンを呼び出します。 MRxAreFilesAliased の呼び出しは、PFCB が FOBX 構造体に関連付けられている FCB のエイリアスであるかどうかを判断するためのものです。

要件

要件
対象プラットフォーム デスクトップ
Header scavengr.h (Rxprocs.h を含む)
IRQL <= APC_LEVEL

こちらもご覧ください

MRxAreFilesAliased

RxPurgeAllFobxs

RxScavengeAllFobxs

RxScavengeFobxsForNetRoot