Функция FltTagFile (fltkernel.h)
FltTagFile задает тег повторного выражения для файла или каталога.
Синтаксис
NTSTATUS FLTAPI FltTagFile(
[in] PFLT_INSTANCE InitiatingInstance,
[in] PFILE_OBJECT FileObject,
[in] ULONG FileTag,
[in, optional] GUID *Guid,
[in] PVOID DataBuffer,
[in] USHORT DataBufferLength
);
Параметры
[in] InitiatingInstance
Указатель непрозрачного экземпляра для экземпляра драйвера минифильтра, который инициировал этот запрос ввода-вывода. Этот параметр является обязательным и не может иметь значение NULL.
[in] FileObject
Указатель на файловый объект для файла или каталога, для которого устанавливается точка повторного выполнения. Объект файла должен быть открыт для FILE_WRITE_DATA доступа. Этот параметр является обязательным и не может иметь значение NULL.
[in] FileTag
Тег точки повторного выражения. При изменении существующего тега репараметра тег, указанный в этом параметре, должен соответствовать тегу точки повторного изменения.
[in, optional] Guid
GUID, однозначно определяющий тип точки повторного определения. Если FileTag не является тегом Майкрософт, этот параметр является обязательным и не может иметь значение NULL. При изменении существующего тега репараметра GUID, указанный в этом параметре, должен соответствовать GUID точки повторной аналитики для изменения.
[in] DataBuffer
Указатель на буфер, содержащий определяемые пользователем данные для точки повторного анализа.
[in] DataBufferLength
Размер буфера, на который указывает DataBuffer , в байтах.
Возвращаемое значение
FltTagFile возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих значений:
Код возврата | Описание |
---|---|
|
FltTagFileEx обнаружил сбой выделения пула. Это код ошибки. |
|
Файловая система не поддерживает точки повторного анализа. Это код ошибки. |
|
FileTag не является тегом Майкрософт, а для guid задано значение NULL. Это код ошибки. |
|
Тег reparse, указанный вызывающим объектом, не совпадает с тегом точки повторного обработки, которую необходимо изменить. Это код ошибки. |
|
Guid повторного обработки, указанный вызывающим объектом, не совпадает с GUID точки повторного обработки, которую необходимо изменить. Это код ошибки. |
Комментарии
Драйверы минифильтра должны использовать FltTagFile вместо FSCTL_SET_REPARSE_POINT для задания точки повторного анализа.
Не все файловые системы поддерживают точки повторного анализа. Файловая система NTFS поддерживает их; в файловой системе FAT нет. Драйверы мини-фильтра могут определить, поддерживает ли файловая система точки повторного анализа, вызывая FltQueryVolumeInformation, указывая FileFsAttributeInformation в параметре FsInformation и проверяя флаг бита FILE_SUPPORTS_REPARSE_POINTS в возвращаемой структуре FILE_FS_ATTRIBUTE_INFORMATION .
Чтобы удалить существующую точку повторного обработки, вызовите FltUntagFile.
Дополнительные сведения о точках повторного анализа см. в документации по Microsoft Windows SDK.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | fltkernel.h (включая Fltkernel.h) |
Библиотека | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | PASSIVE_LEVEL |