KeSetTargetProcessorDpc 函数 (ntddk.h)

KeSetTargetProcessorDpc 例程指定运行 DPC 例程的处理器。

语法

void KeSetTargetProcessorDpc(
  [in, out] PRKDPC Dpc,
  [in]      CCHAR  Number
);

参数

[in, out] Dpc

指向调用方 DPC 对象的指针, KeInitializeDpc 已初始化该对象。

[in] Number

指定 DPC 应在其上排队和执行的目标处理器的从零开始的数目。

返回值

备注

在多处理器系统上,每个处理器都有自己的 DPC 队列。 KeSetTargetProcessorDpc 例程指定当驱动程序调用 KeInsertQueueDpcIoRequestDpc 将 DPC 排入队列以便稍后运行的时,系统应使用哪个处理器的队列。

从 Windows Vista 开始,还可以使用 KeSetTargetProcessorDpc线程 DPC 指定目标处理器。

在 DPC 对象排队后对 KeSetTargetProcessorDpc 的调用不会影响 DPC 例程的处理器的选择。 若要控制目标处理器的选择,必须在调用将 DPC 对象排队的 KeInsertQueueDpcIoRequestDpc 之前进行 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 任何级别

另请参阅

IoRequestDpc

KeGetCurrentProcessorNumber

KeInitializeDpc

KeInsertQueueDpc

KeSetImportanceDpc

KeSetTargetProcessorDpcEx