Поделиться через


Функция NdisMQueueDpcEx (ndis.h)

Драйверы мини-портов NDIS вызывают функцию NdisMQueueDpcEx для планирования вызовов DPC на ЦП.

Синтаксис

KAFFINITY NdisMQueueDpcEx(
  [in] IN NDIS_HANDLE     NdisInterruptHandle,
  [in] IN ULONG           MessageId,
  [in] IN PGROUP_AFFINITY TargetProcessors,
  [in] IN PVOID           MiniportDpcContext
);

Параметры

[in] NdisInterruptHandle

Дескриптор прерывания, полученный драйвером miniport в предыдущем вызовеФункция NdisMRegisterInterruptEx.

[in] MessageId

Идентификатор сообщения MSI для DPC. Если DPC предназначен для прерывания на основе строки, этот параметр не используется и ему следует задать значение 0. В противном случае MessageId является индексом для IO_INTERRUPT_MESSAGE_INFO_ENTRY структуры внутри IO_INTERRUPT_MESSAGE_INFO структура. NDIS передает указатель на связанную структуру IO_INTERRUPT_MESSAGE_INFO в элементе MessageInfoTable , когда драйвер успешно регистрируется для MSI с помощью функции NdisMRegisterInterruptEx .

[in] TargetProcessors

Растровое изображение, показывающее целевые процессоры. NDIS должен запланировать DPC для каждого целевого процессора, указанного на растровом рисунке. Каждый бит в TargetProcessors определяет ЦП. Если вызывающий объект задает бит 0, NDIS планирует DPC для ЦП 0. Если вызывающий объект задает бит 1, NDIS планирует DPC для ЦП 1 и т. д.

[in] MiniportDpcContext

Указатель на область контекста, указанную вызывающим объектом. NDIS передает этот указатель в параметр MiniportDpcContextminiportInterruptDPC и Функции MiniportMessageInterruptDPC .

Возвращаемое значение

NdisMQueueDpcEx возвращает растровое изображение, указывающее на целевые процессоры. Каждый бит в возвращаемом значении определяет ЦП.

NDIS успешно запланировали DPC для каждого целевого процессора, заданного на растровом рисунке. Если NDIS задает бит 0, NDIS запланирует DPC для ЦП 0. Если NDIS задает бит 1, NDIS запланирует DPC для ЦП 1 и т. д.

Если драйвер запросил DPC для ЦП, а NDIS указывает, что он не планировал этот DPC, то DPC не был запланирован, так как DPC, который сопоставляется с этой парой прерываний и процессор, уже запланирован для этого ЦП.

Комментарии

Драйверы минипорта NDIS 6.20 и более поздних версий вызывают NdisMQueueDpcEx для запроса вызовов DPC для других процессоров. NDIS вызывает MiniportInterruptDPC или Функция MiniportMessageInterruptDPC для завершения отложенной обработки прерывания.

NdisMQueueDpcEx совпадает с функцией NdisMQueueDpc, за исключением того, что параметр TargetProcessors имеет тип KGROUP_AFFINITY. Таким образом, NdisMQueueDpcEx может запланировать DPC на процессорах в любой группе процессоров. Для планирования DPC в нескольких группах процессоров можно использовать несколько вызовов NdisMQueueDpcEx.

ПримечаниеNdisMQueueDpc, MiniportInterrupt иФункции MiniportMessageInterrupt имеют параметр TargetProcessors, который является ULONG. Этот параметр указывает первые 32 процессора в группе процессоров 0.
 
Важно Драйверы NDIS 6.20 и более поздних версий всегда должны использовать NdisMQueueDpcEx для планирования DPC.
 

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.20 и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL Любой уровень

См. также раздел

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NdisMQueueDpc

NdisMRegisterInterruptEx