Поделиться через


Функция 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 перечислены в файле заголовка Ntstatus.h, доступном в WDK, и описаны в документации по WDK.

Комментарии

У этой функции нет связанного файла заголовка или библиотеки импорта. Для динамического связывания с Ntdll.dll необходимо использовать функцию LoadLibrary или GetProcAddress .

Если параметр 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;

Доступные элементы для этой структуры включают атрибуты объекта для дескриптора (Атрибуты), доступ, предоставленный дескриптору (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
Header winternl.h
Библиотека ntdll.lib
DLL ntdll.dll