IResourceList 接口 (portcls.h)

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