Функция WdmlibIoConnectInterruptEx (iointex.h)
Функция WdmlibIoConnectInterruptEx регистрирует подпрограмму обработки прерываний для прерываний устройства.
Синтаксис
NTSTATUS WdmlibIoConnectInterruptEx(
[in, out] PIO_CONNECT_INTERRUPT_PARAMETERS Parameters
);
Параметры
[in, out] Parameters
Указатель на структуру IO_CONNECT_INTERRUPT_PARAMETERS , указывающую устройство и подпрограмму обработки прерываний. По возвращении WdmlibIoConnectInterruptEx обновляет эту структуру для хранения сведений об прерываниях устройства.
Возвращаемое значение
Функция возвращает STATUS_SUCCESS при успешном выполнении или соответствующее значение ошибки NTSTATUS при сбое. Возможные значения ошибок:
Код возврата | Описание |
---|---|
|
Операция недопустима для указанного устройства. Например, Parameters->Version = CONNECT_LINE_BASED, и система назначила устройству несколько сообщений прерываний. |
|
Вызывающий объект указал недопустимый параметр. Эта ошибка возникает, например, когда вызывающий объект задает значение NULL для объекта устройства устройства. |
|
Вызывающий объект указал недопустимое значение для элемента Version структуры, на которую указывает Parameters . Параметры->Версия должна быть одной из CONNECT_LINE_BASED, CONNECT_MESSAGE_BASED или CONNECT_FULLY_SPECIFIED. |
|
Вызывающий объект указал недопустимое значение для десятого члена структуры, на которую указывает Parameters . Эта ошибка возникает, например, если параметры->FullySpecified.ProcessorEnableMask не заданы биты. |
|
Один из аргументов не найден. Например, указанное устройство не имеет прерываний или указанный вектор прерывания не назначается ни одному устройству. |
Комментарии
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 |