Standardtreiberroutineanforderungen
Beachten Sie beim Entwerfen eines Kernelmodustreibers die folgenden Punkte:
Jeder Treiber muss über eine DriverEntry-Routine verfügen, die treiberweite Datenstrukturen und -ressourcen initialisiert. Der E/A-Manager ruft die DriverEntry-Routine auf, wenn er den Treiber lädt.
Jeder Treiber muss über mindestens eine Dispatchroutine verfügen, die E/A-Anforderungspakete (IRPs) empfängt und verarbeitet. Jeder Treiber muss den Einstiegspunkt einer Dispatchroutine in seiner DRIVER_OBJECT-Struktur für jeden IRP-Hauptfunktionscode platzieren, den der Treiber empfangen kann. Ein Treiber kann über eine separate Dispatchroutine für jeden IRP-Hauptfunktionscode verfügen oder über eine oder mehrere Dispatchroutinen verfügen, die mehrere Funktionscodes verarbeiten.
Jeder WDM-Treiber muss über eine Entladeroutine verfügen. Der Treiber muss den Einstiegspunkt der Unload-Routine im Treiberobjekt des Treibers platzieren. Die Verantwortlichkeiten der Entladeroutine eines PnP-Treibers sind minimal, aber die Entladeroutine eines Nicht-PnP-Treibers ist für die Freigabe aller Systemressourcen verantwortlich, die der Treiber verwendet.
Jeder WDM-Treiber muss über eine AddDevice-Routine verfügen und seinen Einstiegspunkt in der Treibererweiterung des Treiberobjekts definieren. Eine AddDevice-Routine ist für das Erstellen und Initialisieren von Geräteobjekten für jedes PnP-Gerät verantwortlich, das der Treiber steuert.
Ein Treiber kann über eine StartIo-Routine verfügen, die der E/A-Manager aufruft, um E/A-Vorgänge für IRPs zu starten, die der Treiber in eine vom System bereitgestellte IRP-Warteschlange eingereiht hat. Jeder Treiber ohne StartIo-Routine muss interne Warteschlangen für die empfangenen IRPs einrichten und verwalten, oder er muss alle IRP innerhalb seiner Dispatchroutinen abschließen. Treiber auf höherer Ebene verfügen möglicherweise nicht über eine StartIo-Routine , wenn sie IRPs einfach direkt aus ihren Dispatchroutinen an Treiber auf niedrigerer Ebene übergeben.
Bestimmte Miniporttreiber sind Ausnahmen von den vorherigen Anforderungen. Informationen zu den Anforderungen für Miniporttreiber finden Sie in der gerätetypspezifischen Dokumentation im Windows Driver Kit (WDK).
Ob ein Treiber über eine andere Art von Standardroutine verfügt, hängt von seiner Funktionalität und davon ab, wie dieser Treiber in das System passt (z. B. ob er mit vom System bereitgestellten Treibern interoptiert). Weitere Informationen finden Sie in der gerätetypspezifischen Dokumentation im WDK.