Hardwareressourcen

Hardwareressourcen sind die zuweisbaren, adressierbaren Buspfade, die es Peripheriegeräten und Systemprozessoren ermöglichen, miteinander zu kommunizieren. Hardwareressourcen umfassen in der Regel E/A-Portadressen, Interruptvektoren und Blöcke busrelativer Speicheradressen.

Bevor das System mit einem Gerät instance kommunizieren kann, muss der PnP-Manager dem Gerät Hardwareressourcen zuweisen instance basierend auf dem Wissen, welche Ressourcen verfügbar sind und welche das Gerät instance verwenden kann. Ressourcen werden jedem Geräteknoten in der Gerätestruktur zugewiesen (vorausgesetzt, das dargestellte Gerät benötigt Ressourcen und diese Ressourcen sind verfügbar). Der PnP-Manager verfolgt Hardwareressourcen mithilfe von Listen nach, die er Geräteknoten ordnet. Es werden zwei Arten von Listen verwendet:

Liste der Ressourcenanforderungen
Geräte sind in der Regel für den Betrieb innerhalb von Bereichen von Ressourcenzuweisungen konzipiert. Für instance benötigt ein Gerät möglicherweise nur einen Unterbrechungsvektor, aber es kann einen beliebigen Vektorbereich verwenden. Für jedes Gerät instance verwaltet der PnP-Manager eine Liste der Ressourcenanforderungen, die alle Bereiche von Hardwareressourcen angibt, in denen das Gerät betrieben werden kann. Der Name der Liste ergibt sich aus der Tatsache, dass der PnP-Manager ressourcen aus dieser Liste auswählen muss, wenn sie dem Gerät zugewiesen werden.

Kernelmoduscode gibt Ressourcenanforderungenlisten mithilfe IO_RESOURCE_REQUIREMENTS_LIST Strukturen an (entweder als Eingabe in Systemroutinen oder als Reaktion auf IRPs). Benutzermoduscode gibt Ressourcenanforderungenlisten an, die PnP-Konfigurations-Manager-Strukturen als Eingabe für PnP-Konfigurations-Manager-Funktionen verwenden.

Ressourcenliste
Wenn der PnP-Manager einem Gerät Ressourcen zuweist, verfolgt er diese Zuweisungen, indem er eine Liste der zugewiesenen Ressourcen für jedes Gerät instance erstellt. Diese Listen können als Ressourcenzuweisungslisten bezeichnet werden, aber dieser Name wird in der Regel als Ressourcenlisten abgekürzt. Der PnP-Manager kann den Inhalt der Ressourcenliste ändern, wenn Geräte einem System hinzugefügt oder aus diesem entfernt werden und Ressourcen anschließend neu zugeordnet werden. (Ressourcen können auch von einem PnP-BIOS zugewiesen werden. Außerdem kann die Installationssoftware mithilfe von INF-Dateien oder Benutzereingaben den PnP-Manager zwingen, einem Gerät bestimmte Ressourcen zuzuweisen.)

Kernelmoduscode gibt Ressourcenlisten an, indem CM_RESOURCE_LIST Strukturen verwendet werden (entweder als Eingabe in Systemroutinen oder als Reaktion auf IRPs). Benutzermoduscode gibt Ressourcenlisten an, die PnP-Konfigurations-Manager-Strukturen als Eingabe für PnP-Konfigurations-Manager-Funktionen verwenden.

Der PnP-Manager speichert Ressourcenbedarfslisten und Ressourcenlisten in der Registrierung, wo sie mithilfe von Regedit.exe angezeigt werden können. Treiber können indirekt über Plug & Play Routinen und Plug & Play Neben-IRPs auf diese Listen zugreifen. Benutzermodusanwendungen können PnP-Konfigurations-Manager-Funktionen verwenden. (Treiber und Anwendungen dürfen nicht direkt über Registrierungsfunktionen auf diese Listen zugreifen, da sich das Speicherformat in einer zukünftigen Version ändern kann.)

Logische Konfigurationen

Sowohl Ressourcenbedarfslisten als auch Ressourcenlisten enthalten eine oder mehrere logische Konfigurationen. Jede logische Konfiguration identifiziert entweder einen Bereich akzeptabler Ressourcen oder einen Satz bestimmter Ressourcen für ein bestimmtes Gerät instance. Darüber hinaus gehört jede logische Konfiguration für ein Gerät instance zu einem der logischen Konfigurationstypen. Konfigurationstypen sind unten aufgeführt. Jedem Gerät instance können mehrere logische Konfigurationen desselben oder unterschiedlichen Typs zugewiesen werden.

Logische Konfigurationstypen für Ressourcenbedarfslisten

