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,Length 必須是零。

[in] Length

ObjectNameInfo 所指向之緩衝區的大小,以位元組為單位。 此參數是選擇性的,而且可以是零。 如果 Length 為零, ReturnLength 會接收保留物件名稱資訊所需的緩衝區大小,以位元組為單位。 緩衝區容納大部分物件名稱的合理大小為 1024 個字節。 如果 Length 為零, ObjectNameInfo 可以是 NULL

[out] ReturnLength

呼叫端配置的變數指標,可接收傳回之物件名稱資訊的大小,以位元組為單位。 當存在) 時,對象名稱會 (包含 NULL 終止符和名稱中的所有路徑分隔符 “\”。 如果 ObQueryNameString 傳回 STATUS_INFO_LENGTH_MISMATCH,則會將此參數設定為所需的緩衝區長度。

傳回值

ObQueryNameString 會傳回STATUS_SUCCESS或 NTSTATUS 值,例如:

傳回碼 Description
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.LengthName.MaximumLength 設定為零。

ObjectNameInfo 的記憶體可以從分頁或非分頁集區配置。

規格需求

需求
最低支援的用戶端 Windows 2000
目標平台 Universal
標頭 ntifs.h (包括 FltKernel.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL < DISPATCH_LEVEL

另請參閱

UNICODE_STRING