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


Поиск и сопоставление аппаратных ресурсов в драйверах UMDF 1.x

Предупреждение

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

Архивные примеры UMDF 1 можно найти в Windows 11 версии 22H2 — обновление примеров драйверов за май 2022 г.

Дополнительные сведения см. в разделе начало работы с помощью UMDF.

Если вы используете UMDF версии 2.0 или более поздней, см. раздел Поиск и сопоставление аппаратных ресурсов.

Драйвер UMDF 1.x получает аппаратные ресурсы в метод обратного вызова IPnpCallbackHardware2::OnPrepareHardware . Драйвер использует интерфейс IWDFCmResourceList для просмотра переведенного списка ресурсов и определения сопоставленных в памяти регистров, портов ввода-вывода и прерываний.

Драйвер выполняет итерацию по списку ресурсов, вызывая IWDFCmResourceList::GetCount и IWDFCmResourceList::GetDescriptor.

Если драйвер получает регистры, сопоставленные с памятью, драйвер должен вызвать IWDFDevice3::MapIoSpace , чтобы сопоставить регистры, прежде чем он сможет получить к ним доступ. Как правило, драйвер сопоставляет свои регистры в методе IPnpCallbackHardware2::OnPrepareHardware . Драйвер отменяет сопоставление регистров в обратном вызове IPnpCallbackHardware2::OnReleaseHardware , вызывая IWDFDevice3::UnmapIoSpace. Обратите внимание, что сопоставление не требуется для портов ввода-вывода.

Пример, показывающий, как драйвер находит и сопоставляет ресурсы регистра, сопоставленные в памяти, см. в разделе IWDFDevice3::MapIoSpace.