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,Length 必須是零。
[in] Length
ObjectNameInfo 所指向之緩衝區的大小,以位元組為單位。 此參數是選擇性的,而且可以是零。 如果 Length 為零, ReturnLength 會接收保留物件名稱資訊所需的緩衝區大小,以位元組為單位。 緩衝區容納大部分物件名稱的合理大小為 1024 個字節。 如果 Length 為零, ObjectNameInfo 可以是 NULL。
[out] ReturnLength
呼叫端配置的變數指標,可接收傳回之物件名稱資訊的大小,以位元組為單位。 當存在) 時,對象名稱會 (包含 NULL 終止符和名稱中的所有路徑分隔符 “\”。 如果 ObQueryNameString 傳回 STATUS_INFO_LENGTH_MISMATCH,則會將此參數設定為所需的緩衝區長度。
傳回值
ObQueryNameString 會傳回STATUS_SUCCESS或 NTSTATUS 值,例如:
傳回碼 | Description |
---|---|
|
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 |
目標平台 | Universal |
標頭 | ntifs.h (包括 FltKernel.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |