Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hardwareressourcen sind die zuzuweisenden, adressierbaren Buspfade, mit denen Peripheriegeräte und Systemprozessoren miteinander kommunizieren können. Hardwareressourcen enthalten in der Regel E/A-Portadressen, Unterbrechungsvektoren und Blöcke von busrelativen Speicheradressen.
Bevor das System mit einer Geräteinstanz kommunizieren kann, muss der PnP-Manager der Geräteinstanz Hardwareressourcen zuweisen, je nachdem, welche Ressourcen verfügbar sind und welche die Geräteinstanz verwenden kann. Ressourcen werden jedem Geräteknoten in der Gerätestruktur zugewiesen (vorausgesetzt, dass das dargestellte Gerät Ressourcen benötigt und diese Ressourcen verfügbar sind). Der PnP-Manager verfolgt Hardwareressourcen mithilfe von Listen, die er Geräteknoten zuordnet. Es verwendet zwei Arten von Listen:
Ressourcenanforderungenliste
Geräte sind in der Regel so konzipiert, dass sie innerhalb von zugewiesenen Ressourcenbereichen operieren. Beispielsweise erfordert ein Gerät möglicherweise nur einen Unterbrechungsvektor, aber es kann einen beliebigen Bereich von Vektoren verwenden. Für jede Geräteinstanz verwaltet der PnP-Manager eine Ressourcenanforderungensliste , die alle Bereiche der Hardwareressourcen angibt, in denen das Gerät ausgeführt werden kann. Der Name der Liste stammt aus der Tatsache, dass der PnP-Manager verpflichtet ist, Ressourcen aus dieser Liste auszuwählen, wenn sie dem Gerät zugewiesen werden sollen.
Kernel-Modus-Code gibt Ressourcen-Anforderungslisten mit IO_RESOURCE_REQUIREMENTS_LIST-Strukturen an (entweder als Eingabe an Systemroutinen oder als Reaktion auf IRPs). Der Benutzermoduscode gibt Ressourcenanforderungenslisten mithilfe von PnP-Konfigurations-Manager-Strukturen als Eingabe für PnP-Konfigurations-Manager-Funktionen an.
Ressourcenliste
Wenn der PnP-Manager einem Gerät Ressourcen zuweist, verfolgt er diese Zuordnungen, indem eine Liste der zugewiesenen Ressourcen für jede Geräteinstanz erstellt wird. Diese Listen können als Ressourcenzuordnungslisten bezeichnet werden, dieser Name wird jedoch in der Regel auf Ressourcenlisten gekürzt. Der PnP-Manager kann ressourcenlisteninhalte ändern, wenn Geräte zu einem System hinzugefügt oder daraus entfernt werden, und ressourcen werden anschließend neu zugeordnet. (Ressourcen können auch von einem PnP-BIOS zugewiesen werden. Außerdem kann die Installationssoftware , die INF-Dateien oder Benutzereingaben verwendet, erzwingen, dass der PnP-Manager bestimmten Ressourcen einem Gerät zuweist.)
Kernelmoduscode gibt Ressourcenlisten mithilfe von CM_RESOURCE_LIST Strukturen an (entweder als Eingabe für Systemroutinen oder als Reaktion auf IRPs). Der Benutzermoduscode gibt Ressourcenlisten mithilfe von PnP-Konfigurations-Manager-Strukturen als Eingabe für PnP-Konfigurations-Manager-Funktionen an.
Der PnP-Manager speichert Ressourcenbedarfslisten und Ressourcenlisten in der Registrierung, in der sie mithilfe von Regedit.exeangezeigt werden können. Treiber können indirekt über Plug-and-Play-Routinen und Plug-and-Play-Minor-IRPs auf diese Listen zugreifen. Benutzermodusanwendungen können PnP-Konfigurations-Manager-Funktionen verwenden. (Treiber und Anwendungen dürfen nicht direkt mithilfe von Registrierungsfunktionen auf diese Listen zugreifen, da das Speicherformat in einer zukünftigen Version geändert werden kann.)
Logische Konfigurationen
Sowohl Ressourcenanforderungenslisten als auch Ressourcenlisten enthalten mindestens eine logische Konfiguration. Jede logische Konfiguration identifiziert entweder einen Bereich akzeptabler Ressourcen oder eine Reihe von bestimmten Ressourcen für eine bestimmte Geräteinstanz. Darüber hinaus gehört jede logische Konfiguration für eine Geräteinstanz zu einem der logischen Konfigurationstypen. Die Konfigurationstypen sind unten aufgeführt. Es können mehrere logische Konfigurationen derselben oder verschiedener Typen jeder Geräteinstanz zugewiesen werden.
Logische Konfigurationstypen für Ressourcenanforderungenlisten
Grundlegende Konfiguration
Eine Ressourcenanforderungensliste, die Ressourcenbereiche identifiziert, die von einem Plug- und Play-Gerät bereitgestellt werden. Ein Treiber sollte diese Liste zurückgeben, wenn er den 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 geräteinstallationssoftware die INF-Datei und ruft PnP Configuration Manager-Funktionen auf, um eine Anforderungsliste zu erstellen.)
Gefilterte Konfiguration
Eine Liste der Ressourcenanforderungen, die einem Treiberstapel bereitgestellt wurde, möglicherweise geändert und dann vom Treiberstapel zurückgegeben, als Reaktion auf die IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP. Der PnP-Manager verwendet die resultierende gefilterte Konfiguration als Grundlage für die Zuordnung von Ressourcen.
Außerkraftsetzen der Konfiguration
Eine Ressourcenanforderungensliste, die grundlegende Konfigurationen außer Kraft setzt. In der Regel erstellt ein Geräteinstallationsprogramm eine Außerkraftsetzungskonfiguration, wenn die INF-Datei des Geräts einen INF DDInstall.LogConfigOverride-Abschnitt 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 einer Geräteinstanz zugewiesen sind, wenn das System gestartet wird. (Bei PnP-Geräten ist dies die vom BIOS bereitgestellte Konfiguration; für Nicht-PnP-Geräte können diese Ressourcen von Jumpers auf der Karte ausgewählt werden.) Ein Treiber sollte diese Ressourcenliste zurückgeben, wenn er den 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. Bei Nicht-PnP-Geräten 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 jede Geräteinstanz kann nur eine Startkonfiguration vorhanden sein.
Erzwungene Konfiguration
Eine Ressourcenliste, die Ressourcen identifiziert, die eine Geräteinstanz verwenden muss. Eine erzwungene Konfiguration verhindert, dass der PnP-Manager der Geräteinstanz andere Ressourcen zuweist. 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 das Gerät physisch aus dem System entfernt wird. Für jede Geräteinstanz kann nur eine erzwungene Konfiguration vorhanden sein.
Zugewiesene Konfiguration
Eine Ressourcenliste, die Ressourcen identifiziert, die derzeit von einer Geräteinstanz verwendet werden. Für jede Geräteinstanz kann nur eine zugeordnete Konfiguration vorhanden sein.
Gerätetreiber sind dafür verantwortlich, die grundlegende Konfiguration, gefilterte Konfiguration und Startkonfiguration eines PnP-kompatiblen Geräts zu ermitteln und diese Informationen als Reaktion auf irps zurückzugeben, die vom PnP-Manager gesendet werden. (Weitere Informationen finden Sie unter Hinzufügen eines PnP-Geräts zu einem ausgeführten System.) Treiberinstallationssoftware kann Außerkraftsetzungskonfigurationen, erzwungene Konfigurationen und für Nicht-PnP-Geräte, Startkonfigurationen erstellen. Der PnP-Manager verwaltet die zugeordnete Konfiguration jeder Geräteinstanz.
Jeder Konfiguration wird beim Erstellen eine Priorität zugewiesen. Wenn der PnP-Manager feststellt, dass einer Geräteinstanz mehrere logische Konfigurationen desselben Typs zugewiesen wurden, versucht er zuerst, die Instanz mit der höchsten Priorität zu verwenden. Wenn diese Konfiguration zu Ressourcenkonflikten führt, wird die Konfiguration mit der nächsten niedrigeren Priorität versucht. (Eine Liste der Konfigurationsprioritäten finden Sie unter CM_Add_Empty_Log_Conf.)