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 假定此结构的原始内容无效并覆盖它们。 此例程从分页系统内存中分配字符串缓冲区,将结构 缓冲区 成员设置为指向此缓冲区,并设置 MaximumLengthBuffer 成员来描述缓冲区及其内容。

调用方负责释放由 FullPath指向的存储 - 不再需要完整路径字符串时>缓冲区。 通常,调用方通过调用例程(如 ExFreePool)释放此存储。

要求

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

另请参阅

DRIVER_OBJECT

ExFreePool

UNICODE_STRING