Метод 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 |