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


Метод IWDFDevice3::CreateInterrupt (wudfddi.h)

[ предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе Начало работы с UMDF.]

Метод CreateInterrupt создает объект прерывания платформы.

Синтаксис

HRESULT CreateInterrupt(
  [in]  PWUDF_INTERRUPT_CONFIG Configuration,
  [out] IWDFInterrupt          **ppInterrupt
);

Параметры

[in] Configuration

Указатель на структуру WUDF_INTERRUPT_CONFIG, которая была инициализирована вызовом макроса WUDF_INTERRUPT_CONFIG_INIT.

[out] ppInterrupt

Указатель на буфер, который получает указатель на интерфейс IWDFInterrupt для нового объекта прерывания.

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

Метод возвращает S_OK, если операция выполнена успешно. В противном случае этот метод возвращает один из кодов ошибок, определенных в Winerror.h.

Замечания

Драйвер должен вызывать CreateInterrupt один раз для каждого вектора прерываний, который требуется устройству. Если устройство поддерживает прерывания с сигналом сообщения (MSI), драйвер должен создать объект прерывания для каждого сообщения, которое может поддерживать устройство.

Драйверы обычно вызывают метод CreateInterrupt из функции обратно го вызова OnDeviceAdd, но также может вызывать этот метод из IPnpCallbackHardware2::OnPrepareHardware.

После того как диспетчер Plug and Play (PnP) назначает системные ресурсы устройству, платформа сохраняет сведения о назначенных ресурсах прерываний устройства в созданных драйвером объектах прерывания. (Драйверы, не поддерживающие Plug and Play, не могут использовать объекты прерываний.)

Система может не назначать все ресурсы прерывания, которые может поддерживать устройство. Например, драйвер создает восемь объектов прерываний для устройства, которое может поддерживать восемь сообщений MSI. Однако система может назначить устройству только одно сообщение. В этом случае семь объектов прерывания будут неиспользуются.

Как правило, драйвер должен хранить сведения о прерывании, например скопированное содержимое регистров прерываний устройства, в пространстве контекста объекта прерывания. Драйвер вызывает IWDFObject::AssignContext регистрировать контекст и запрашивать уведомление, когда объект становится недействительным.

UMDF поддерживает прерывания, активированные на уровне, начиная с Windows 8. Если драйвер, работающий в операционной системе ранее Windows 8, создает прерывание, активированное на уровне в OnDeviceAdd, CreateInterrupt успешно, так как операционная система еще не назначила ресурсы. Однако, когда платформа пытается подключить прерывание позже, устройство не запускается.

Дополнительные сведения об обработке прерываний в драйверах UMDF см. в доступ к оборудованию и обработке прерываний.

Примеры

HRESULT  hr;
IWDFInterrupt* pInterrupt;
WUDF_INTERRUPT_CONFIG  interruptConfig;

WUDF_INTERRUPT_CONFIG_INIT(&interruptConfig,
                           MyInterruptIsr,
                           MyInterruptWorkItem);

hr = pDevice->Create(&interruptConfig, 
                     &pInterrupt);

Требования

Требование Ценность
завершение поддержки Недоступно в UMDF 2.0 и более поздних версиях.
целевая платформа Настольный
минимальная версия UMDF 1.11
заголовка wudfddi.h
DLL WUDFx.dll

См. также

IWDFDevice3

WUDF_INTERRUPT_CONFIG

WUDF_INTERRUPT_CONFIG_INIT