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


Объекты списка ресурсов

Системный драйвер PortCls реализует интерфейс IResourceList для использования драйверов мини-портов. Объект IResourceList представляет собой список ресурсов конфигурации, который представляет собой список системных аппаратных ресурсов, которые диспетчер Plug and Play назначает устройству во время запуска устройства. Дополнительные сведения о назначении ресурсов во время запуска см. в разделе Запуск устройства в драйвере функции.

Список ресурсов содержит следующие типы ресурсов:

  • Векторы прерываний

  • Каналы DMA

  • Адреса портов ввода-вывода

  • Блоки адресов памяти относительно шины

Сведения о типах ресурсов см. в разделе Аппаратные ресурсы.

Объект IResourceList инкапсулирует переведенные и непереводимые (или "необработанные") версии списка ресурсов. Дополнительные сведения о переведенных и непереводимых ресурсах см. в разделе Сопоставление адресов Bus-Relative с виртуальными адресами.

Интерфейс IResourceList поддерживает следующие методы:

IResourceList::AddEntry

IResourceList::AddEntryFromParent

IResourceList::FindTranslatedEntry

IResourceList::FindUntranslatedEntry

IResourceList::NumberOfEntries

IResourceList::NumberOfEntriesOfType

IResourceList::TranslatedList

IResourceList::UntranslatedList

Файл заголовка Portcls.h определяет набор макросов для упрощения обработки объектов списка ресурсов. Эти макросы создают вызовы методов IResourceList . Дополнительные сведения см. в разделе IResourceList.

Кроме того, Portcls.h определяет пару функций для создания списков ресурсов:

PcNewResourceList

PcNewResourceSublist

Чтобы запустить устройства на карта аудиоадаптера, операционная система вызывает подпрограмму запуска устройства драйвера адаптера (см. последовательность запуска) и передает объект списка ресурсов в качестве входного параметра. Этот список содержит все системные ресурсы, назначенные операционной системой драйверу адаптера.

В процедуре запуска устройства драйвер адаптера запускает все устройства драйвера адаптера (волновое устройство, MIDI-устройство и т. д.). Для управления каждым устройством драйвер адаптера создает объект драйвера мини-порта и связанный с ним объект драйвера порта. Драйвер адаптера разделяет ресурсы в списке ресурсов между различными устройствами в карта адаптера. Для этой цели драйвер обычно вызывает PcNewResourceSublist , чтобы создать объект списка ресурсов для каждого устройства. Затем драйвер вызывает IResourceList::AddEntryFromParent столько раз, сколько необходимо, чтобы скопировать выбранные ресурсы из родительского списка в различные дочерние списки. Кроме того, драйвер адаптера может назначать себе некоторые ресурсы.

Затем подпрограмма start-device вызывает метод IPort::Init каждого драйвера порта и передает объект списка ресурсов устройства (содержащий дочерний список) в качестве входного параметра. Метод IPort::Init каждого драйвера порта вызывает метод IMiniportXxx::Init соответствующего драйвера miniport, который является одним из следующих:

IMiniportDMus::Init

IMiniportMidi::Init

IMiniportTopology::Init

IMiniportWaveCyclic::Init

IMiniportWavePci::Init

Метод IPort::Init передает свой объект списка ресурсов методу IMiniportXxx::Init в качестве входного параметра. Затем драйвер мини-порта может использовать каналы DMA, прерывания и другие системные ресурсы в списке ресурсов.

Пример кода см. в примере аудиодрайвера Sb16 в комплекте драйверов Microsoft Windows (WDK).