IResourceList 接口提供配置资源列表的抽象,它是即插即用管理器在启动时分配给设备的系统硬件资源的列表。 列表中的资源可以包括中断向量、DMA 通道、I/O 端口地址和总线相对内存地址块。 有关详细信息,请参阅 在函数驱动程序中启动设备。
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 | 港口 | 港口 |
| 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 |