ObQueryNameString 函数 (ntifs.h)
ObQueryNameString 例程提供调用方具有指针的给定对象的名称(如果有)。
语法
NTSTATUS ObQueryNameString(
[in] PVOID Object,
[out, optional] POBJECT_NAME_INFORMATION ObjectNameInfo,
[in] ULONG Length,
[out] PULONG ReturnLength
);
参数
[in] Object
指向为其请求名称的对象的指针。 此参数是必需的,不能 NULL。
[out, optional] ObjectNameInfo
指向以下类型的调用方分配缓冲区的指针,该缓冲区接收对象名称信息:
typedef struct _OBJECT_NAME_INFORMATION {
UNICODE_STRING Name;
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
此参数是可选的,可以 NULL。 如果 ObjectNameInfo 为 NULL ,则 长度 必须为零。
[in] Length
ObjectNameInfo指向的缓冲区的大小(以字节为单位)。 此参数是可选的,可以是零。 如果 长度 为零,ReturnLength 接收保存对象名称信息所需的缓冲区的大小(以字节为单位)。 缓冲区容纳大多数对象名称的合理大小为 1024 字节。 如果 长度 为零,则可以 ObjectNameInfoNULL。
[out] ReturnLength
指向调用方分配的变量的指针,该变量接收返回的对象名称信息的大小(以字节为单位)。 对象名称(如果存在)包括 NULL 终止符和名称中的所有路径分隔符“\”。 如果 ObQueryNameString 返回 STATUS_INFO_LENGTH_MISMATCH,则会将此参数设置为所需的缓冲区长度。
返回值
ObQueryNameString 返回STATUS_SUCCESS或 NTSTATUS 值,如下所示:
返回代码 | 描述 |
---|---|
|
ObjectNameInfo 指向的缓冲区太小,无法保存请求的对象名称信息。 ReturnLength 指向所需的缓冲区大小。 在这种情况下,不会返回任何对象名称信息。 这是一个错误代码。 请注意,如果 长度 设置为零,则返回 STATUS_INFO_LENGTH_MISMATCH。 |
言论
如果给定对象命名并成功获取对象名称,则返回的字符串是给定对象的名称,包括尽可能多的对象的完整路径。 在这种情况下,ObQueryNameString 将 Name.Buffer 设置为指定对象的 NULL 终止名称的地址。 Name.MaximumLength 的值是对象名称的长度,包括 NULL 终止。 Name.Length 的值是唯一的对象名称的长度。
如果给定对象未命名,或者未成功获取对象名称,ObQueryNameString 将 Name.Buffer 设置为 NULL 并将 Name.Length 和 Name.MaximumLength 设置为零。
可以从分页池或非分页池分配 ObjectNameInfo 的存储。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 |
目标平台 | 普遍 |
标头 | ntifs.h (包括 FltKernel.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |