Описанная технология не только позволяет получить список изменившихся файлов и каталогов, но и указывает причину внесения изменений. Существует три типа изменений.
Изменения, внесенные приложениями.
Изменения, внесенные приложениями управления подсистемой хранения данных (например, системой управления иерархическим хранилищем) и приложениями репликации.
Изменения, внесенные приложениями, которые создают вспомогательные данные на основе первичных данных, содержащихся в файле. Примером может служить программа обработки изображений, создающая уменьшенную копию изображения для предварительного просмотра.
Метод определения причины изменений базируется на том, что приложения могут выбирать и игнорировать изменения определенного рода.
Приложения могут запускать службу журнала изменений, передав параметр FSCTL_CREATE_USN_JOURNALфункции DeviceloControl.Для чтения записей USN необходимо воспользоваться параметром FSCTL_QUERY_USN_ JOURNAL.
6.5.14 Переименование потоков NTFS
Файловая система NTFS в Windows NT обладает возможностью применять несколько потоков данных одного файла. В качестве примера программы, использующей несколько потоков данных, можно указать сервер Windows NT Macintosh. Потоки создаются с помощью функции CreateFile и удаляются функцией DeleteFile. Обратите внимание: при копировании файлов с дополнительными потоками на том с файловой системой FAT, которая не поддерживает использования Нескольких потоков, именованные потоки данных теряются.
До появления Windows 2000 не существовало способа переименования потока данных после его создания. Можно было создать новый файл с новым именованным потоком данных и скопировать содержимое старого файла в новый, включая содержимое старого именованного потока данных, но этот подход весьма неэффективен. Файловая система NTFS в Windows 2000 поддерживает функции, позволяющие приложениям переименовывать потоки данных.
6.5.15 Идентификаторы объектов и отслеживание ссылок
Операционная система Windows 2000 поддерживает отслеживание ссылок. Ссылки могут быть ярлыками для файлов или объектами OLE (например, для документов Excel или PowerPoint), встроенными в файл. Приложение может отслеживать ссылки, даже если источник ссылки переместится в другое место. Примеры такого переноса представлены далее.
Перенос документа, являющегося источником ссылки, в пределах одного тома Windows NT.
Перенос документа, являющегося источником ссылки, между томами в пределах одного сервера под управлением Windows NT.
Перенос документа, являющегося источником ссылки, с одного сервера под управлением Windows NT на другой сервер Windows NT в пределах одного домена.
■ Перенос целого тома, содержащего источник ссылки, с одного сервера под управлением Windows NT на другой сервер в пределах одного домена.
Переименование сервера под управлением Windows NT, на котором хранится источник ссылки.
Переименование документа, который является источником ссылки.
Любая комбинация перечисленных выше действий.
Все эти возможности основаны на требовании к размещению источника и точки назначения ссылки на томах с NTFS под управлением Windows 2000.
Каждый файл в Windows 2000 (и более новых версиях Windows NT) имеет необязательный уникальный идентификатор объекта (16-разрядная структура $0BJECT_1D, описанная в разделе 6.5.3). Для отслеживания файла приложение ссылается на файл по уникальному идентификатору объекта. Если ссылка больше не указывает на необходимый файл (когда файл был перемещен), операционной системой вызывается служба пользовательского режима для отслеживания ссылок. Служба методом проб и ошибок пытается найти необходимый файл, воспользовавшись идентификатором объекта.
Для программного использование идентификаторов объектов и отслеживания ссылок доступны перечисленные ниже параметры функций API.
Чтобы создать идентификатор объекта для файла или каталога, приложение должно воспользоваться параметром FSCTL_CREATE_OR_GET_ 0BJECT_ID функции управления файловой системой.
Чтобы удалить идентификатор объекта для файла или каталога, приложение должно воспользоваться параметром FSCTL_DELETE_OR_GET_ 0BJECT_ID функции управления файловой системой.
Чтобы запросить идентификатор объекта для файла или каталога, приложение должно воспользоваться параметром FSCTL_CREATE_OR_GET_ 0BJECT_ID функции управления файловой системой.
6.5.16 Улучшения утилиты CHKDSK
В Windows 2000 файловой системе NTFS требуется меньшее количество запусков утилиты CHKDSK, а также сокращено время работы этой утилиты. Безусловно, эффективность улучшений связана с размером тома и конкретным типом повреждения. Для томов с миллионами файлов ускорение на порядок работы утилиты CHKDSK более чем вероятно.
Читать дальше