Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Интерфейс 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 |