FILE_NOTIFY_EXTENDED_INFORMATION结构 (ntifs.h)
当 DIRECTORY_NOTIFY_INFORMATION_CLASS 为 DirectoryNotifyExtendedInformation 时,FILE_NOTIFY_EXTENDED_INFORMATION 提供有关 IRP_MJ_DIRECTORY_CONTROL 请求响应 IRP_MN_NOTIFY_CHANGE_DIRECTORY 次要函数代码的目录更改的信息。
语法
typedef struct _FILE_NOTIFY_EXTENDED_INFORMATION {
ULONG NextEntryOffset;
ULONG Action;
LARGE_INTEGER CreationTime;
LARGE_INTEGER LastModificationTime;
LARGE_INTEGER LastChangeTime;
LARGE_INTEGER LastAccessTime;
LARGE_INTEGER AllocatedLength;
LARGE_INTEGER FileSize;
ULONG FileAttributes;
union {
ULONG ReparsePointTag;
ULONG EaSize;
} DUMMYUNIONNAME;
LARGE_INTEGER FileId;
LARGE_INTEGER ParentFileId;
ULONG FileNameLength;
WCHAR FileName[1];
} FILE_NOTIFY_EXTENDED_INFORMATION, *PFILE_NOTIFY_EXTENDED_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) | 目录已重命名,这是新名称。 |
CreationTime
创建目录或文件的日期和时间,并将其添加到文件系统。
LastModificationTime
上次在文件系统中修改目录或文件内容的日期和时间。
LastChangeTime
上次在文件系统中更改目录或文件的元数据或内容的日期和时间。
LastAccessTime
上次在文件系统中访问目录或文件的日期和时间。
AllocatedLength
文件的分配大小(以字节为单位)。
FileSize
目录或文件的新大小(以字节为单位)或旧大小(如果大小不变)。
FileAttributes
文件属性,可以是下列任何有效组合:
- FILE_ATTRIBUTE_READONLY
- FILE_ATTRIBUTE_HIDDEN
- FILE_ATTRIBUTE_SYSTEM
- FILE_ATTRIBUTE_DIRECTORY
- FILE_ATTRIBUTE_ARCHIVE
- FILE_ATTRIBUTE_NORMAL
- FILE_ATTRIBUTE_TEMPORARY
- FILE_ATTRIBUTE_COMPRESSED
DUMMYUNIONNAME
DUMMYUNIONNAME.ReparsePointTag
目录或文件的重新分析点的标识符标记。
DUMMYUNIONNAME.EaSize
文件的扩展属性 (EA) 的组合长度(以字节为单位)。
FileId
目录或文件的标识符。 此数字由文件系统生成并分配给文件。
ParentFileId
文件的父目录的标识符。
FileNameLength
记录的文件名部分的大小(以字节为单位)。 此值不包括终止 null 字符。
FileName[1]
包含相对于目录句柄的文件名的可变长度字段。 文件名采用 Unicode 字符格式,不以 null 结尾。
要求
要求 | 价值 |
---|---|
标头 | ntifs.h |