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


Интерфейс IResourceList (portcls.h)

Интерфейс IResourceList предоставляет абстракцию списка ресурсов конфигурации, который является списком системных аппаратных ресурсов, которые диспетчер Plug and Play назначает устройству во время запуска. Ресурсы в списке могут включать векторы прерываний, каналы DMA, адреса портов ввода-вывода и блоки адресов относительной шины памяти. Дополнительные сведения см. в разделе запуск устройства вдрайвера функций.

Системный драйвер PortCls реализует интерфейс IResourceList и предоставляет его драйверам адаптера. Когда PortCls вызывает подпрограмму запуска устройства драйвера адаптера (см. запуск устройства), он передает объект IResourceList в качестве одного из параметров вызова.

Файл заголовка portcls.h определяет набор макросов для упрощения обработки объектов списка ресурсов. Для каждого типа ресурса определены следующие четыре макроса:

ULONG
  NumberOfpluralresourcename(
    void
 ); 

PCM_PARTIAL_RESOURCE_DESCRIPTOR
  FindTranslatedsingularresourcename(
    ULONG  Index
    );

PCM_PARTIAL_RESOURCE_DESCRIPTOR
  FindUntranslatedsingularresourcename(
    ULONG  Index
    );

NTSTATUS
  AddsingularresourcenameFromParent(
    PRESOURCELIST  Parent,
    ULONG  Index
    );

В следующей таблице показаны типы ресурсов, для которых определены эти макросы.

Имя типа ресурса Форма сингулярным образом Форма plural
CmResourceTypePort Порт Порты
CmResourceTypeInterrupt Прерывать Прерывания
CmResourceTypeMemory Память Воспоминания
CmResourceTypeDma Dma Dmas
CmResourceTypeDeviceSpecific DeviceSpecific DeviceSpecifics
CmResourceTypeBusNumber BusNumber BusNumbers
CmResourceTypePrivate Частный Рядовые
CmResourceTypeAssignedResource AssignedResource AssignedResources
CmResourceTypeSubAllocateFrom SubAllocateFrom SubAllocateFroms
 

Значения имен типов ресурсов в левом столбце выше см. в CM_PARTIAL_RESOURCE_DESCRIPTOR.

В следующей таблице явно перечислены четыре макроса, определяющие portcls.h для каждого из девяти типов ресурсов. Справа от каждого макроса является эквивалентным вызовом метода IResourceList.

