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.
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 Dispatch-Routine verfügen, die E/A-Anforderungspakete (I/O-Anforderungspakete) empfängt und verarbeitet. Jeder Treiber muss für jeden IRP-Hauptfunktionscode, den der Treiber empfangen kann, den Einstiegspunkt einer Verteilerroutine in seiner DRIVER_OBJECT Struktur platzieren. Ein Treiber kann eine separate Verteilerroutine für jeden IRP-Hauptfunktionscode haben oder über eine oder mehrere Dispatch-Routinen verfügen, die mehrere Funktionscodes verarbeiten.
Jeder WDM-Treiber muss über eine Unload-Routine verfügen. Der Treiber muss den Einstiegspunkt der Unload-Routine in das Treiberobjekt einfügen. Die Verantwortlichkeiten der Unload-Routine eines PnP-Treibers sind minimal, aber die Unload-Routine eines Nicht-PnP-Treibers ist für das Freigeben von 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, der nicht über eine StartIo-Routine verfügt, muss entweder interne Warteschlangen für die empfangenen IRPs einrichten und verwalten, oder er muss jedes IRP innerhalb seiner Dispatch-Routinen abschließen. Treiber auf höherer Ebene verfügen möglicherweise nicht über eine StartIo-Routine , wenn sie einfach IRPs direkt aus ihren Dispatch-Routinen 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ätespezifischen 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 interagiert). Ausführliche Informationen finden Sie in der gerätetypspezifischen Dokumentation im WDK.