次の方法で共有


プレフィックス テーブル管理

RDBSS では、プレフィックス テーブルを使用して SRV_CALL、NET_ROOT、および V_NET_ROOT 名をカタログ化できるデータ構造を定義します。

RDBSS での名前管理の現在の実装では、次のコンポーネントを含むテーブルが使用されています。

  • 挿入された名前のキュー

  • バージョン スタンプ

  • テーブル アクセスを制御するテーブル ロック リソース

  • 名前の一致で大文字と小文字が区別されないかどうかを示す値

  • このプレフィックス テーブルのハッシュ値エントリのバケット

テーブル ロック リソースは、通常の方法で使用されます。参照操作では共有され、変更操作には使用できません。

バージョン スタンプは、変更されるごとに変更されます。 キューの理由は、プレフィックス テーブル パッケージを使用すると、複数の呼び出し元が一度に列挙できるようになるためです。 挿入された名前とバージョン スタンプのキューを使用すると、複数の呼び出し元が同時に列挙できます。 キューはファイル名の高速検索として使用できますが、プレフィックス テーブルは NET_ROOT 構造に対する正しいアプローチです。

これらのプレフィックス テーブル管理ルーチンは、名前を要求したり、NET_ROOT 構造体の作成パスを形成したりするために、MUP からの呼び出しに応じて RDBSS によって内部的に使用されます。 これらの RDBSS プレフィックス テーブル管理ルーチンは、テーブルにアクセスする前に適切なロックが取得され、作業が完了したときにロックが解放される限り、ネットワーク ミニ リダイレクターでも使用できます。 ドライバーによる通常の使用は次のようになります。

  • RxAcquirePrefixTableLockShared を呼び出して共有ロックを取得します。

  • RxPrefixTableLookupName を呼び出して名前を検索します。

  • RxReleasePrefixTableLock を呼び出して共有ロックを解放します。

特定のルーチンは、Windows XP および以前のバージョンの Windows でのみ実装されることに注意してください。 RxPrefixTableLookupName は、Windows のすべてのバージョンで実装されている唯一のプレフィックス テーブル管理ルーチンです

RDBSS プレフィックス テーブル管理ルーチンには、次のものが含まれます。

ルーチンによって返される値 説明

RxpAcquirePrefixTableLockExclusive

このルーチンは、SRV_CALL 名と NET_ROOT 名のカタログ化に使用されるプレフィックス テーブルに対する排他ロックを取得します。

このルーチンは、Windows XP および Windows 2000 でのみ使用できます。 このルーチンは RDBSS によって内部的に使用され、ネットワーク ミニ リダイレクターでは使用しないでください。

RxpAcquirePrefixTableLockShared

このルーチンは、SRV_CALL 名と NET_ROOT 名のカタログ化に使用されるプレフィックス テーブルの共有ロックを取得します。

このルーチンは、Windows XP および Windows 2000 でのみ使用できます。 このルーチンは RDBSS によって内部的に使用され、ネットワーク ミニ リダイレクターでは使用しないでください。

RxPrefixTableLookupName

ルーチンは、SRV_CALL および NET_ROOT 名をカタログ化するために使用されるプレフィックス テーブル内の名前を検索し、基になるポインターから包含構造体に変換します。

RxpReleasePrefixTableLock

このルーチンは、SRV_CALL 名と NET_ROOT 名のカタログ化に使用されるプレフィックス テーブルのロックを解放します。

このルーチンは、Windows XP および Windows 2000 でのみ使用できます。 このルーチンは RDBSS によって内部的に使用され、ネットワーク ミニ リダイレクターでは使用しないでください。

Windows Server 2003 以降では、RxPrefixTableLookupName を除き、前の表で述べたルーチンはマクロに置き換えられます。パラメーターの数が少ないプレフィックス テーブル ルーチンを呼び出す次のマクロが定義されています。

マクロ 説明

RxAcquirePrefixTableLockExclusive (TABLEWAIT)

このマクロは、変更操作の排他モードでプレフィックス テーブル ロックを取得します。

RxAcquirePrefixTableLockShared (TABLEWAIT)

このマクロは、参照操作の共有モードでプレフィックス テーブル ロックを取得します。

RxIsPrefixTableLockAcquired (TABLE)

このマクロは、プレフィックス テーブル ロックが排他モードまたは共有モードで取得されたかどうかを示します。

RxIsPrefixTableLockExclusive (TABLE)

このマクロは、プレフィックス テーブルロックが排他モードで取得されたかどうかを示します。

RxReleasePrefixTableLock (TABLE)

このマクロは、プレフィックス テーブルロックを解放します。