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