Макрос Эквивалентный вызов IResourceList
NumberOfPorts() NumberOfEntriesOfType(CmResourceTypePort)
FindTranslatedPort(n) FindTranslatedEntry(CmResourceTypePort,(n))
FindUntranslatedPort(n) FindUntranslatedEntry(CmResourceTypePort,(n))
AddPortFromParent(p,n) AddEntryFromParent((p),CmResourceTypePort,(n))
NumberOfInterrupts() NumberOfEntriesOfType(CmResourceTypeInterrupt)
FindTranslatedInterrupt(n) FindTranslatedEntry(CmResourceTypeInterrupt,(n))
FindUntranslatedInterrupt(n) FindUntranslatedEntry(CmResourceTypeInterrupt,(n))
AddInterruptFromParent(p,n) AddEntryFromParent((p),CmResourceTypeInterrupt,(n))
NumberOfMemories() NumberOfEntriesOfType(CmResourceTypeMemory)
FindTranslatedMemory(n) FindTranslatedEntry(CmResourceTypeMemory,(n))
FindUntranslatedMemory(n) FindUntranslatedEntry(CmResourceTypeMemory,(n))
AddMemoryFromParent(p,n) AddEntryFromParent((p),CmResourceTypeMemory,(n))
NumberOfDmas() NumberOfEntriesOfType(CmResourceTypeDma)
FindTranslatedDma(n) FindTranslatedEntry(CmResourceTypeDma,(n))
FindUntranslatedDma(n) FindUntranslatedEntry(CmResourceTypeDma,(n))
AddDmaFromParent(p,n) AddEntryFromParent((p),CmResourceTypeDma,(n))
NumberOfDeviceSpecifics() NumberOfEntriesOfType(CmResourceTypeDeviceSpecific)
FindTranslatedDeviceSpecific(n) FindTranslatedEntry(CmResourceTypeDeviceSpecific,(n))
FindUntranslatedDeviceSpecific(n) FindUntranslatedEntry(CmResourceTypeDeviceSpecific,(n))
AddDeviceSpecificFromParent(p,n) AddEntryFromParent((p),CmResourceTypeDeviceSpecific,(n))
NumberOfBusNumbers() NumberOfEntriesOfType(CmResourceTypeBusNumber)
FindTranslatedBusNumber(n) FindTranslatedEntry(CmResourceTypeBusNumber,(n))
FindUntranslatedBusNumber(n) FindUntranslatedEntry(CmResourceTypeBusNumber,(n))
AddBusNumberFromParent(p,n) AddEntryFromParent((p),CmResourceTypeBusNumber,(n))
NumberOfDevicePrivates() NumberOfEntriesOfType(CmResourceTypeDevicePrivate)
FindTranslatedDevicePrivate(n) FindTranslatedEntry(CmResourceTypeDevicePrivate,(n))
FindUntranslatedDevicePrivate(n) FindUntranslatedEntry(CmResourceTypeDevicePrivate,(n))
AddDevicePrivateFromParent(p,n) AddEntryFromParent((p),CmResourceTypeDevicePrivate,(n))
NumberOfAssignedResources() NumberOfEntriesOfType(CmResourceTypeAssignedResource)
FindTranslatedAssignedResource(n) FindTranslatedEntry(CmResourceTypeAssignedResource,(n))
FindUntranslatedAssignedResource(n) FindUntranslatedEntry(CmResourceTypeAssignedResource,(n))
AddAssignedResourceFromParent(p,n) AddEntryFromParent((p),CmResourceTypeAssignedResource,(n))
NumberOfSubAllocateFroms() NumberOfEntriesOfType(CmResourceTypeSubAllocateFrom)
FindTranslatedSubAllocateFrom(n) FindTranslatedEntry(CmResourceTypeSubAllocateFrom,(n))
FindUntranslatedSubAllocateFrom(n) FindUntranslatedEntry(CmResourceTypeSubAllocateFrom,(n))
AddSubAllocateFromFromParent(p,n) AddEntryFromParent((p),CmResourceTypeSubAllocateFrom,(n))

Наследство

Интерфейс IResourceList наследует от интерфейса IUnknown.

Методика

Интерфейс IResourceList имеет эти методы.

 
IResourceList::AddEntry

Метод AddEntry добавляет запись в список ресурсов.
IResourceList::AddEntryFromParent

Метод AddEntryFromParent добавляет в список ресурсов запись, найденную в родительском списке списка ресурсов.
IResourceList::FindTranslatedEntry

Метод FindTranslatedEntry возвращает указатель на преобразованную запись указанного типа или NULL, если такая запись не найдена.
IResourceList::FindUntranslatedEntry

Метод FindUntranslatedEntry возвращает указатель на нетрансляционную запись указанного типа или NULL, если такой указатель не найден.
IResourceList::NumberOfEntries

Метод NumberOfEntries возвращает количество элементов ресурсов в списке ресурсов.
IResourceList::NumberOfEntriesOfType

Метод NumberOfEntriesOfType возвращает количество элементов ресурсов заданного типа в списке ресурсов. Для каждого типа ресурса определяется макрос для вызова этого метода, как описано ранее.
IResourceList::TranslatedList

Метод TranslatedList возвращает список переведенных ресурсов.
IResourceList::UntranslatedList

Метод UntranslatedList возвращает список нетрансляционных ресурсов.

Требования

Требование Ценность
целевая платформа Виндоус
заголовка portcls.h