NdisMQueueDpcEx 函数 (ndis.h)
NDIS 微型端口驱动程序调用 NdisMQueueDpcEx 函数来计划 CPU 上的 DPC 调用。
语法
KAFFINITY NdisMQueueDpcEx(
[in] IN NDIS_HANDLE NdisInterruptHandle,
[in] IN ULONG MessageId,
[in] IN PGROUP_AFFINITY TargetProcessors,
[in] IN PVOID MiniportDpcContext
);
参数
[in] NdisInterruptHandle
在上一次调用中获取的微型端口驱动程序的中断句柄 NdisMRegisterInterruptEx 函数。
[in] MessageId
DPC 的 MSI 消息 ID。 如果 DPC 用于基于行的中断,则不使用此参数,应将其设置为零。 否则,MessageId 是索引 IO_INTERRUPT_MESSAGE_INFO_ENTRY 结构 IO_INTERRUPT_MESSAGE_INFO 结构。 当驱动程序成功向 NdisMRegisterInterruptEx 函数注册 MSI 时,NDIS 会在 MessageInfoTable 成员处传递指向关联IO_INTERRUPT_MESSAGE_INFO结构的指针。
[in] TargetProcessors
指示目标处理器的位图。 NDIS 应为位图中指示的每个目标处理器计划 DPC。 TargetProcessors 中的每个位 标识 CPU。 如果调用方设置位 0,NDIS 将为 CPU 0 计划 DPC。 如果调用方设置位 1,NDIS 将为 CPU 1 计划 DPC,依此安排。
[in] MiniportDpcContext
指向调用方指定的上下文区域的指针。 NDIS 将此指针传递给 MiniportInterruptDPC参数的 MiniportDpcContext 和 MiniportMessageInterruptDPC 函数。
返回值
NdisMQueueDpcEx 返回指示目标处理器的位图。 返回值中的每个位标识 CPU。
NDIS 已成功为位图中设置的每个目标处理器计划 DPC。 如果 NDIS 设置位 0,则 NDIS 为 CPU 0 计划 DPC。 如果 NDIS 设置位 1,则 NDIS 会为 CPU 1 计划 DPC,依此等。
如果驱动程序为 CPU 请求了 DPC,并且 NDIS 指示它未计划该 DPC,则不会计划 DPC,因为映射到此中断/处理器对的 DPC 已针对该 CPU 计划。
言论
NDIS 6.20 及更高版本的微型端口驱动程序调用 NdisMQueueDpcEx,以请求其他处理器的 DPC 调用。 NDIS 调用 MiniportInterruptDPC 或 MiniportMessageInterruptDPC 函数来完成中断的延迟处理。
NdisMQueueDpcEx 与 NdisMQueueDpc 函数相同,但 TargetProcessors 参数具有KGROUP_AFFINITY类型。 因此,NdisMQueueDpcEx 可以在任何处理器组中的处理器上计划 DPC。 若要在多个处理器组中计划 DPC,可以使用多个调用来 NdisMQueueDpcEx。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | NDIS 6.20 及更高版本中受支持。 |
目标平台 | 普遍 |
标头 | ndis.h (包括 Ndis.h) |
库 | Ndis.lib |
IRQL | 任何级别 |