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 |