Функция 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 инициализировал объект прерывания и предоставил допустимый дескриптор прерывания в NdisInterruptHandle . NDIS затребовал аппаратные ресурсы и настроил функции, которые она вызывает при прерывании. |
|
Сбой NdisMRegisterInterruptEx из-за нехватки ресурсов. |
|
Попытка инициализировать объект прерывания завершилась сбоем по причинам, не указанным в предыдущем списке. |
Комментарии
Драйвер мини-порта должен вызывать NdisMRegisterInterruptEx из функции MiniportInitializeEx , если он управляет сетевым адаптером, который создает прерывания.
MiniportInitializeEx должен вызывать Функция NdisMSetMiniportAttributes перед вызовом NdisMRegisterInterruptEx.
Драйвер мини-порта должен указать точки входа для следующих функций службы прерываний:
MiniportDisableInterruptExЕсли сетевой адаптер поддерживает прерывания с сигналом о сообщениях (MSI), драйвер мини-порта должен указать точки входа для следующих функций службы MSI:
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) |