共用方式為


ZwQuerySystemInformation 函式

[ZwQuerySystemInformation已不再可供Windows 8使用。 請改用本主題所列的替代函式。]

擷取指定的系統資訊。

語法

NTSTATUS WINAPI ZwQuerySystemInformation(
  _In_      SYSTEM_INFORMATION_CLASS SystemInformationClass,
  _Inout_   PVOID                    SystemInformation,
  _In_      ULONG                    SystemInformationLength,
  _Out_opt_ PULONG                   ReturnLength
);

參數

SystemInformationClass [in]

要擷取的系統資訊類型。 此參數可以是 下列 SYSTEM_INFORMATION_CLASS列舉類型的其中一個值。

SystemBasicInformation

SYSTEM_BASIC_INFORMATION 結構中 系統中的處理器數目。 請改用 GetSystemInfo 函式。

SystemPerformanceInformation

不透明 SYSTEM_PERFORMANCE_INFORMATION 結構,可用來為亂數產生器產生無法預測的種子。 請改用 CryptGenRandom 函式。

SystemTimeOfDayInformation

不透明 SYSTEM_TIMEOFDAY_INFORMATION 結構,可用來產生亂數產生器無法預測的種子。 請改用 CryptGenRandom 函式。

SystemProcessInformation

一個SYSTEM_PROCESS_INFORMATION結構的陣列,一個用於系統中執行的每個進程。

這些結構包含每個進程的資源使用量相關資訊,包括進程所使用的控制碼數目、尖峰頁面檔案使用量,以及進程已配置的記憶體分頁數目。

SystemProcessorPerformanceInformation

SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION結構的陣列,每個處理器都會安裝在系統中。

SystemInterruptInformation

不透明 SYSTEM_INTERRUPT_INFORMATION 結構,可用來為亂數產生器產生無法預期的種子。 請改用 CryptGenRandom 函式。

SystemExceptionInformation

不透明 SYSTEM_EXCEPTION_INFORMATION 結構,可用來產生亂數產生器無法預期的種子。 請改用 CryptGenRandom 函式。

SystemRegistryQuotaInformation

SYSTEM_REGISTRY_QUOTA_INFORMATION結構。

SystemLookasideInformation

不透明 SYSTEM_LOOKASIDE_INFORMATION 結構,可用來為亂數產生器產生無法預測的種子。 請改用 CryptGenRandom 函式。

SystemInformation [in, out]

接收要求資訊的緩衝區指標。 此資訊的大小和結構會根據 SystemInformationClass 參數的值而有所不同,如下表所示。

SYSTEM_BASIC_INFORMATION

SystemInformationClass 參數為 SystemBasicInformation時, SystemInformation 參數所指向的緩衝區應該夠大,足以保存具有下列配置的單一 SYSTEM_BASIC_INFORMATION 結構:

typedef struct _SYSTEM_BASIC_INFORMATION {
    BYTE Reserved1[24];
    PVOID Reserved2[4];
    CCHAR NumberOfProcessors;
} SYSTEM_BASIC_INFORMATION;

NumberOfProcessors成員包含系統中存在的處理器數目。 請改用 GetSystemInfo 來擷取此資訊。

結構的其他成員會保留供作業系統內部使用。

SYSTEM_PERFORMANCE_INFORMATION

SystemInformationClass 參數為 SystemPerformanceInformation時,SystemInformation參數所指向的緩衝區應該夠大,足以保存不透明的SYSTEM_PERFORMANCE_INFORMATION結構,以用於產生亂數產生器無法預期的種子。 為了達到此目的,結構具有下列配置:

typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
    BYTE Reserved1[312];
} SYSTEM_PERFORMANCE_INFORMATION;

結構的個別成員會保留供作業系統內部使用。

請改用 CryptGenRandom 函式來產生密碼編譯亂數據。

SYSTEM_TIMEOFDAY_INFORMATION

SystemInformationClass 參數為 SystemTimeOfDayInformation時, SystemInformation 參數所指向的緩衝區應該夠大,足以保存不透明的 SYSTEM_TIMEOFDAY_INFORMATION 結構,以用於產生亂數產生器無法預期的種子。 為了達到此目的,結構具有下列配置:

typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
    BYTE Reserved1[48];
} SYSTEM_TIMEOFDAY_INFORMATION;

結構的個別成員會保留供作業系統內部使用。

請改用 CryptGenRandom 函式來產生密碼編譯亂數據。

SYSTEM_PROCESS_INFORMATION

SystemInformationClass 參數是 SystemProcessInformation時, SystemInformation 參數所指向的緩衝區應該夠大,足以保存陣列,其中包含在系統中執行的進程時,包含任意 數目的SYSTEM_PROCESS_INFORMATION 結構。 每個結構都有下列配置:

typedef struct _SYSTEM_PROCESS_INFORMATION {
    ULONG NextEntryOffset;
    ULONG NumberOfThreads;
    BYTE Reserved1[48];
    PVOID Reserved2[3];
    HANDLE UniqueProcessId;
    PVOID Reserved3;
    ULONG HandleCount;
    BYTE Reserved4[4];
    PVOID Reserved5[11];
    SIZE_T PeakPagefileUsage;
    SIZE_T PrivatePageCount;
    LARGE_INTEGER Reserved6[6];
} SYSTEM_PROCESS_INFORMATION;

