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 假定此结构的原始内容无效并覆盖它们。 此例程从分页系统内存中分配字符串缓冲区,将结构 缓冲区 成员设置为指向此缓冲区,并设置 MaximumLength 和 Buffer 成员来描述缓冲区及其内容。
调用方负责释放由 FullPath指向的存储 - 不再需要完整路径字符串时>缓冲区。 通常,调用方通过调用例程(如 ExFreePool)释放此存储。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 8.1 开始可用。 |
目标平台 | 普遍 |
标头 | ntddk.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |