FILE_NOTIFY_INFORMATION 结构 (ntifs.h)
FILE_NOTIFY_INFORMATION 描述对目录的更改。 当 DIRECTORY_NOTIFY_INFORMATION_CLASS 为 DirectoryNotifyInformation 时,它将返回用于响应具有 IRP_MN_NOTIFY_CHANGE_DIRECTORY 次要函数代码的 IRP_MJ_DIRECTORY_CONTROL 请求。
语法
typedef struct _FILE_NOTIFY_INFORMATION {
ULONG NextEntryOffset;
ULONG Action;
ULONG FileNameLength;
WCHAR FileName[1];
} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;
成员
NextEntryOffset
必须跳过才能访问下一条记录的字节数。 值为零表示这是最后一条记录。
Action
发生的更改的类型。 此成员可以是以下值之一。
值 | 含义 |
---|---|
FILE_ACTION_ADDED (0x00000001) | 文件已添加到目录。 |
FILE_ACTION_REMOVED (0x00000002) | 文件已从目录中删除。 |
FILE_ACTION_MODIFIED (0x00000003) | 文件已修改。 这可以是时间戳或属性的更改。 |
FILE_ACTION_RENAMED_OLD_NAME (0x00000004) | 文件已重命名,这是旧名称。 |
FILE_ACTION_RENAMED_NEW_NAME (0x00000005) | 文件已重命名,这是新名称。 |
FILE_ACTION_ADDED_STREAM (0x00000006) | 已将命名流添加到文件。 |
FILE_ACTION_REMOVED_STREAM (0x00000007) | 已从文件中删除命名流。 |
FILE_ACTION_MODIFIED_STREAM (0x00000008) | 已修改命名流。 修改可以是对命名流的数据或属性的更改。 |
FILE_ACTION_REMOVED_BY_DELETE (0x00000009) | 删除了对象 ID,因为引用的对象 ID 的文件已被删除。 仅当受监视的目录是特殊目录“$Extend$ObjId:$O:$INDEX_ALLOCATION”时,才会发送此通知。 |
FILE_ACTION_ID_NOT_TUNNELLED (0x0000000A) | 尝试将对象 ID 信息隧道传送到正在创建或重命名的文件失败,因为同一卷上的另一个文件正在使用对象 ID。 仅当受监视的目录是特殊目录“$Extend$ObjId:$O:$INDEX_ALLOCATION”时,才会发送此通知。 |
FILE_ACTION_TUNNELLED_ID_COLLISION (0x0000000B) | 尝试将对象 ID 信息隧道传送到正在重命名的文件失败,因为该文件已具有对象 ID。 仅当受监视的目录是特殊目录“$Extend$ObjId:$O:$INDEX_ALLOCATION”时,才会发送此通知。 |
FileNameLength
记录的文件名部分的大小(以字节为单位)。 此值不包括终止 null 字符。
FileName[1]
一个长度可变的字段,其中包含相对于目录句柄的文件名。 文件名采用 Unicode 字符格式,不以 null 结尾。
如果文件同时具有短名称和长名称,则只返回其中一个名称,但未指定哪个名称。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 |
标头 | ntifs.h |