ntQueryObject 函数 (winternl.h)
[此函数可能会更改或从 Windows 中删除,恕不另行通知。]
检索各种类型的对象信息。
语法
__kernel_entry NTSYSCALLAPI NTSTATUS NtQueryObject(
[in, optional] HANDLE Handle,
[in] OBJECT_INFORMATION_CLASS ObjectInformationClass,
[out, optional] PVOID ObjectInformation,
[in] ULONG ObjectInformationLength,
[out, optional] PULONG ReturnLength
);
参数
[in, optional] Handle
要查询其信息的 对象的句柄。
[in] ObjectInformationClass
下列值之一,如 OBJECT_INFORMATION_CLASS 中枚举,指示要检索的对象信息的类型。
术语 | 说明 |
---|---|
ObjectBasicInformation | 返回 PUBLIC_OBJECT_BASIC_INFORMATION 结构,如以下“备注”部分所示。 |
ObjectTypeInformation | 返回 PUBLIC_OBJECT_TYPE_INFORMATION 结构,如下面的“备注”部分所示。 |
[out, optional] ObjectInformation
指向要返回所请求信息的缓冲区的可选指针。 此信息的大小和结构因 ObjectInformationClass 参数的值而异。
[in] ObjectInformationLength
ObjectInformation 参数指向的缓冲区的大小(以字节为单位)。
[out, optional] ReturnLength
指向函数写入所请求信息的实际大小的位置的可选指针。 如果该大小小于或等于 ObjectInformationLength 参数,则函数将信息复制到 ObjectInformation 缓冲区中;否则,它将返回 NTSTATUS 错误代码,并在 ReturnLength 中返回接收请求的信息所需的缓冲区大小。
返回值
返回 NTSTATUS 或错误代码。
NTSTATUS 错误代码的形式和意义列在 WDK 中提供的 Ntstatus.h 头文件中,并在 WDK 文档中进行介绍。
注解
此函数没有关联的头文件或导入库。 必须使用 LoadLibrary 或 GetProcAddress 函数动态链接到 Ntdll.dll。
如果 ObjectInformationClass 参数为 ObjectBasicInformation,则信息包含在以下结构中。
typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION {
ULONG Attributes;
ACCESS_MASK GrantedAccess;
ULONG HandleCount;
ULONG PointerCount;
ULONG Reserved[10]; // reserved for internal use
} PUBLIC_OBJECT_BASIC_INFORMATION, *PPUBLIC_OBJECT_BASIC_INFORMATION;
此结构的可用成员包括句柄 (Attributes) 的对象属性、为句柄授予的访问权限 (GrantedAccess) 、对对象的打开句柄数 (HandleCount) ,以及对对象的内核引用数 (PointerCount) 。
如果 ObjectInformationClass 参数为 ObjectTypeInformation,则信息包含在以下结构中。
typedef struct __PUBLIC_OBJECT_TYPE_INFORMATION {
UNICODE_STRING TypeName;
ULONG Reserved [22]; // reserved for internal use
} PUBLIC_OBJECT_TYPE_INFORMATION, *PPUBLIC_OBJECT_TYPE_INFORMATION;
此结构的唯一可用成员是 typeName) (对象类型名称字符串。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | winternl.h |
Library | ntdll.lib |
DLL | ntdll.dll |