RxFinalizeVNetRoot 関数 (fcb.h)
RxFinalizeVNetRoot は 、指定されたV_NET_ROOT構造体を最終処理します。 呼び出し元には、デバイス オブジェクトに関連付けられている netname テーブルに対する排他ロックが必要です。
構文
BOOLEAN RxFinalizeVNetRoot(
[out] OUT PV_NET_ROOT ThisVNetRoot,
[in] IN BOOLEAN RecursiveFinalize,
[in] IN BOOLEAN ForceFinalize
);
パラメーター
[out] ThisVNetRoot
最終処理するV_NET_ROOT構造体へのポインター。
[in] RecursiveFinalize
ファイナライズを再帰的に行う必要があるかどうかを示す値。 このパラメーターは現在使用されていません。
[in] ForceFinalize
参照カウントに関係なく、ファイナライズを強制するかどうかを示す値。
ForceFinalize が FALSE の場合、V_NET_ROOTを最終処理するには、ThisVNetRoot が指すV_NET_ROOT構造体の NodeReferenceCount メンバーが 1 である必要があります。
戻り値
RxFinalizeVNetRoot は、成功した場合は TRUE を 返し、最終処理が行われなかった場合は FALSE を 返します。
注釈
RxFinalizeVNetRoot ルーチンは、通常、ネットワーク ミニ リダイレクター ドライバーによって直接呼び出されません。 RDBSS は、V_NET_ROOTの参照カウントが 1 にデクリメントされるときに、このルーチンを内部的に呼び出します。
RxFinalizeVNetRoot は、RxFinalizeConnection への Level パラメーターが TRUE に設定されている場合、RxFinalizeConnection ルーチンによっても呼び出されます。 RxFinalizeConnection は通常、ユーザー モードからのカスタム IOCTL 要求の受信に応じて、ネットワーク ミニ リダイレクター ドライバーによって呼び出されます。 たとえば、ユーザーはコマンド ラインから "NET USE x: /d" を実行して共有を削除できます。 この要求は、ネットワーク ミニ リダイレクターによって提供されるネットワーク プロバイダー DLL を介して、ネットワーク ミニ リダイレクター カーネル ドライバーに送信されるカスタム IOCTL 要求にマップされます。この要求は 、RxFinalizeConnection ルーチンを呼び出して接続と関連付けられているV_NET_ROOT構造体を削除します。
RxFinalizeVNetRoot は 、RxForceFinalizeAllVNetRoots ルーチンによって呼び出され、NET_ROOT構造体に関連付けられている各V_NET_ROOTを最終処理します。
RxFinalizeVNetRoot を呼び出す前に、デバイス オブジェクトに関連付けられている netname テーブルのロックを排他モードで取得する必要があります。
V_NET_ROOTの UpperFinalization メンバーが 0 の場合、 RxFinalizeVNetRoot は、このV_NET_ROOTに関連付けられているNET_ROOTに属するすべての FCB を反復処理し、V_NET_ROOTに関連付けられているすべてのSRV_OPEN構造体を孤立させます。
RxFinalizeVNetRoot は、ネットワーク ミニ リダイレクターによって提供される MRxFinalizeVNetRoot ルーチンを呼び出して、V_NET_ROOT構造体のメモリが解放される前にV_NET_ROOTを終了します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | fcb.h (Mrxfcb.h、Fcb.h を含む) |
IRQL | <= APC_LEVEL |