IResourceList-Schnittstelle (portcls.h)

Die IResourceList Schnittstelle stellt eine Abstraktion einer Konfigurationsressourcenliste bereit, die eine Liste der Systemhardwareressourcen ist, die der technologie Plug and Play-Manager einem Gerät zum Startzeit ordnet. Die Ressourcen in der Liste können Unterbrechungsvektoren, DMA-Kanäle, I/O-Portadressen und Blöcke von Bus-relativen Speicheradressen enthalten. Weitere Informationen finden Sie unter Starten eines Geräts in einem Funktionstreiber.

Der PortCls-Systemtreiber implementiert die IResourceList Schnittstelle und stellt sie adaptertreibern zur Verfügung. Wenn PortCls die Gerätestartroutine eines Adaptertreibers aufruft (siehe Start eines Geräts), wird ein IResourceList Objekt als eine der Aufrufparameter übergeben.

Die Headerdatei portcls.h definiert 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 Singularform Pluralformular
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
 

Informationen zu den Bedeutungen der Ressourcentypnamen in der linken Spalte oben finden Sie unter CM_PARTIAL_RESOURCE_DESCRIPTOR.

In der folgenden Tabelle werden explizit die vier Makros aufgelistet, die portcls.h für jede der neun Ressourcentypen definiert. Rechts neben jedem Makro handelt es sich um den entsprechenden 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))
AddSubAllocateFromParent(p,n) AddEntryFromParent(p),CmResourceTypeSubAllocateFrom,(n))

Vererbung

Die IResourceList-Schnittstelle erbt von der IUnknown-Schnittstelle.

Methoden

Die IResourceList-Schnittstelle weist diese Methoden auf.

 
IResourceList::AddEntry

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

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

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

Die FindUntranslatedEntry-Methode gibt einen Zeiger auf einen nichttranslatierten 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 nichttranslatierten Ressourcen zurück.

Anforderungen

   
Zielplattform Windows
Kopfzeile portcls.h