KeSetTargetProcessorDpc 函数 (ntddk.h)
KeSetTargetProcessorDpc 例程指定运行 DPC 例程的处理器。
语法
void KeSetTargetProcessorDpc(
[in, out] PRKDPC Dpc,
[in] CCHAR Number
);
参数
[in, out] Dpc
指向调用方 DPC 对象的指针, KeInitializeDpc 已初始化该对象。
[in] Number
指定 DPC 应在其上排队和执行的目标处理器的从零开始的数目。
返回值
无
备注
在多处理器系统上,每个处理器都有自己的 DPC 队列。 KeSetTargetProcessorDpc 例程指定当驱动程序调用 KeInsertQueueDpc 或 IoRequestDpc 将 DPC 排入队列以便稍后运行的时,系统应使用哪个处理器的队列。
从 Windows Vista 开始,还可以使用 KeSetTargetProcessorDpc 为 线程 DPC 指定目标处理器。
在 DPC 对象排队后对 KeSetTargetProcessorDpc 的调用不会影响 DPC 例程的处理器的选择。 若要控制目标处理器的选择,必须在调用将 DPC 对象排队的 KeInsertQueueDpc 或 IoRequestDpc 之前进行 KeSetTargetProcessorDpc 调用。
有关 DPC 队列的详细信息,请参阅 DPC 队列的组织。
Windows 7 及更高版本的 Windows 支持处理器组。 旨在处理处理器组相关信息的驱动程序应使用 KeSetTargetProcessorDpcEx 例程,该例程指定处理器组,而不是 KeSetTargetProcessorDpc,后者不指定。 但是,Windows 7 及更高版本中 KeSetTargetProcessorDpc 的实现为早期版本的 Windows(不支持处理器组)编写的驱动程序提供了兼容性。 在此实现中,如果 Number 小于组 0 中活动逻辑处理器的数目, 则 KeSetTargetProcessorDpc 会将 DPC 的目标设置为由 Number 指定的组 0 中的处理器。 否则,DPC 目标不会更改。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 通用 |
标头 | ntddk.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何级别 |