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