Grundlegende Konfiguration
Eine Liste der Ressourcenanforderungen, die Ressourcenbereiche identifiziert, die von einem Plug & Play Gerät bereitgestellt werden. Ein Treiber sollte diese Liste zurückgeben, wenn er die IRP_MN_QUERY_RESOURCE_REQUIREMENTS IRP empfängt. (Die grundlegende Konfiguration für ein Nicht-PnP-Gerät kann in einer INF-Datei beschrieben werden. In diesem Fall liest die Geräteinstallationssoftware die INF-Datei und ruft PnP-Konfigurations-Manager-Funktionen auf, um eine Anforderungsliste zu erstellen.)

Gefilterte Konfiguration
Eine Ressourcenanforderungsliste, die einem Treiberstapel bereitgestellt wurde, möglicherweise geändert und dann vom Treiberstapel als Reaktion auf die IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP zurückgegeben wurde. Der PnP-Manager verwendet die resultierende gefilterte Konfiguration als Grundlage für die Zuweisung von Ressourcen.

Konfiguration außer Kraft setzen
Eine Ressourcenanforderungenliste, die grundlegende Konfigurationen außer Kraft setzt. In der Regel erstellt ein Geräteinstallationsprogramm eine Überschreibungskonfiguration, wenn die INF-Datei des Geräts einen INF-Abschnitt DDInstall.LogConfigOverride enthält. Eine Überschreibungskonfiguration wird nicht entfernt, wenn das Gerät physisch aus dem System entfernt wird.

Logische Konfigurationstypen für Ressourcenlisten

Startkonfiguration
Eine Ressourcenliste, die die Ressourcen identifiziert, die einem Gerät instance zugewiesen sind, wenn das System gestartet wird. (Für PnP-Geräte ist dies die konfiguration, die vom BIOS bereitgestellt wird. Bei Nicht-PnP-Geräten können diese Ressourcen von Jumpern auf der Karte ausgewählt werden.) Ein Treiber sollte diese Ressourcenliste zurückgeben, wenn er die IRP_MN_QUERY_RESOURCES IRP empfängt. (Eine Startkonfiguration kann teilweise leer sein, wenn das BIOS nicht alle von einem Gerät verwendeten Ressourcen ermitteln kann.) Der PnP-Manager kann diese Liste ändern, wenn ein Gerät entfernt oder neu gestartet wird. Für Nicht-PnP-Geräte kann dieser Konfigurationstyp anstelle einer erzwungenen Konfiguration verwendet werden. In diesem Fall hat er eine niedrigere Konfigurationspriorität als eine gleichwertige erzwungene Konfiguration. Für jedes Gerät instance kann nur eine Startkonfiguration vorhanden sein.

Erzwungene Konfiguration
Eine Ressourcenliste, die Ressourcen identifiziert, die ein Gerät instance verwenden muss. Eine erzwungene Konfiguration verhindert, dass der PnP-Manager dem Gerät instance andere Ressourcen zuweisen kann. Ein Geräteinstallationsprogramm kann eine erzwungene Konfiguration basierend auf Informationen erstellen, die entweder in einem INF enthalten sind oder von einem Benutzer empfangen werden. Eine erzwungene Konfiguration wird nicht entfernt, wenn ihr Gerät physisch aus dem System entfernt wird. Für jedes Gerät instance kann nur eine erzwungene Konfiguration vorhanden sein.

Zugeordnete Konfiguration
Eine Ressourcenliste, in der Ressourcen identifiziert werden, die derzeit von einem Gerät instance verwendet werden. Für jedes Gerät instance kann nur eine zugeordnete Konfiguration vorhanden sein.

Gerätetreiber sind für die Bestimmung der Grundlegenden Konfiguration, gefilterten Konfiguration und Startkonfiguration eines PnP-kompatiblen Geräts und für die Rückgabe dieser Informationen als Reaktion auf IRPs verantwortlich, die vom PnP-Manager gesendet werden. (Weitere Informationen finden Sie unter Hinzufügen eines PnP-Geräts zu einem ausgeführten System.) Treiberinstallationssoftware kann Überschreibungskonfigurationen, erzwungene Konfigurationen und für Nicht-PnP-Geräte Startkonfigurationen erstellen. Der PnP-Manager verwaltet jedes Gerät instance zugeordnete Konfiguration.

Jeder Konfiguration wird beim Erstellen eine Priorität zugewiesen. Wenn der PnP-Manager feststellt, dass einem Gerät instance mehrere logische Konfigurationen desselben Typs zugewiesen wurden, versucht er, zuerst die konfiguration mit der höchsten Priorität zu verwenden. Wenn diese Konfiguration zu Ressourcenkonflikten führt, versucht sie die Konfiguration mit der nächst niedrigeren Priorität. (Eine Liste der Konfigurationsprioritäten finden Sie unter CM_Add_Empty_Log_Conf.)