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 |