Функция 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 байта. Если длина равна нулю, objectNameInfo может иметь значение NULL.

[out] ReturnLength

Указатель на переменную, выделенную вызывающим объектом, которая получает размер возвращаемого имени объекта в байтах. Имя объекта (при наличии) включает в себя признак конца NULL и все разделители пути "\" в имени. Если Объект ObQueryNameString возвращает STATUS_INFO_LENGTH_MISMATCH, он задает для этого параметра требуемую длину буфера.

Возвращаемое значение

ObQueryNameString возвращает STATUS_SUCCESS или значение NTSTATUS, например следующее:

Код возврата Описание
STATUS_INFO_LENGTH_MISMATCH
Буфер, на который указывает 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)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

См. также раздел

UNICODE_STRING