Структура NET_ROOT

Чистая корневая структура, NET_ROOT, содержит сведения для каждого конкретного сетевого сервера\общего подключения, поддерживаемого мини-перенаправлением сети.

NET_ROOT — это то, что RDBSS и драйвер мини-перенаправления сети хотят иметь дело, а не сервер. Соответственно, RDBSS обычно создает и открывает NET_ROOT структуру и вызывает драйвер мини-перенаправления сети, отвечающий за открытие сервера. Ожидается, что драйвер мини-перенаправления сети заполняет соответствующие поля в переданной NET_ROOT структуре.

Список структур NET_ROOT поддерживается RDBSS для каждой SRV_CALL. Каждая NET_ROOT структура имеет несколько элементов, общих с другими структурами RDBSS, а также элементами, уникальными для NET_ROOT структуры. Подпрограммы RDBSS, управляющие структурами NET_ROOT, изменяют только следующие элементы:

  • Число подписей и ссылок

  • Имя и связанные сведения о таблице

  • Указатель на связанную структуру SRV_CALL

  • Сведения о размере различных подструктур

  • Таблица подстановки связанных структур FCB

  • Независимо от того, что дополнительное хранилище запрашивается мини-перенаправлением сети (или создатель структуры данных NET_ROOT)

Структура NET_ROOT также содержит список RX_CONTEXT структур, ожидающих завершения перехода NET_ROOT до возобновления обработки IRP. Обычно это происходит, когда одновременные запросы направляются на сервер. Один из этих запросов инициируется, а другие запросы помещаются в очередь. Дополнительное пространство, зарезервированное для использования мини-перенаправлением сети, начинается в конце известной структуры данных NET_ROOT, чтобы мини-перенаправление сети просто ссылалось на это дополнительное пространство с помощью полей контекста из файла включения.

Завершение структуры NET_ROOT состоит из двух частей:

  1. Уничтожение связи со всеми V_NET_ROOTS

  2. Освобождение памяти

Между этими двумя действиями может возникнуть задержка, а поле в структуре NET_ROOT предотвращает дублирование первого шага.