Файловая система NTFS
Файловая система, например NTFS.
Подсистема ввода-вывода и Win32 API.
Утилиты и инструменты.
Компания Microsoft провела необходимую работу во всех трех областях; таким образом, новая файловая система вполне может содержать точки повторной обработки.
Точки повторной обработки – это объект каталога или файла NTFS. Приложение может создавать их, управлять ими и удалять их с помощью функций Win32 API в целом и функций CreateFile, ReadFile и WriteFile в частности. Набор функций Win32 API предоставляет приложению возможность создания определенных пользователем атрибутов для файлов и каталогов. Точки повторной обработки можно воспринимать как определеннее пользователем атрибуты, которые обрабатываются особым образом. Это подразумевает обеспечение уникальности некоторых фрагментов объекта атрибута
и обработку в подсистеме ввода-вывода. Независимый поставщик программного обеспечения должен создать:
Рис.
6.11. Тег точки повторной обработки
ш утилиты пользовательского режима, позволяющие создавать и удалять точки повторной обработки, а также управлять ими;
драйвер фильтрации файловой системы, который реализует функции, относящиеся к точкам повторной обработки.
Точки повторной обработки состоят из компонентов, описанных ниже.
Уникальный тег размером 32 бит, назначаемый Microsoft. Независимые поставщики программного обеспечения могут запросить назначение уникального тега. Тег точки повторной обработки обладает хорошо определенной структурой (рис. 6.11).
Флаг М указывает, предназначен ли тег для драйвера устройства Microsoft.
Флаг L указывает, должен ли драйвер использовать большие временные задержки при получении первого байта данных. Примером служит система HSM, в которой получение данных из удаленного источника связано с длительными задержками.
Флаг N указывает, является ли файл или каталог псевдонимом другого файла или каталога.
Зарезервированные флаги.
Фактическое значение 16-разрядного тега.
Двоичный объект данных размером 16 Кбайт. Файловая система NTFS делает этот объект доступным драйверу устройства стороннего разработчика в качестве элемента операции ввода-вывода, проводимой с точкой повторной обработки.
Рис. 6.12.
Архитектура точек повторной обработки
На рис. С. 12 показана последовательность операций и реализация точек повторной обработки. Предположим, у пользователя есть необходимые права для выполнения запрошенной операции. Чтобы не усложнять рис. 6.12, на нем представлен только один драйвер фильтрации файловой системы.
Далее приведена последовательность действий для реализации функций точек повторной обработки, которые показаны на рис. 6.12.
С помощью подсистемы Win32 приложение запрашивает открытие файла.
После определенных проверок подсистема Win32 направляет запрос выполняемому модулю NT.
Диспетчер ввода-вывода Windows NT создает пакет запроса ввода-вывода (IRP) с запросом на открытие (IRP_MJ_OPEN). Обычно этот запрос переходит драйверу NTFS. Так как в процессе участвует драйвер фильтрации, например драйве]) фильтрации точки повторной обработки, диспетчер ввода-вывода отправляет запрос драйверу фильтрации, предоставляя ему возможность предварительной обработки пакета IRP до того, как пакет попадет на обработку драйверу NTFS.
Драйвер фильтрации точки повторной обработки указывает процедуру завершения в своем фрагменте пакета IRP и отправляет пакет драйверу NTFS.
Пакет IRP достигает файловой системы. Она принимает запрос IRP_MJ_ OPEN,
находит файл или каталог и отмечает тег точки повторной обработки, который связан с этим каталогом или файлом. Файловая система NTFS размещает тег точки повторной обработки и данные в пакете IRP и неудачно завершает обработку пакета IRP с возвратом специального кода ошибки.