winioctl.h) (MARK_HANDLE_INFO32 结构

包含用于标记指定文件或目录的信息,以及其更新序列号 (USN) 包含有关更改的数据的更改日记记录。 它仅为 64 位代码定义,存在是为了解释 32 位代码发送 MARK_HANDLE_INFO结构 。 它由 FSCTL_MARK_HANDLE IOCTL 控件代码使用。

语法

typedef struct _MARK_HANDLE_INFO32 {
  union {
    DWORD UsnSourceInfo;
    DWORD CopyNumber;
  } DUMMYUNIONNAME;
  DWORD  UsnSourceInfo;
  UINT32 VolumeHandle;
  DWORD  HandleInfo;
} MARK_HANDLE_INFO32, *PMARK_HANDLE_INFO32;

成员

DUMMYUNIONNAME

DUMMYUNIONNAME.UsnSourceInfo

DUMMYUNIONNAME.CopyNumber

UsnSourceInfo

所做更改的类型。

操作不会从创建该文件或目录的应用程序的角度在外部修改该文件或目录。

当线程写入新的 USN 记录时,仅当线程也设置了这些标志时,上一条记录中的源信息标志才继续存在。 因此,源信息结构允许应用程序筛选出仅由已知源(如防病毒筛选器)设置的 USN 记录。

定义了以下值。

含义
USN_SOURCE_DATA_MANAGEMENT
0x00000001
操作提供有关操作系统对文件或目录所做的更改的信息。

一个典型用途是远程存储将数据从外部存储移动到本地存储。 远程存储是分层存储管理软件。 这种移动通常至少会将 USN_REASON_DATA_OVERWRITE 标志添加到 USN 记录。 但是,从用户的角度来看,数据并未发生更改。 通过 记下 保存记录的 USN_RECORD 结构的 SourceInfo 成员中的 USN_SOURCE_DATA_MANAGEMENT ,可以确定尽管对项执行了写入操作,但数据并未更改。

USN_SOURCE_AUXILIARY_DATA
0x00000002
操作将专用数据流添加到文件或目录。

例如,添加校验和信息的病毒检测器。 当病毒检测器修改项目时,系统会生成 USN 记录。 USN_SOURCE_AUXILIARY_DATA 指示修改未更改应用程序数据。

USN_SOURCE_REPLICATION_MANAGEMENT
0x00000004
操作创建或更新复制文件的内容。

例如,文件复制服务在复制目录中创建或更新文件时设置此标志。

VolumeHandle

文件或目录所在的卷的卷句柄。 有关获取卷句柄的详细信息,请参阅“备注”部分。

需要此句柄来检查此操作的权限。

调用方必须具有 SE_MANAGE_VOLUME_NAME 权限。 有关详细信息,请参阅 特权

HandleInfo

一个标志,指定有关 由 VolumeHandle 成员中的句柄值标识的文件或目录的其他信息。

含义
MARK_HANDLE_PROTECT_CLUSTERS
0x00000001
在关闭句柄之前,该文件被标记为无法进行碎片整理。
MARK_HANDLE_TXF_SYSTEM_LOG
0x00000004
在关闭句柄之前,该文件被标记为无法进行碎片整理。
MARK_HANDLE_NOT_TXF_SYSTEM_LOG
0x00000008
在关闭句柄之前,该文件被标记为无法进行碎片整理。
MARK_HANDLE_REALTIME
0x00000020
无论实际文件类型如何,都会将文件标记为实时读取行为。 必须打开标有此标志的文件才能进行 无缓冲区 I/O
MARK_HANDLE_NOT_REALTIME
0x00000040
以前使用 MARK_HANDLE_REALTIME 标志标记为实时读取行为的文件可以使用此标志取消标记,从而删除实时行为。 必须打开标有此标志的文件才能进行 无缓冲区 I/O

要求

   
最低受支持的客户端 仅Windows 8 (64 位) [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 [仅限桌面应用]
标头 winioctl.h (包括 Windows.h)