IoQueryFullDriverPath 函数 (ntddk.h)

IoQueryFullDriverPath 例程检索为指定驱动程序对象加载的二进制文件的完整路径名称。 从 Windows 10 版本 1709 开始,调用方可以查询不是自己的驱动程序对象,只要他们使用适当的同步来确保DRIVER_OBJECT结构在调用期间保持有效。

语法

NTSTATUS IoQueryFullDriverPath(
  [in]  PDRIVER_OBJECT  DriverObject,
  [out] PUNICODE_STRING FullPath
);

参数

[in] DriverObject

指向 DRIVER_OBJECT 结构的指针。 如果在运行版本 1709 之前的 Windows 10 版本的计算机上调用 IoQueryFullDriverPath,则此结构必须是调用驱动程序的驱动程序对象。

[out] FullPath

指向调用方分配 的UNICODE_STRING 结构的指针。 成功返回后,此结构包含路径名称。

返回值

如果调用成功提取路径名称,IoQueryFullDriverPath 将返回STATUS_SUCCESS。 可能的错误返回值包括以下状态代码。

返回代码 说明
STATUS_ACCESS_DENIED 目标驱动程序对象不属于调用方。 此状态代码仅在早于 1709 的 Windows 10 版本上返回。
STATUS_NOT_FOUND 驱动程序对象没有与之关联的 (加载的内存映像) 部分。
STATUS_INSUFFICIENT_RESOURCES 资源不足,无法执行请求的操作。

注解

驱动程序可以调用此例程来查询其二进制文件的完整路径名称,或者从 Windows 10 版本 1709 开始,查询另一个驱动程序的二进制文件的完整路径名称。

调用方分配 FullPath 参数指向的UNICODE_STRING结构,但不需要初始化此结构。 IoQueryFullDriverPath 假定此结构的原始内容无效并覆盖它们。 此例程从分页系统内存中分配字符串缓冲区,将结构的 Buffer 成员设置为指向此缓冲区,并将 MaximumLengthBuffer 成员设置为描述缓冲区及其内容。

当不再需要完整路径字符串时,调用方负责释放 FullPath-Buffer> 指向的存储。 通常,调用方通过调用 ExFreePool 等例程来释放此存储。

要求

要求
最低受支持的客户端 从Windows 8.1开始可用。
目标平台 通用
标头 ntddk.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

DRIVER_OBJECT

ExFreePool

UNICODE_STRING