ZwQueryInformationByName 函数 (wdm.h)
ZwQueryInformationByName 返回所请求的有关文件名指定的文件的信息。
语法
NTSYSAPI NTSTATUS ZwQueryInformationByName(
[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开始可用。 |
返回值
成功完成后,ZwQueryInformationByName 返回STATUS_SUCCESS;否则,它将返回错误代码,例如以下代码之一。
错误代码 | 含义 |
---|---|
STATUS_INVALID_PARAMETER | FileInformationClass 参数包含无效值。 |
STATUS_INFO_LENGTH_MISMATCH | 由 Length 指定的缓冲区大小不够大,无法包含请求的信息。 |
注解
ZwQueryInformationByName 查询并返回所请求的有关文件的信息。 它无需打开实际文件即可执行此操作,因此比 ZwQueryInformationFile 更高效,ZwQueryInformationFile 需要打开文件 (,后续文件) 关闭。
ZwQueryInformationByName 的调用方必须在 IRQL = PASSIVE_LEVEL 运行,并且启用了特殊内核 APC。
要求
要求 | 值 |
---|---|
Header | wdm.h |
IRQL | PASSIVE_LEVEL (请参阅备注部分) |