PsQuerySystemAvailableCpus 函数 (wdm.h)

PsQuerySystemAvailableCpus 函数查询可用于系统进程的 CPU 集。

语法

NTSTATUS PsQuerySystemAvailableCpus(
  [in, out]      PKAFFINITY_EX Affinity,
  [in, optional] PULONG64      ObservedSequenceNumber,
  [out]          PULONG64      SequenceNumber
);

参数

[in, out] Affinity

指向将接收系统进程的可用 CPU 集的扩展关联对象(PKAFFINITY_EX)的指针。

[in, optional] ObservedSequenceNumber

指向调用方通过上一次调用此例程观察到的最新序列号的可选指针。 如果此序列号与当前序列号匹配,则例程将返回STATUS_NO_WORK_DONE,并且不写入关联缓冲区。

[out] SequenceNumber

指向缓冲区的指针,该缓冲区将接收系统进程的可用 CPU 的当前序列号。

返回值

PsQuerySystemAvailableCpus 返回以下 NTSTATUS 值之一:

返回代码 DESCRIPTION
STATUS_SUCCESS 查询已成功完成。
STATUS_INVALID_PARAMETER 任何必需的缓冲区均为 NULL。
STATUS_NO_WORK_DONE 给定的序列号与当前序列号匹配,并且未执行任何查询。
STATUS_BUFFER_TOO_SMALL 给定的关联缓冲区太小。

注解

可以在 IRQL 中从 PASSIVE_LEVEL 调用此例程,以DISPATCH_LEVEL。

地缘缓冲区必须足够大,才能容纳活动处理器组计数。 使用 KeQueryActiveGroupCount 确定所需的大小。

序列号允许调用方通过检查自上次调用以来的 CPU 可用性是否已更改来优化重复查询。

此函数查询系统进程的 CPU 可用性,这通常表示系统中所有可用的 CPU。

要求

要求 价值
标头 wdm.h
IRQL 要DISPATCH_LEVEL的PASSIVE_LEVEL

另请参阅

PsQuerySystemAvailableCpusCount

PsQueryProcessAvailableCpus

KeQueryActiveGroupCount