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


Функция 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 записывает дескриптор для только что созданного объекта прерывания в адрес, который указывает указатель NdisInterruptHand le.

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

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

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

Замечания

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

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

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

MiniportInterrupt

MiniportInterruptDPC

MiniportDisableInterruptEx

MiniportEnableInterruptEx

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

MiniportMessageInterrupt

MiniportMessageInterruptDPC MiniportDisableMessageInterrupt MiniportEnableMessageInterrupt

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

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается в NDIS 6.0 и более поздних версиях.
целевая платформа Всеобщий
заголовка ndis.h (include 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