FILE_NOTIFY_FULL_INFORMATION 结构 (ntifs.h)

当 FILE_NOTIFY_FULL_INFORMATION DIRECTORY_NOTIFY_INFORMATION_CLASS为 DirectoryNotifyFullInformation 时,将返回一个IRP_MJ_DIRECTORY_CONTROL结构,以响应具有IRP_MN_NOTIFY_CHANGE_DIRECTORY次要函数代码的IRP_MJ_DIRECTORY_CONTROL请求。

语法

typedef struct _FILE_NOTIFY_FULL_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;
  USHORT        FileNameLength;
  UCHAR         FileNameFlags;
  UCHAR         Reserved;
  WCHAR         FileName[1];
} FILE_NOTIFY_FULL_INFORMATION, *PFILE_NOTIFY_FULL_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 字符。

FileNameFlags

指定返回的文件名类型的标志(如果已知)。 如果以下两个标志均未设置,则文件名的类型是未知的。 如果设置了以下两个标志,则文件名将充当长名称和短名称 (NTFS 名称和 DOS 名称) 长/短名称对。

标志
FILE_NAME_NTFS (0x01) 文件名是长名称 (NTFS 名称) 长/短名称对。
FILE_NAME_DOS (0x02) 文件名是长/短名称对 (DOS 名称) 的短名称。

Reserved

预留给系统使用。

FileName[1]

一个长度可变的字段,其中包含相对于目录句柄的文件名。 文件名采用 Unicode 字符格式,不以 null 结尾。

要求

要求
最低受支持的客户端 Windows 11 版本 22H2
标头 ntifs.h

另请参阅

DIRECTORY_NOTIFY_INFORMATION_CLASS

IRP_MJ_DIRECTORY_CONTROL

ZwNotifyChangeDirectoryFileEx