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


Функция 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

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

[in] MessageId

Идентификатор сообщения MSI для DPC. Если DPC предназначен для прерывания на основе строк, этот параметр не используется и он должен быть равен нулю. В противном случае 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 могут планировать dpcs на процессорах в любой группе процессоров. Для планирования ЦП в нескольких группах процессоров можно использовать несколько вызовов для NdisMQueueDpcEx.

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается в NDIS 6.20 и более поздних версиях.
целевая платформа Всеобщий
заголовка ndis.h (include Ndis.h)
библиотеки Ndis.lib
IRQL Любой уровень

См. также

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NdisMQueueDpc

NdisMRegisterInterruptEx