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


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

Драйверы мини-портов NDIS вызывают функцию NdisMRegisterInterruptEx для регистрации прерывания.

Синтаксис

NDIS_STATUS NdisMRegisterInterruptEx(
  [in]  NDIS_HANDLE                              MiniportAdapterHandle,
  [in]  NDIS_HANDLE                              MiniportInterruptContext,
  [in]  PNDIS_MINIPORT_INTERRUPT_CHARACTERISTICS MiniportInterruptCharacteristics,
  [out] PNDIS_HANDLE                             NdisInterruptHandle
);

Параметры

[in] MiniportAdapterHandle

Дескриптор адаптера минипорта, переданный NDIS в Функция MiniportInitializeEx .

[in] MiniportInterruptContext

Указатель на блок контекстной информации. Драйвер мини-порта выделяет эту память для хранения сведений о прерывании. NDIS передает блок контекстной информации в последующих вызовах к другим функциям, связанным с прерыванием.

[in] MiniportInterruptCharacteristics

Указатель на NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS структуру, созданную драйвером мини-порта. Драйвер инициализирует эту структуру с помощью точек входа обработчика и параметров конфигурации, определяющих характеристики прерываний.

[out] NdisInterruptHandle

Указатель на дескриптор NDIS. NDIS записывает дескриптор для созданного объекта прерывания на адрес, который указывает указатель NdisInterruptHandle .

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

NdisMRegisterInterruptEx может возвращать одно из следующих значений:

Код возврата Описание
NDIS_STATUS_SUCCESS
NDIS инициализировал объект прерывания и предоставил допустимый дескриптор прерывания в NdisInterruptHandle . NDIS затребовал аппаратные ресурсы и настроил функции, которые она вызывает при прерывании.
NDIS_STATUS_RESOURCES
Сбой NdisMRegisterInterruptEx из-за нехватки ресурсов.
NDIS_STATUS_XXX или NT_STATUS_XXXX
Попытка инициализировать объект прерывания завершилась сбоем по причинам, не указанным в предыдущем списке.

Комментарии

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

MiniportInitializeEx должен вызывать Функция NdisMSetMiniportAttributes перед вызовом NdisMRegisterInterruptEx.

Драйвер мини-порта должен указать точки входа для следующих функций службы прерываний:

MiniportInterrupt

MiniportInterruptDPC

MiniportDisableInterruptEx

MiniportEnableInterruptEx

Если сетевой адаптер поддерживает прерывания с сигналом о сообщениях (MSI), драйвер мини-порта должен указать точки входа для следующих функций службы MSI:

MiniportMessageInterrupt

MiniportMessageInterruptDPC MiniportDisableMessageInterrupt MiniportEnableMessageInterrupt

Если драйвер указывает точки входа для MSI, он также должен указать точки входа для функций службы прерываний, отличных от MSI. Кроме того, если NdisMRegisterInterruptEx возвращает NDIS_STATUS_SUCCESS, драйвер должен проверить значение члена InterruptType элемента NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS структуру для определения типа предоставленных NDIS прерываний. Если NDIS не может предоставить поддержку MSI, она предоставит поддержку строковых прерываний.

Если прерывания включены на сетевом адаптере, функция MiniportInterrupt(или MiniportMessageInterrupt) драйвера может быть вызвана в любое время после вызова драйвером NdisMRegisterInterruptEx, даже до возврата NdisMRegisterInterruptEx . Поэтому драйвер не должен вызывать NdisMRegisterInterruptEx , пока он не будет готов к обработке прерывания.

Драйверы вызываютФункция NdisMDeregisterInterruptEx для освобождения ресурсов, которые были ранее выделены с помощью NdisMRegisterInterruptEx.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL PASSIVE_LEVEL
Правила соответствия DDI Init_DeRegisterInterrupt(ndis), Init_RegisterInterrupt(ndis), Irql_Interrupt_Function(ndis), NdisMDeregisterInterruptEx(ndis)

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

MiniportDisableInterruptEx

MiniportDisableMessageInterrupt

MiniportEnableInterruptEx

MiniportEnableMessageInterrupt

MiniportInitializeEx

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS

NdisMDeregisterInterruptEx

NdisMSetMiniportAttributes