Объекты списка ресурсов
Системный драйвер PortCls реализует интерфейс IResourceList для использования драйверов мини-портов. Объект IResourceList представляет собой список ресурсов конфигурации, который представляет собой список системных аппаратных ресурсов, которые диспетчер Plug and Play назначает устройству во время запуска устройства. Дополнительные сведения о назначении ресурсов во время запуска см. в разделе Запуск устройства в драйвере функции.
Список ресурсов содержит следующие типы ресурсов:
Векторы прерываний
Каналы DMA
Адреса портов ввода-вывода
Блоки адресов памяти относительно шины
Сведения о типах ресурсов см. в разделе Аппаратные ресурсы.
Объект IResourceList инкапсулирует переведенные и непереводимые (или "необработанные") версии списка ресурсов. Дополнительные сведения о переведенных и непереводимых ресурсах см. в разделе Сопоставление адресов Bus-Relative с виртуальными адресами.
Интерфейс IResourceList поддерживает следующие методы:
IResourceList::AddEntryFromParent
IResourceList::FindTranslatedEntry
IResourceList::FindUntranslatedEntry
IResourceList::NumberOfEntries
IResourceList::NumberOfEntriesOfType
IResourceList::UntranslatedList
Файл заголовка Portcls.h определяет набор макросов для упрощения обработки объектов списка ресурсов. Эти макросы создают вызовы методов IResourceList . Дополнительные сведения см. в разделе IResourceList.
Кроме того, Portcls.h определяет пару функций для создания списков ресурсов:
Чтобы запустить устройства на карта аудиоадаптера, операционная система вызывает подпрограмму запуска устройства драйвера адаптера (см. последовательность запуска) и передает объект списка ресурсов в качестве входного параметра. Этот список содержит все системные ресурсы, назначенные операционной системой драйверу адаптера.
В процедуре запуска устройства драйвер адаптера запускает все устройства драйвера адаптера (волновое устройство, MIDI-устройство и т. д.). Для управления каждым устройством драйвер адаптера создает объект драйвера мини-порта и связанный с ним объект драйвера порта. Драйвер адаптера разделяет ресурсы в списке ресурсов между различными устройствами в карта адаптера. Для этой цели драйвер обычно вызывает PcNewResourceSublist , чтобы создать объект списка ресурсов для каждого устройства. Затем драйвер вызывает IResourceList::AddEntryFromParent столько раз, сколько необходимо, чтобы скопировать выбранные ресурсы из родительского списка в различные дочерние списки. Кроме того, драйвер адаптера может назначать себе некоторые ресурсы.
Затем подпрограмма start-device вызывает метод IPort::Init каждого драйвера порта и передает объект списка ресурсов устройства (содержащий дочерний список) в качестве входного параметра. Метод IPort::Init каждого драйвера порта вызывает метод IMiniportXxx::Init соответствующего драйвера miniport, который является одним из следующих:
Метод IPort::Init передает свой объект списка ресурсов методу IMiniportXxx::Init в качестве входного параметра. Затем драйвер мини-порта может использовать каналы DMA, прерывания и другие системные ресурсы в списке ресурсов.
Пример кода см. в примере аудиодрайвера Sb16 в комплекте драйверов Microsoft Windows (WDK).