fltTagFileEx 函数 (fltkernel.h)

FltTagFileEx 设置文件或目录上的重新分析点。

语法

NTSTATUS FLTAPI FltTagFileEx(
  PFLT_INSTANCE InitiatingInstance,
  PFILE_OBJECT  FileObject,
  ULONG         FileTag,
  GUID          *Guid,
  PVOID         DataBuffer,
  USHORT        DataBufferLength,
  ULONG         ExistingFileTag,
  GUID          *ExistingGuid,
  ULONG         Flags
);

参数

InitiatingInstance

指向发起此 I/O 请求的微筛选器驱动程序实例的不透明指针。 此参数是必需的,不能为 NULL

FileObject

指向要设置重分析点的文件或目录的文件对象的指针。 必须打开文件对象才能FILE_WRITE_DATA访问。 此参数是必需的,不能为 NULL

FileTag

重分析点标记。 可以是 ntifs.h 中定义的IO_REPARSE_TAG_XXX 值之一。

Guid

唯一标识重分析点的 GUID。 如果 FileTag 是非 Microsoft 标记,则此参数是必需的,不能为 NULL。 如果要修改现有的重新分析标记,则此参数中指定的 GUID 必须与要修改的重新分析点的 GUID 匹配。

DataBuffer

指向缓冲区的指针,该缓冲区包含重新分析点的用户定义数据。

DataBufferLength

DataBuffer 指向的缓冲区的大小(以字节为单位)。

ExistingFileTag

如果必须替换标记,则文件上的现有标记。 此参数必须设置为零,才能在还没有重分析标记的文件上设置一个重分析标记。

ExistingGuid

唯一标识现有重分析点的 GUID。 如果 ExistingFileTag 是非 Microsoft 标记且不为零,则此参数不得为 NULL

Flags

指定 ntifs.h 中定义的 REPARSE_DATA_BUFFER_EX_XXX 标志。

返回值

此函数返回STATUS_SUCCESS或相应的 NTSTATUS 值,如下所示:

返回代码 说明
STATUS_IO_REPARSE_TAG_MISMATCH ExistingFileTag 中指定的标记值与现有标记值不匹配。
STATUS_REPARSE_ATTRIBUTE_CONFLICT 对于具有非 Microsoft 标记的现有重分析点, ExistingFileTag 与现有标记值匹配,但 Guid 与现有 Guid 不匹配。

注解

微筛选器驱动程序应使用 FltTagFileEx 而不是 FSCTL_SET_REPARSE_POINT_EX 来设置重新分析点。

并非所有文件系统都支持重新分析点;例如,NTFS 和 ReFS 文件系统支持它们,但 FAT 文件系统不支持。 微筛选器驱动程序可以通过调用 FltQueryVolumeInformation、为 FsInformation 参数指定 FileFsAttributeInformation 以及检查返回的 FILE_FS_ATTRIBUTE_INFORMATION 结构中的 FILE_SUPPORTS_REPARSE_POINTS 位标志来确定文件系统是否支持重新分析点。

若要删除现有的重新分析点,请调用 FltUntagFile

有关重新分析点的详细信息,请参阅Microsoft Windows SDK文档。

要求

要求
Header fltkernel.h

另请参阅

FILE_FS_ATTRIBUTE_INFORMATION

FLT_TAG_DATA_BUFFER

FSCTL_DELETE_REPARSE_POINT

FSCTL_GET_REPARSE_POINT

FSCTL_SET_REPARSE_POINT

FltFsControlFile

FltQueryVolumeInformation

FltTagFile

FltUntagFile

IsReparseTagMicrosoft

IsReparseTagNameSurrogate

REPARSE_DATA_BUFFER

REPARSE_GUID_DATA_BUFFER