NET_ROOT 構造
ネット ルート構造 (NET_ROOT) には、ネットワーク ミニ リダイレクターによってメイン含まれる特定のネットワーク サーバー\共有接続ごとの情報が含まれます。
NET_ROOT は、RDBSS とネットワーク ミニ リダイレクター ドライバーが、サーバーではなく処理する必要があるものです。 したがって、RDBSS は通常、NET_ROOT構造を作成して開き、サーバーを開く役割を担うネットワーク ミニ リダイレクター ドライバーを呼び出します。 ネットワーク ミニ リダイレクター ドライバーは、渡されたNET_ROOT 構造体内の適切なフィールドを設定する必要があります。
NET_ROOT 構造体の一覧は、各 SRV_CALL の RDBSS によってメインされます。 各 NET_ROOT 構造体には、他の RDBSS 構造体と共通するいくつかの要素と、NET_ROOT 構造体に固有の要素があります。 NET_ROOT 構造体を管理する RDBSS ルーチンは、次の要素のみを変更します。
サインと参照カウント
名前と関連付けられたテーブル情報
関連付けられている SRV_CALL 構造体へのバックポインター
さまざまなサブ構造のサイズ情報
関連付けられている FCB 構造体の参照テーブル
ネットワーク ミニ リダイレクター (または NET_ROOT データ構造の作成者) によって要求される追加ストレージ
NET_ROOT 構造体には、IRP 処理を再開する前に NET_ROOT の遷移が完了するのを待機している RX_CONTEXT 構造体の一覧も含まれています。 これは通常、同時要求がサーバーに送信されるときに発生します。 これらの要求の 1 つが開始され、他の要求はキューに入れられます。 ネットワーク ミニ リダイレクターで使用するために予約された余分な領域は、既知の NET_ROOT データ構造の末尾から開始されるため、ネットワーク ミニ リダイレクターは、インクルード ファイルのコンテキスト フィールドを使用してこの余分な領域を参照できます。
NET_ROOT 構造体の最終処理は、次の 2 つの部分で構成されます。
すべての V_NET_ROOTS との関連付けを破棄する
メモリの解放
これら 2 つのアクションの間に遅延が生じる可能性があり、NET_ROOT 構造のフィールドにより、最初のステップが重複しなくなる可能性があります。