Функция 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, например одно из следующих значений:

Код возврата Описание
STATUS_INSUFFICIENT_RESOURCES
FltTagFileEx обнаружил сбой выделения пула. Это код ошибки.
STATUS_INVALID_DEVICE_REQUEST
Файловая система не поддерживает точки повторного анализа. Это код ошибки.
STATUS_INVALID_PARAMETER
FileTag не является тегом Майкрософт, а для guid задано значение NULL. Это код ошибки.
STATUS_IO_REPARSE_TAG_MISMATCH
Тег reparse, указанный вызывающим объектом, не совпадает с тегом точки повторного обработки, которую необходимо изменить. Это код ошибки.
STATUS_REPARSE_ATTRIBUTE_CONFLICT
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

См. также раздел

FILE_FS_ATTRIBUTE_INFORMATION

FLT_TAG_DATA_BUFFER

FSCTL_DELETE_REPARSE_POINT

FSCTL_GET_REPARSE_POINT

FSCTL_SET_REPARSE_POINT

FltFsControlFile

FltQueryVolumeInformation

FltTagFileEx

FltUntagFile

IsReparseTagMicrosoft

IsReparseTagNameSurrogate

REPARSE_DATA_BUFFER

REPARSE_GUID_DATA_BUFFER