Поделиться через


Структура NET_ROOT

Структура 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 предотвращает дублирование первого шага.