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


Отслеживание контекста Per-File в устаревшем драйвере фильтра файловой системы

Примечание

Для оптимальной надежности и производительности используйте драйверы минифильтров файловой системы с поддержкой диспетчера фильтров вместо устаревших драйверов фильтров файловой системы. Сведения о переносе устаревшего драйвера в драйвер минифильтра см. в статье Рекомендации по переносу устаревших драйверов фильтров.

Устаревший драйвер фильтра файловой системы может записывать сведения о контексте для файла, связывая объект FSRTL_PER_FILE_CONTEXT с пользовательской структурой контекстной информации.

Примечание

Не все файловые системы поддерживают объекты контекста для каждого файла. Чтобы узнать, связан ли файл с файловой системой, которая их поддерживает, используйте макрос FsRtlSupportsPerFileContexts .

Используйте макрос FsRtlInitPerFileContext для инициализации объекта FSRTL_PER_FILE_CONTEXT. Затем используйте подпрограмму FsRtlInsertPerFileContext , чтобы связать файл с произвольным объектом контекста.

Используйте макрос FsRtlGetPerFileContextPointer , чтобы получить указатель, используемый пакетом библиотеки времени выполнения файловой системы (FSRTL) для отслеживания контекстов файлов.

Драйвер фильтра может использовать подпрограмму FsRtlLookupPerFileContext для поиска объекта контекста файла, связанного с файлом. Подпрограмма может указать владельца структуры или экземпляра структуры, чтобы сузить поиск.

Драйвер фильтра может удалить объект контекста с помощью FsRtlRemovePerFileContext. Подпрограмма может указать владельца структуры или экземпляра структуры, чтобы сузить поиск.

Примечание

Используйте подпрограмму FsRtlRemovePerFileContext только для удаления объектов контекста, пока файл еще открыт. Не путайте его с FsRtlTeardownPerFileContexts.

Файловые системы вызывают FsRtlTeardownPerFileContexts , чтобы освободить все контексты фильтров, которые по-прежнему связаны со структурой блоков управления для каждого файла (FCB), которые они удаляют. Подпрограмма FsRtlTeardownPerFileContexts вызывает подпрограмму FreeCallback , указанную в объекте FSRTL_PER_FILE_CONTEXT для каждого контекста фильтра.