Função ObQueryNameString (ntifs.h)

A rotina ObQueryNameString fornece o nome, se houver um, de um determinado objeto ao qual o chamador tem um ponteiro.

Sintaxe

NTSTATUS ObQueryNameString(
  [in]            PVOID                    Object,
  [out, optional] POBJECT_NAME_INFORMATION ObjectNameInfo,
  [in]            ULONG                    Length,
  [out]           PULONG                   ReturnLength
);

Parâmetros

[in] Object

Um ponteiro para o objeto para o qual o nome é solicitado. Esse parâmetro é necessário e não pode ser NULL.

[out, optional] ObjectNameInfo

Um ponteiro para um buffer alocado pelo chamador, do seguinte tipo, que recebe as informações de nome do objeto:

typedef struct _OBJECT_NAME_INFORMATION {
  UNICODE_STRING Name;
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;

Esse parâmetro é opcional e pode ser NULL. Se ObjectNameInfo for NULL, Length deverá ser zero.

[in] Length

O tamanho, em bytes, do buffer apontado por ObjectNameInfo. Esse parâmetro é opcional e pode ser zero. Se Length for zero, ReturnLength receberá o tamanho, em bytes, do buffer necessário para manter as informações de nome do objeto. Um tamanho razoável para o buffer acomodar a maioria dos nomes de objeto é de 1024 bytes. Se Length for zero, ObjectNameInfo poderá ser NULL.

[out] ReturnLength

Um ponteiro para uma variável alocada pelo chamador que recebe o tamanho, em bytes, das informações de nome de objeto retornadas. O nome do objeto (quando presente) inclui um terminador NULL e todos os separadores de caminho "\" no nome. Se ObQueryNameString retornar STATUS_INFO_LENGTH_MISMATCH, ele definirá esse parâmetro como o comprimento do buffer necessário.

Retornar valor

ObQueryNameString retorna STATUS_SUCCESS ou um valor NTSTATUS, como o seguinte:

Código de retorno Descrição
STATUS_INFO_LENGTH_MISMATCH
O buffer apontado por ObjectNameInfo é muito pequeno para conter as informações de nome de objeto solicitadas. ReturnLength aponta para o tamanho do buffer necessário. Nesse caso, nenhuma informação de nome de objeto é retornada. Este é um código de erro. Lembre-se de que, se Length estiver definido como zero, STATUS_INFO_LENGTH_MISMATCH será retornado.

Comentários

Se o objeto fornecido for nomeado e o nome do objeto tiver sido adquirido com êxito, a cadeia de caracteres retornada será o nome do objeto fornecido, incluindo o máximo possível do caminho completo do objeto. Nesse caso, ObQueryNameString define Name.Buffer como o endereço do nome terminado em NULL do objeto especificado. O valor de Name.MaximumLength é o comprimento do nome do objeto, incluindo a terminação NULL . O valor de Name.Length é o comprimento do único nome do objeto.

Se o objeto fornecido não for nomeado ou se o nome do objeto não tiver sido adquirido com êxito, ObQueryNameString definirá Name.Buffer como NULL e definirá Name.Length e Name.MaximumLength como zero.

O armazenamento para ObjectNameInfo pode ser alocado do pool paginado ou nãopagado.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua FltKernel.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Confira também

UNICODE_STRING