IResourceList-Schnittstelle (portcls.h)

Die IResourceList Schnittstelle stellt eine Abstraktion einer Konfigurationsressourcenliste bereit. Dabei handelt es sich um eine Liste der Systemhardwareressourcen, die der Plug & Play-Manager einem Gerät zum Startzeitpunkt zuweist. Die Ressourcen in der Liste können Interruptvektoren, DMA-Kanäle, E/A-Portadressen und Blöcke mit busrelativen Speicheradressen enthalten. Weitere Informationen finden Sie unter Starten eines Geräts in einem Funktionstreiber.

Der PortCls-Systemtreiber implementiert die IResourceList Schnittstelle und macht sie für Adaptertreiber verfügbar. Wenn PortCls die Gerätestartroutine eines Adaptertreibers aufruft (siehe Starten eines Geräts), übergibt es ein IResourceList -Objekt als einen der Aufrufparameter.

Die Headerdatei portcls.h definiert einen Satz von Makros, um die Behandlung von Ressourcenlistenobjekten zu vereinfachen. Für jeden Ressourcentyp werden die folgenden vier Makros definiert:

ULONG
  NumberOfpluralresourcename(
    void
 ); 

PCM_PARTIAL_RESOURCE_DESCRIPTOR
  FindTranslatedsingularresourcename(
    ULONG  Index
    );

PCM_PARTIAL_RESOURCE_DESCRIPTOR
  FindUntranslatedsingularresourcename(
    ULONG  Index
    );

NTSTATUS
  AddsingularresourcenameFromParent(
    PRESOURCELIST  Parent,
    ULONG  Index
    );

In der folgenden Tabelle sind die Ressourcentypen aufgeführt, für die diese Makros definiert sind.

Name des Ressourcentyps Singular Form Pluralform
CmResourceTypePort Port Ports
CmResourceTypeInterrupt Interrupt Interrupts
CmResourceTypeMemory Arbeitsspeicher Erinnerungen
CmResourceTypeDma Dma Dmas
CmResourceTypeDeviceSpecific Devicespecific DeviceSpecifics
CmResourceTypeBusNumber BusNumber BusNumbers
CmResourceTypePrivate Privat Privat
CmResourceTypeAssignedResource AssignedResource AssignedResources
CmResourceTypeSubAllocateFrom SubAllocateFrom SubAllocateFroms
 

Die Bedeutung der Ressourcentypnamen in der linken Spalte oben finden Sie unter CM_PARTIAL_RESOURCE_DESCRIPTOR.

In der folgenden Tabelle sind explizit die vier Makros aufgeführt, die portcls.h für jeden der neun Ressourcentypen definiert. Rechts neben jedem Makro befindet sich der äquivalente Aufruf einer IResourceList -Methode.

Makro Gleichwertiger IResourceList-Aufruf
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))

Vererbung

Die IResourceList-Schnittstelle erbt von der IUnknown-Schnittstelle.

Methoden

Die IResourceList-Schnittstelle verfügt über diese Methoden.

 
IResourceList::AddEntry

Die AddEntry-Methode fügt einer Ressourcenliste einen Eintrag hinzu.
IResourceList::AddEntryFromParent

Die AddEntryFromParent-Methode fügt einer Ressourcenliste einen Eintrag in der übergeordneten Liste der Ressourcenliste hinzu.
IResourceList::FindTranslatedEntry

Die FindTranslatedEntry-Methode gibt einen Zeiger auf einen übersetzten Eintrag des angegebenen Typs oder NULL zurück, wenn kein solcher Eintrag gefunden wurde.
IResourceList::FindUntranslatedEntry

Die FindUntranslatedEntry-Methode gibt einen Zeiger auf einen nicht übersetzten Eintrag des angegebenen Typs oder NULL zurück, wenn kein solcher Zeiger gefunden wird.
IResourceList::NumberOfEntries

Die NumberOfEntries-Methode gibt die Anzahl der Ressourcenelemente in der Ressourcenliste zurück.
IResourceList::NumberOfEntriesOfType

Die NumberOfEntriesOfType-Methode gibt die Anzahl der Ressourcenelemente eines bestimmten Typs in der Ressourcenliste zurück. Für jeden Ressourcentyp wird ein Makro definiert, um diese Methode wie zuvor beschrieben aufzurufen.
IResourceList::TranslatedList

Die TranslatedList-Methode gibt die Liste der übersetzten Ressourcen zurück.
IResourceList::UntranslatedList

Die UntranslatedList-Methode gibt die Liste der nicht übersetzten Ressourcen zurück.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile portcls.h