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 成员设置为指向此缓冲区,并将 MaximumLength 和 Buffer 成员设置为描述缓冲区及其内容。
当不再需要完整路径字符串时,调用方负责释放 FullPath-Buffer> 指向的存储。 通常,调用方通过调用 ExFreePool 等例程来释放此存储。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 8.1开始可用。 |
目标平台 | 通用 |
标头 | ntddk.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |