PsQueryProcessAvailableCpus 函式會查詢可供指定進程執行的 CPU 集合。
語法
NTSTATUS PsQueryProcessAvailableCpus(
[in] PEPROCESS Process,
[in, out] PKAFFINITY_EX Affinity,
[in, optional] PULONG64 ObservedSequenceNumber,
[out] PULONG64 SequenceNumber
);
參數
[in] Process
進程的指標(PEPROCESS)。
[in, out] Affinity
將接收進程可用 CPU 集合之擴充親和性物件 (PKAFFINITY_EX) 的指標。
[in, optional] ObservedSequenceNumber
選擇性地透過先前呼叫這個例程,提供呼叫端觀察到的最新序號指標。 如果此序號符合目前的序號,則例程會傳回STATUS_NO_WORK_DONE,而且不會寫入同質緩衝區。
[out] SequenceNumber
緩衝區的指標,該緩衝區將接收指定進程的可用 CPU 目前序號。
返回值
PsQueryProcessAvailableCpus 會傳回下列其中一個 NTSTATUS 值:
| 回傳碼 | 說明 |
|---|---|
| STATUS_SUCCESS | 查詢已順利完成。 |
| STATUS_INVALID_PARAMETER | 任何必要的緩衝區都是 NULL。 |
| STATUS_NO_WORK_DONE | 指定的序號符合目前的序號,且未執行任何查詢。 |
| STATUS_BUFFER_TOO_SMALL | 指定的同質緩衝區太小。 |
備註
您可以在 IRQL 從 PASSIVE_LEVEL 呼叫此例程,以DISPATCH_LEVEL。
親和性緩衝區必須夠大,才能容納使用中的處理器群組計數。 使用 KeQueryActiveGroupCount 來判斷所需的大小。
序號可讓呼叫端藉由檢查自上次呼叫之後的CPU可用性是否已變更,來優化重複的查詢。
需求
| 要求 | 價值觀 |
|---|---|
| 頁首 | wdm.h |
| IRQL | 要DISPATCH_LEVEL的PASSIVE_LEVEL |