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


Функция 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

Тег точки reparse. Если существующий тег повторного изменения, тег, указанный в этом параметре, должен соответствовать тегу точки повторного изменения.

[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 не является тегом Майкрософт, а ЗНАЧЕНИЕ NULL было указано для Guid. Это код ошибки.
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.

Дополнительные сведения о точках повторного анализа см. в документации по пакету SDK для Microsoft Windows.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка fltkernel.h (include 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