NumberOfThreads成員包含進程中目前正在執行的執行緒總數。

HandleCount成員包含有問題的處理常式所使用的控制碼總數;請改用GetProcessHandleCount來擷取此資訊。

PeakPagefileUsage成員包含進程所使用的頁面檔案儲存體位元組數目上限,而 PrivatePageCount成員則包含配置給此進程使用的記憶體頁面數目。

您也可以使用 GetProcessMemoryInfo 函式或 Win32_Process 類別來擷取此資訊。

結構的其他成員會保留供作業系統內部使用。

SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION

SystemInformationClass 參數是 SystemProcessorPerformanceInformation時, SystemInformation 參數所指向的緩衝區應該夠大,足以保存包含許多 SYSTEM_PROCESS_INFORMATION 結構的陣列,因為系統中已安裝處理器 (CPU) 。 每個結構都有下列配置:

typedef struct
_SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
    LARGE_INTEGER IdleTime;
    LARGE_INTEGER KernelTime;
    LARGE_INTEGER UserTime;
    LARGE_INTEGER Reserved1[2];
    ULONG Reserved2;
} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;

IdleTime成員包含系統閒置的時間量,以奈秒的 1/100 秒為單位。

KernelTime成員包含系統花費在核心模式中執行的時間量, (包括所有進程中的所有線程、所有處理器) 的 1/100 秒奈秒。

UserTime成員包含系統在使用者模式中執行所花費的時間量, (包括所有進程中的所有線程、所有處理器) ,以奈秒 1/100 秒為單位。

請改用 GetSystemTimes 來擷取此資訊。

SYSTEM_INTERRUPT_INFORMATION

SystemInformationClass 參數為 SystemInterruptInformation時, SystemInformation 參數所指向的緩衝區應該夠大,足以保存包含許多不透明 SYSTEM_INTERRUPT_INFORMATION 結構的陣列,因為系統上已安裝處理器 (CPU) 。 每個結構或整個陣列都可以用來為亂數產生器產生無法預期的種子。 為了達到此目的,結構具有下列配置:

typedef struct _SYSTEM_INTERRUPT_INFORMATION {
    BYTE Reserved1[24];
} SYSTEM_INTERRUPT_INFORMATION;

結構的個別成員會保留供作業系統內部使用。

請改用 CryptGenRandom 函式來產生密碼編譯亂數據。

SYSTEM_EXCEPTION_INFORMATION

SystemInformationClass 參數為 SystemExceptionInformation時, SystemInformation 參數所指向的緩衝區應該夠大,足以保存不透明的 SYSTEM_EXCEPTION_INFORMATION 結構,以用於產生亂數產生器無法預期的種子。 為了達到此目的,結構具有下列配置:

typedef struct _SYSTEM_EXCEPTION_INFORMATION {
    BYTE Reserved1[16];
} SYSTEM_EXCEPTION_INFORMATION;

結構的個別成員會保留供作業系統內部使用。

請改用 CryptGenRandom 函式來產生密碼編譯亂數據。

SYSTEM_REGISTRY_QUOTA_INFORMATION

SystemInformationClass 參數為 SystemRegistryQuotaInformation時, SystemInformation 參數所指向的緩衝區應該夠大,才能保存具有下列配置的單一 SYSTEM_REGISTRY_QUOTA_INFORMATION 結構:

typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
    ULONG RegistryQuotaAllowed;
    ULONG RegistryQuotaUsed;
    PVOID Reserved1;
} SYSTEM_REGISTRY_QUOTA_INFORMATION;

RegistryQuotaAllowed成員包含登錄可在此系統上取得的大小上限,以位元組為單位。

RegistryQuotaUsed成員包含登錄的目前大小,以位元組為單位。

請改用 GetSystemRegistryQuota 來擷取此資訊。

結構的其他成員會保留供作業系統內部使用。

SYSTEM_LOOKASIDE_INFORMATION

SystemInformationClass 參數為 SystemLookasideInformation時, SystemInformation 參數所指向的緩衝區應該夠大,足以保存不透明的 SYSTEM_LOOKASIDE_INFORMATION 結構,以用於產生亂數產生器無法預期的種子。 為了達到此目的,結構具有下列配置:

typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
    BYTE Reserved1[32];
} SYSTEM_LOOKASIDE_INFORMATION;

結構的個別成員會保留供作業系統內部使用。

請改用 CryptGenRandom 函式來產生密碼編譯亂數據。

SystemInformationLength [in]

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

ReturnLength [out, optional]

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

傳回值

傳回 NTSTATUS 成功或錯誤碼。

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

備註

ZwQuerySystemInformation函式及其傳回的結構在作業系統內部,而且可能會從一個版本的 Windows 變更為另一個版本。 若要維護應用程式的相容性,最好改用先前提及的替代函式。

如果您使用 ZwQuerySystemInformation,請透過 執行時間動態連結存取函式。 這可讓您的程式碼有機會在函式已變更或從作業系統中移除時正常回應。 不過,無法偵測簽章變更。

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

規格需求

需求
DLL
Ntdll.dll

另請參閱

GetSystemInfo

GetProcessHandleCount

GetProcessMemoryInfo

GetSystemTimes

GetSystemRegistryQuota