Функция 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, например одно из следующих:
Возвращаемый код | Описание |
---|---|
|
FltTagFileEx возникла ошибка выделения пула. Это код ошибки. |
|
Файловая система не поддерживает точки повторного анализа. Это код ошибки. |
|
FileTag не является тегом Майкрософт, а ЗНАЧЕНИЕ NULL было указано для Guid. Это код ошибки. |
|
Тег reparse, указанный вызывающим элементом, не совпадал с тегом точки повторного изменения. Это код ошибки. |
|
Идентификатор 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 |