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


Интерфейс 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
    );

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

Имя типа ресурса Сингулярная форма Форма во множественном числе
CmResourceTypePort Port порты;
CmResourceTypeInterrupt Прервать Прерывания
CmResourceTypeMemory Память Воспоминания
CmResourceTypeDma Dma Dmas
CmResourceTypeDeviceSpecific DeviceSpecific DeviceSpecifics
CmResourceTypeBusNumber BusNumber BusNumbers
CmResourceTypePrivate Private Рядовые
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 возвращает список непереводимых ресурсов.

Требования

Требование Значение
Целевая платформа Windows
Header portcls.h