PsRegisterProcessAvailableCpusChangeNotification 函数注册在进程可用的 CPU 发生更改时要调用的回调。
语法
NTSTATUS PsRegisterProcessAvailableCpusChangeNotification(
[in] PEPROCESS Process,
[in] PS_AVAILABLE_CPUS_CHANGE_CALLBACK *Callback,
[in, optional] PVOID Context,
[in, optional] PULONG64 ObservedSequenceNumber,
[out] PS_AVAILABLE_CPUS_CHANGE_REGISTRATION *RegistrationHandle
);
参数
[in] Process
指向进程(PEPROCESS)的指针。
[in] Callback
要调用的回调函数。 此参数的类型 为 PS_AVAILABLE_CPUS_CHANGE_CALLBACK。
[in, optional] Context
指向将传递给回调函数的上下文参数的指针。
[in, optional] ObservedSequenceNumber
(可选)提供指向调用方观察到的最新可用 CPU 序列号的指针。 如果自该观察以来序列号已提前,将立即进行回调。
[out] RegistrationHandle
提供指向缓冲区的指针,该缓冲区成功后接收回调注册的句柄(PS_AVAILABLE_CPUS_CHANGE_REGISTRATION)。
返回值
PsRegisterProcessAvailableCpusChangeNotification 返回以下 NTSTATUS 值之一:
| 返回代码 | DESCRIPTION |
|---|---|
| STATUS_SUCCESS | 已成功注册回调。 |
| STATUS_INSUFFICIENT_RESOURCES | 由于系统资源不足,无法注册回调。 |
注解
必须在PASSIVE_LEVEL调用此例程。
每当指定进程可用的 CPU 集发生更改时,都会调用回调。 这可能是由于 CPU 热插机作、进程相关性更改或其他系统事件导致的。
若要注销回调,请使用此函数返回的注册句柄调用 PsUnregisterAvailableCpusChangeNotification 。
如果提供了 ObservedSequenceNumber ,并且当前序列号超出该序列号,则会在注册时立即调用回调。
要求
| 要求 | 价值 |
|---|---|
| 标头 | wdm.h |
| IRQL | PASSIVE_LEVEL |
另请参阅
PsUnregisterAvailableCpusChangeNotification