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 文档。

要求

要求 价值
标头 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