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 值,例如以下值之一:
返回代码 | 说明 |
---|---|
|
FltTagFileEx 遇到池分配失败。 这是错误代码。 |
|
文件系统不支持重新分析点。 这是错误代码。 |
|
FileTag 不是 Microsoft 标记,并且为 Guid 指定了 NULL。 这是错误代码。 |
|
调用方指定的重分析标记与要修改的重新分析点的标记不匹配。 这是错误代码。 |
|
调用方指定的重新分析 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 |