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 (请参阅备注部分) |