Функция 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. Если ObjectNameInfoNULL, длина должна быть нулевой.

[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 указывает на требуемый размер буфера. В этом случае сведения об имени объекта не возвращаются. Это код ошибки. Помните, что если длина равно нулю, возвращается 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 (include FltKernel.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

См. также

UNICODE_STRING