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, 则 Length 必须为零。
[in] Length
ObjectNameInfo 指向的缓冲区的大小(以字节为单位)。 此参数是可选的,可以为零。 如果 Length 为零, 则 ReturnLength 接收保存对象名称信息所需的缓冲区的大小(以字节为单位)。 缓冲区容纳大多数对象名称的合理大小为 1024 字节。 如果 Length 为零, 则 ObjectNameInfo 可以为 NULL。
[out] ReturnLength
指向调用方分配的变量的指针,该变量接收返回的对象名称信息的大小(以字节为单位)。 当存在) 包含 NULL 终止符和名称中的所有路径分隔符“\”时,对象名称 (。 如果 ObQueryNameString 返回 STATUS_INFO_LENGTH_MISMATCH,则会将此参数设置为所需的缓冲区长度。
返回值
ObQueryNameString 返回STATUS_SUCCESS或 NTSTATUS 值,如下所示:
返回代码 | 说明 |
---|---|
|
ObjectNameInfo 指向的缓冲区太小,无法保存请求的对象名称信息。 ReturnLength 指向所需的缓冲区大小。 在这种情况下,不会返回任何对象名称信息。 这是错误代码。 请注意,如果 Length 设置为零,则返回 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) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |