Entwurfshandbuch zur Kernelmodustreiber-Architektur
Hinweis
Informationen zu Programmierschnittstellen, die Ihr Treiber implementieren oder aufrufen kann, finden Sie in der Kernelmodustreiber-Referenz.
Dieser Abschnitt enthält allgemeine Konzepte, die Ihnen dabei helfen, die Programmierung im Kernelmodus zu verstehen und bestimmte Techniken der Kernelprogrammierung zu beschreiben. Eine allgemeine Übersicht über Windows-Treiber finden Sie unter Beginnen Sie mit der Entwicklung von Windows-Treibern. Dort finden Sie eine allgemeine Übersicht über Windows-Komponenten, eine Auflistung der in Windows verwendeten Gerätetreiber, eine Erläuterung der Ziele von Windows-Gerätetreibern und eine Erläuterung der im Kit enthaltenen generischen Beispielgerätetreiber.
Dieser Abschnitt enthält konzeptionelle Informationen, die Ihnen beim Erstellen von Kernelmodustreibern helfen.
Eine Übersicht mit:
- Eine Übersicht über Windows-Komponenten
- Designziele für Kernelmodustreiber
- Ein Katalog mit Beispiel-Kernelmodustreibern
- Bewährte Methoden für die Kerneltreiberentwicklung, wie vom Microsoft Surface-Team kompiliert
Im Abschnitt Kernelmoduskomponenten werden die primären Kernelmodus-Manager und -Komponenten des Windows-Betriebssystems beschrieben.
Komponente Beschreibung Manager Objekt-Manager im Windows-Kernelmodus Verwaltet Objekte: Dateien, Geräte, Synchronisierungsmechanismen, Registrierungsschlüssel usw. Speicher-Manager im Windows-Kernelmodus Verwaltet den physischen Speicher für das Betriebssystem. Prozess- und Thread-Manager im Windows-Kernelmodus Verarbeitet die Ausführung aller Threads in einem Prozess. E/A-Manager im Windows-Kernelmodus Verwaltet die Kommunikation zwischen Anwendungen und den von Gerätetreibern bereitgestellten Schnittstellen. Plug & Play-Manager im Windows-Kernelmodus Ein Subsystem des E/A-Managers, der Plug and Play (PnP)-Manager ermöglicht einem PC zu erkennen, wann ein Gerät dem System hinzugefügt wird. Energie-Manager im Windows-Kernelmodus Verwaltet die geordnete Änderung des Energiestatus für alle Geräte, die Leistungszustandsänderungen unterstützen. Konfigurations-Manager im Windows-Kernelmodus Verwaltet die Registrierung, z. B. die Überwachung von Änderungen in der Registrierung oder das Registrieren von Rückrufen für bestimmte Registrierungsdaten. Kerneltransaktions-Manager im Windows-Kernelmodus Implementiert die Transaktionsverarbeitung im Kernelmodus. Sicherheitsreferenzüberwachtung im Windows-Kernelmodus Bietet Routinen für den Treiber, um mit der Zugriffssteuerung zu arbeiten. Libraries Kernelbibliothek im Windows-Kernelmodus Implementiert die Kernfunktionalität, von der alles andere im Betriebssystem abhängt. Der Microsoft Windows-Kernel bietet grundlegende Vorgänge auf niedriger Ebene wie das Planen von Threads oder Routinghardwareunterbrechungen. Bibliothek für die Unterstützung durch das Management im Windows-Kernelmodus Bezieht sich auf Kernelmoduskomponenten, die eine Vielzahl von Diensten für Gerätetreiber bereitstellen, darunter: Objektverwaltung, Speicherverwaltung, Prozess- und Threadverwaltung, Eingabe-/Ausgabeverwaltung und Konfigurationsverwaltung. Laufzeitbibliothek im Windows-Kernelmodus Eine Reihe gängiger Hilfsprogrammroutinen, die von verschiedenen Kernelmoduskomponenten benötigt werden. SafeString-Bibliothek im Windows-Kernelmodus Eine sichere Zeichenfolgenbibliothek, um eine höhere Sicherheit bei der Kernelmodusentwicklung zu gewährleisten. DMA-Bibliothek im Windows-Kernelmodus Eine DMA-Bibliothek (Direct Memory Access) für Gerätetreiberentwickler. HAL-Bibliothek im Windows-Kernelmodus Eine Hardware-Abstraktionsebene (HAL) für die Kernelmodustreiberentwicklung. CLFS-Bibliothek im Windows-Kernelmodus Ein Transaktionsprotokollierungssystem, das Common Log File System (CLFS). WMI-Bibliothek im Windows-Kernelmodus Ein allgemeiner Mechanismus zum Verwalten von Komponenten, der als Windows Management Instrumentation (WMI) bezeichnet wird. Schreiben von WDM-Treibern und Einführung in WDM stellen Informationen bereit, die zum Schreiben von Treibern mit dem Windows-Treibermodell (WDM) erforderlich sind.
Geräteobjekte und die anderen Themen unter Geräteobjekte und Geräte-Stacks beschreiben, wie das Betriebssystem Geräte nach Geräteobjekten darstellt.
Die Speicherverwaltung für Windows-Treiber veranschaulicht, wie Kernelmodustreiber Speicher zum Speichern interner Daten, Puffern von Daten während der E/A-Vorgänge und Freigeben von Speicher für andere Kernelmodus- und Benutzermoduskomponenten zuweisen.
Sicherheit unter Steuern des Gerätezugriffs und Berechtigungen für SDDL für Geräteobjekte stellen Sie sicher, dass Ihre Treiber so sicher wie möglich sind.
Unter Behandlung von IRPs wird beschrieben, wie Kernelmodustreiber E/A-Anforderungspakete (IRPs) behandeln.
DMA Direct Memory Access (DMA) ist ein wichtiger Aspekt der Treiberentwicklung, und die Themen in diesem Knoten behandeln DMA ausführlich.
Controllerobjekte stellen einen physischen Gerätecontroller mit angeschlossenen Geräten dar.
Interrupt Service Routines (ISRs) behandeln Unterbrechungen für Treiber eines physischen Geräts, das Unterbrechungen empfängt.
Message-Signaled Interrupts lösen eine Unterbrechung aus, indem ein Wert in eine bestimmte Speicheradresse geschrieben wird.
Verzögerte Prozeduraufrufe (DPC-Objekte) können von ISRs in die Warteschlange gestellt werden und zu einem späteren Zeitpunkt und zu einer niedrigeren IRQL als der ISR ausgeführt werden.
Plug and Play (PnP) konzentriert sich auf die Systemsoftwareunterstützung für PnP und die Verwendung dieser Unterstützung für die Implementierung von PnP.
Energieverwaltung beschreibt die Architektur, die einen umfassenden Ansatz für die System- und Gerätestromverwaltung bietet.
Windows Management Instrumentation (WMI) umfasst Erweiterungen für den Kernelmodustreiber, mit denen Ihr Treiber als WMI-Anbieter agieren kann. Ein WMI-Anbieter stellt Mess- und Instrumentierungsdaten für WMI-Verbraucher bereit, z. B. Anwendungen im Benutzermodus.
Treiberprogrammierungstechniken Das Programmieren von Treibern im Kernelmodus von Windows erfordert Techniken, die sich manchmal erheblich von denen der normalen Benutzermodusprogrammierung unterscheiden.