NtQueryInformationByName 函数 (ntifs.h)

NtQueryInformationByName 返回所请求的有关文件名指定的文件的信息。

语法

__kernel_entry NTSYSCALLAPI NTSTATUS NtQueryInformationByName(
  [in]  POBJECT_ATTRIBUTES     ObjectAttributes,
  [out] PIO_STATUS_BLOCK       IoStatusBlock,
  [out] PVOID                  FileInformation,
  [in]  ULONG                  Length,
  [in]  FILE_INFORMATION_CLASS FileInformationClass
);

参数

[in] ObjectAttributes

指向包含文件属性(包括文件名)的 OBJECT_ATTRIBUTES 结构的指针。

[out] IoStatusBlock

指向包含调用方 I/O 状态 的IO_STATUS_BLOCK 结构。

[out] FileInformation

指向调用方提供的缓冲区的指针,该缓冲区将返回所请求的有关文件的信息。 缓冲区的结构由 FileInformationClass 参数确定。

[in] Length

FileInformation 指向的缓冲区的长度(以字节为单位)。

[in] FileInformationClass

一个FILE_INFORMATION_CLASS值,该值标识要在 FileInformation 指向的缓冲区中返回的文件信息的类型。 FileInformationClass 可以是以下值之一。

FILE_INFORMATION_CLASS值 要返回的信息类型
FileStatInformation (68) FILE_STAT_INFORMATION。 从 Windows 10 版本 1709 开始可用。
FileStatLxInformation (70) FILE_STAT_LX_INFORMATION。 从 2018 年 4 月更新Windows 10开始可用。
FileCaseSensitiveInformation (71) FILE_CASE_SENSITIVE_INFORMATION。 从 2018 年 4 月更新Windows 10开始可用。
FileStatBasicInformation (77) FILE_STAT_BASIC_INFORMATION。 从Windows 11版本 26048 开始可用。

返回值

NtQueryInformationByName 在成功完成后返回STATUS_SUCCESS;否则,它将返回错误代码,例如以下代码之一。

错误代码 含义
STATUS_INVALID_PARAMETER FileInformationClass 参数包含无效值。
STATUS_INFO_LENGTH_MISMATCH 由 Length 指定的缓冲区大小不够大,无法包含请求的信息。

注解

NtQueryInformationByName 查询并返回有关该文件的请求信息。 它无需打开实际文件即可执行此操作,因此它比 NtQueryInformationFile 更高效,NtQueryInformationFile 需要打开文件 (,后续文件关闭) 。

NtQueryInformationByName 的调用方必须在 IRQL = PASSIVE_LEVEL 运行,并且启用了特殊内核 APC

要求

要求
最低受支持的客户端 Windows 10 版本 1703
标头 ntifs.h
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (请参阅备注部分)

另请参阅

FILE_CASE_SENSITIVE_INFORMATION

FILE_INFORMATION_CLASS

FILE_STAT_INFORMATION

FILE_STAT_LX_INFORMATION

IO_STATUS_BLOCK

NtQueryInformationFile

OBJECT_ATTRIBUTES