Ändern einer Ressourcenbedarfsliste
Nachdem der PnP-Manager sichergestellt hat, dass alle Treiber eines neu verbundenen Geräts geladen wurden, sendet er die Liste der Hardwareanforderungen des Geräts an den Treiberstapel des Geräts.
Während die Liste den Stapel hinunter wandert, ruft das Framework jede Funktion und jede Filtertreiber-Rückruffunktion EvtDeviceFilterRemoveResourceRequirerements auf und übergibt die Hardwareanforderungenliste als Eingabeargument. Mit dieser Rückruffunktion können Hardwareressourcen aus der Liste der Hardwareanforderungen entfernt werden, die vom Bustreiber angegeben wurden, der Funktionstreiber jedoch feststellt, dass sie für den Betrieb des Geräts nicht erforderlich sind.
Beispielsweise kann ein PCI-Bustreiber gemäß der PCI-Spezifikation eine E/A-Speicherplatzressource im Arbeitsspeicher replizieren. Wenn Ihr Gerät ohne Verwendung der E/A-Speicherplatzressource arbeiten kann, kann der Funktionstreiber des Geräts die E/A-Speicherplatzressource aus der Liste der Hardwareanforderungen entfernen.
Um Elemente aus der Anforderungsliste zu entfernen, kann ein Treiber die folgenden Schritte ausführen:
- Rufen Sie die folgenden Methoden auf, um die logischen Konfigurationen in der Liste der Ressourcenanforderungen zu ändern:
- WdfIoResourceRequirementsListGetCount, um die Anzahl logischer Konfigurationen abzurufen.
- WdfIoResourceRequirementsListGetIoResList, um Zugriff auf eine logische Konfiguration zu erhalten.
- WdfIoResourceRequirerementsListRemove und WdfIoResourceRequirerementsList, um eine logische Konfiguration zu entfernen.
- Rufen Sie die folgenden Methoden auf, um die Ressourcendeskriptoren innerhalb einer logischen Konfiguration zu ändern:
- WdfIoResourceListGetCount, um die Anzahl der Ressourcendeskriptoren abzurufen.
- WdfIoResourceListGetDescriptor, um Zugriff auf einen Ressourcendeskriptor zu erhalten.
- WdfIoResourceListRemove und WdfIoResourceListRemoveByDescriptor, um einen Ressourcendeskriptor zu entfernen.
Während die Liste den Treiberstapel sichert, ruft das Framework jede Funktion auf und filtert die Rückruffunktion EvtDeviceFilterAddRequirements des Treibers und übergibt die Hardwareanforderungenliste als Eingabeargument. Diese Rückruffunktion kann zusätzliche Hardwareressourcen hinzufügen, die der Funktionstreiber benötigt, um das Gerät betriebsbereit zu machen.
Um der Liste der Hardwareanforderungen Elemente hinzuzufügen, kann ein Treiber die folgenden Aktionen ausführen:
- Rufen Sie die folgenden Methoden auf, um die logischen Konfigurationen in der Liste der Ressourcenanforderungen zu ändern:
- WdfIoResourceRequirementsListGetCount, um die Anzahl logischer Konfigurationen abzurufen.
- WdfIoResourceRequirementsListGetIoResList, um Zugriff auf eine logische Konfiguration zu erhalten.
- WdfIoResourceListCreate, um eine neue logische Konfiguration zu erstellen.
- WdfIoResourceRequirementsListAppendIoResList oder WdfIoResourceRequirementsListInsertIoResList, um eine neue logische Konfiguration hinzuzufügen.
- Rufen Sie die folgenden Methoden auf, um die Ressourcendeskriptoren innerhalb einer logischen Konfiguration zu ändern:
- WdfIoResourceListGetCount, um die Anzahl der Ressourcendeskriptoren abzurufen.
- WdfIoResourceListGetDescriptor, um Zugriff auf einen Ressourcendeskriptor zu erhalten.
- WdfIoResourceListAppendDescriptor oder WdfIoResourceListInsertDescriptor, um einen Ressourcendeskriptor hinzuzufügen.