Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
RDBSS определяет структуры данных, которые позволяют использовать таблицы префиксов для каталогизации имен SRV_CALL, NET_ROOT и V_NET_ROOT.
Текущая реализация управления именами в RDBSS использует таблицу со следующими компонентами:
Очередь вставленных имен
Метка версии
Ресурс блокировки таблицы, который управляет доступом к таблицам
Значение, указывающее, являются ли сопоставления имён нечувствительными к регистру
Контейнер записей хэш-значений для этой таблицы префикса
Ресурс блокировки таблицы используется обычным образом: общий доступ для операций поиска, эксклюзивный для операций изменения.
Метка версии изменяется при каждом изменении. Причина очереди в том, что пакет таблицы префиксов позволяет одновременно выполнять перечисление нескольких вызывающих абонентов. Очередь вставленных имен и метки версий позволяет одновременно перечислять несколько вызывающих объектов. Очередь может использоваться в качестве быстрого поиска имен файлов, но таблица префикса определенно является правильным подходом для структур NET_ROOT.
Эти подпрограммы управления префиксными таблицами внутренне используются RDBSS в ответ на вызов MUP для утверждения имени или формирования пути для создания структуры NET_ROOT. Эти процедуры управления таблицами префикса RDBSS также могут использоваться сетевыми мини-редиректорами, если соответствующая блокировка получена перед доступом к таблице и блокировка освобождается при завершении работы. Обычное использование драйвера будет следующим образом:
Получите общую блокировку путем вызова RxAcquirePrefixTableLockShared.
Найдите имя, вызвав RxPrefixTableLookupName.
Отпустите общую блокировку, вызвав RxReleasePrefixTableLock.
Обратите внимание, что некоторые подпрограммы реализованы только в Windows XP и предыдущих версиях Windows. RxPrefixTableLookupName — это единственная подпрограмма управления таблицами префикса, реализованная во всех версиях Windows.
К подпрограммам управления таблицами префикса RDBSS относятся следующие:
| Рутина | Описание |
|---|---|
Эта подпрограмма получает монопольную блокировку таблицы префикса, используемой для каталогизации SRV_CALL и NET_ROOT имен. Эта подпрограмма доступна только в Windows XP и Windows 2000. Эта подпрограмма используется внутри RDBSS и не должна использоваться сетевыми мини-перенаправлениями. |
|
Эта подпрограмма получает общую блокировку таблицы префикса, используемой для каталога SRV_CALL и NET_ROOT имен. Эта подпрограмма доступна только в Windows XP и Windows 2000. Эта подпрограмма используется внутри RDBSS и не должна использоваться сетевыми мини-перенаправлениями. |
|
Подпрограмма ищет имя в таблице префикса, используемой для каталога SRV_CALL и NET_ROOT имен и преобразуется из базового указателя в содержащую структуру. |
|
Эта подпрограмма освобождает блокировку таблицы префикса, используемой для каталогизации SRV_CALL и имен NET_ROOT. Эта подпрограмма доступна только в Windows XP и Windows 2000. Эта подпрограмма используется внутри RDBSS и не должна использоваться сетевыми мини-перенаправлениями. |
Начиная с Windows Server 2003 подпрограммы, упомянутые в предыдущей таблице, кроме RxPrefixTableLookupName, заменяются макросами. Следующие макросы определяются, которые вызывают подпрограммы таблицы префикса с меньшим количеством параметров.
| Макрос | Описание |
|---|---|
RxAcquirePrefixTableLockExclusive (TABLE, WAIT) |
Этот макрос получает блокировку таблицы префикса в монопольном режиме для операций изменения. |
RxAcquirePrefixTableLockShared (TABLE, WAIT) |
Этот макрос получает блокировку таблицы префикса в общем режиме для операций подстановки. |
RxIsPrefixTableLockAcquired (TABLE) |
Этот макрос указывает, была ли блокировка таблицы префикса получена в монопольном или общем режиме. |
RxIsPrefixTableLockExclusive (TABLE) |
Этот макрос указывает, была ли блокировка таблицы префикса приобретена в монопольном режиме. |
RxReleasePrefixTableLock (TABLE) |
Этот макрос освобождает блокировку таблицы префикса. |