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

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

[in] FileObject

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

[in] FileTag

重新分析点标记。 如果正在修改现有的重新分析标记,则此参数中指定的标记必须与要修改的重新分析点的标记匹配。

[in, optional] Guid

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

[in] DataBuffer

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

[in] DataBufferLength

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

返回值

FltTagFile 返回STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:

返回代码 描述
STATUS_INSUFFICIENT_RESOURCES
FltTagFileEx 遇到池分配失败。 这是一个错误代码。
STATUS_INVALID_DEVICE_REQUEST
文件系统不支持重新分析点。 这是一个错误代码。
STATUS_INVALID_PARAMETER
FileTag 不是Microsoft标记,Guid指定了 NULL。 这是一个错误代码。
STATUS_IO_REPARSE_TAG_MISMATCH
调用方指定的重新分析标记与要修改的重新分析点的标记不匹配。 这是一个错误代码。
STATUS_REPARSE_ATTRIBUTE_CONFLICT
调用方指定的重新分析 GUID 与要修改的重新分析点的 GUID 不匹配。 这是一个错误代码。

言论

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

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

若要删除现有重新分析点,请调用 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