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)
Library 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