Функция WdmlibIoConnectInterruptEx (iointex.h)

Функция WdmlibIoConnectInterruptEx регистрирует подпрограмму обработки прерываний для прерываний устройства.

Синтаксис

NTSTATUS WdmlibIoConnectInterruptEx(
  [in, out] PIO_CONNECT_INTERRUPT_PARAMETERS Parameters
);

Параметры

[in, out] Parameters

Указатель на структуру IO_CONNECT_INTERRUPT_PARAMETERS , указывающую устройство и подпрограмму обработки прерываний. По возвращении WdmlibIoConnectInterruptEx обновляет эту структуру для хранения сведений об прерываниях устройства.

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

Функция возвращает STATUS_SUCCESS при успешном выполнении или соответствующее значение ошибки NTSTATUS при сбое. Возможные значения ошибок:

Код возврата Описание
STATUS_INVALID_DEVICE_REQUEST
Операция недопустима для указанного устройства. Например, Parameters->Version = CONNECT_LINE_BASED, и система назначила устройству несколько сообщений прерываний.
STATUS_INVALID_PARAMETER
Вызывающий объект указал недопустимый параметр. Эта ошибка возникает, например, когда вызывающий объект задает значение NULL для объекта устройства устройства.
STATUS_INVALID_PARAMETER_1
Вызывающий объект указал недопустимое значение для элемента Version структуры, на которую указывает Parameters . Параметры->Версия должна быть одной из CONNECT_LINE_BASED, CONNECT_MESSAGE_BASED или CONNECT_FULLY_SPECIFIED.
STATUS_INVALID_PARAMETER_10
Вызывающий объект указал недопустимое значение для десятого члена структуры, на которую указывает Parameters . Эта ошибка возникает, например, если параметры->FullySpecified.ProcessorEnableMask не заданы биты.
STATUS_NOT_FOUND
Один из аргументов не найден. Например, указанное устройство не имеет прерываний или указанный вектор прерывания не назначается ни одному устройству.

Комментарии

WdmlibIoConnectInterruptEx можно использовать для регистрации подпрограммы обработки прерываний как для традиционных прерываний на основе строки (например, поддерживаемых шиной PCI), так и для более новых прерываний с сигналом сообщения (например, поддерживаемых PCI версий 2.2 и 3.0).

Драйверы регистрируют подпрограмму InterruptService для прерываний на основе строк и подпрограмму InterruptMessageService для прерываний, по сигналу сообщений. Дополнительные сведения о том, как указать члены параметров в каждом случае, см. в разделе IO_CONNECT_INTERRUPT_PARAMETERS.

WdmlibIoConnectInterruptEx обновляет элементы параметров , предоставляя сведения об прерываниях устройства. Дополнительные сведения о WdmlibIoConnectInterruptEx см. в разделе IO_CONNECT_INTERRUPT_PARAMETERS.

Используйте WdmlibIoDisconnectInterruptEx , чтобы отменить регистрацию подпрограммы, зарегистрированной в WdmlibIoConnectInterruptEx.

Драйвер не должен программировать свое устройство для создания прерываний, пока он не подключит свою ISR. Таким образом, ISR не может срабатыть до возврата WdmlibIoConnectInterruptEx . Однако существуют некоторые устройства, такие как кнопки, которые не являются программируемыми. Для этих устройств драйвер должен быть готов к обработке ISR сразу после вызова WdmlibIoConnectInterruptEx. Строка прерывания уже может быть утверждена при вызове WdmlibIoConnectInterruptEx и может срабатывать сразу после включения линии на контроллере прерывания до очистки вызова WdmlibIoConnectInterruptEx .

Дополнительные сведения о регистрации процедуры обработки прерываний см. в разделе Регистрация ISR.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционной системы Windows. Драйверы, которые также должны работать в Windows 2000, Windows XP или Windows Server 2003, могут вместо этого связаться с Iointex.lib для использования подпрограммы.
Целевая платформа Универсальное
Верхняя часть iointex.h (включая Iointex.h, Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs

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

IO_CONNECT_INTERRUPT_PARAMETERS

InterruptMessageService

InterruptService

WdmlibIoDisconnectInterruptEx