共用方式為


ntQueryObject 函式 (winternl.h)

[此函式可能會從 Windows 變更或移除,而不需進一步通知。]

擷取各種對象資訊。

語法

__kernel_entry NTSYSCALLAPI NTSTATUS NtQueryObject(
  [in, optional]  HANDLE                   Handle,
  [in]            OBJECT_INFORMATION_CLASS ObjectInformationClass,
  [out, optional] PVOID                    ObjectInformation,
  [in]            ULONG                    ObjectInformationLength,
  [out, optional] PULONG                   ReturnLength
);

參數

[in, optional] Handle

正在查詢資訊之物件的句柄。

[in] ObjectInformationClass

下列其中一個值,如 OBJECT_INFORMATION_CLASS 中列舉,表示要擷取的對象資訊種類。

詞彙 描述
ObjectBasicInformation 傳回 PUBLIC_OBJECT_BASIC_INFORMATION 結構,如下列一節所示。
ObjectTypeInformation 傳回 PUBLIC_OBJECT_TYPE_INFORMATION 結構,如下列一節所示。

[out, optional] ObjectInformation

要傳回所要求信息的緩衝區選擇性指標。 這項資訊的大小和結構會根據 ObjectInformationClass 參數的值而有所不同。

[in] ObjectInformationLength

ObjectInformation 參數指向的緩衝區大小,以位元組為單位。

[out, optional] ReturnLength

函式寫入所要求信息實際大小的選擇性指標。 如果該大小小於或等於 ObjectInformationLength 參數,函式會將資訊複製到 ObjectInformation 緩衝區;否則,它會傳回NTSTATUS錯誤碼,並在 ReturnLength 中傳回接收要求資訊所需的緩衝區大小。

傳回值

傳回 NTSTATUS 或錯誤碼。

NTSTATUS 錯誤碼的表單和重要性會列在 WDK 中提供的 Ntstatus.h 頭檔中,並在 WDK 檔中說明。

備註

此函式沒有相關聯的頭檔或匯入連結庫。 您必須使用 LoadLibraryGetProcAddress 函式來動態連結至 Ntdll.dll。

如果 ObjectInformationClass 參數為 ObjectBasicInformation,則資訊會包含在下列結構中。

typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION {
    ULONG Attributes;
    ACCESS_MASK GrantedAccess;
    ULONG HandleCount;
    ULONG PointerCount;
    ULONG Reserved[10];    // reserved for internal use
 } PUBLIC_OBJECT_BASIC_INFORMATION, *PPUBLIC_OBJECT_BASIC_INFORMATION;

這個結構的可用成員包括句柄 (Attributes) 的物件屬性、授與句柄 (GrantedAccess) 的存取權、對象的開啟句柄數目 (HandleCount) ,以及物件的核心參考數目 (PointerCount) 。

如果 ObjectInformationClass 參數為 ObjectTypeInformation,則資訊會包含在下列結構中。

typedef struct __PUBLIC_OBJECT_TYPE_INFORMATION {
    UNICODE_STRING TypeName;
    ULONG Reserved [22];    // reserved for internal use
} PUBLIC_OBJECT_TYPE_INFORMATION, *PPUBLIC_OBJECT_TYPE_INFORMATION;

這個結構的唯一可用成員是 typename (typeName) 物件類型名稱字串。

規格需求

需求
目標平台 Windows
標頭 winternl.h
程式庫 ntdll.lib
Dll ntdll.dll