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