Структура FCB
На структуру блока управления файлами (FCB) указывает поле FsContext в объекте файла. Все операции, которые совместно используют FCB, относятся к одному и тому же файлу. К сожалению, серверы SMB реализованы сегодня таким образом, что имя может быть псевдонимом, чтобы два разных имени могли быть одинаковыми файлами. FCB является центром операций с файлами. Так как операции с тем же FCB фактически выполняются с тем же файлом, синхронизация основана на FCB, а не на объекте более высокого уровня.
При создании структуры FCB также создается соответствующая структура SRV_OPEN и FOBX. С заданной структурой FCB можно связать несколько SRV_OPEN структур, а с данной структурой SRV_OPEN связано несколько структур FOBX. В большинстве случаев одна SRV_OPEN структура связана с FCB, а число структур FOBX, связанных с данной SRV_OPEN структурой, равно 1. Чтобы улучшить пространственное расположение и поведение подкачки в таких случаях, выделение для структуры FCB также включает выделение для одной связанной структуры SRV_OPEN и FOBX.
RDBSS пытается выделить связанные структуры FCB, SRV_OPEN и FOBX вместе в памяти для улучшения поведения подкачки. RDBSS не выделяет структуры FCB и NET_ROOT вместе, так как структуры NET_ROOT не выстраиваются, но структуры FCB обычно выстраиваются (если они не являются файлами разбиения по страницам).
Структура FCB соответствует каждому открытому файлу и каталогу. Структура FCB разделена на две части:
Нестраничная часть, выделенная в нестраничном пуле
Выстраивная часть
Первый является NON_PAGED_FCB, а более поздний называется FCB.
FCB содержит указатель на соответствующую NON_PAGED_FCB часть. Обратный указатель поддерживается из NON_PAGED_FCB в FCB для отладки в проверенных сборках.
NON_PAGED_FCB содержит структуру специальных указателей, используемых диспетчером памяти и диспетчером кэша для управления объектами разделов. Обратите внимание, что значения для этих указателей обычно задаются за пределами файловой системы.
Структура FCB содержит следующее:
Структура FSRTL_COMMON_HEADER
Число подписей и ссылок
Имя и связанные сведения о таблице
Обратный указатель на связанную структуру NET_ROOT
Список связанных структур SRV_OPEN
Объект устройства
Любое дополнительное хранилище, запрошенное мини-перенаправлением сети или создателем структуры FCB