Freigeben über


SD-Kartentreiberstapel

Secure Digital (SD) Karte Technologie begann mit tragbaren Miniatur-Speicherkarten, aber mit der Veröffentlichung der SDIO-Spezifikation (Secure Digital I/O) hat die Secure Digital Association (SDA) die Definition der SD-Technologie erweitert, um eine Vielzahl von Karte Funktionen wie Bluetooth-Geräte, Videokameras, Wireless LAN-Geräte und GPS-Empfänger (Global Positioning System) zu umfassen. In diesem Dokument wird erläutert, wie das Betriebssystem die Karte Funktionserweiterungen der SD-Technologie unterstützt.

Kartenleser für viele frühe SD-Speichergeräte wurden für die Verbindung mit dem USB-Bus entwickelt. Windows verwaltet diese Geräte mit dem USB-Massenspeichertreiber (usbstor.sys) und dem nativen Speicherklassentreiber (disk.sys), wie im folgenden Diagramm dargestellt:

Diagramm, das einen Gerätestapel für ein frühes SD-Speichergerät veranschaulicht.

Eine ausführlichere Beschreibung des Gerätestapels, den Windows für einen Speicher Karte erstellt, der eine Verbindung mit dem USB-Bus herstellt, finden Sie unter Device Object Example for a USB Mass Storage Device.

Das Betriebssystem bietet Unterstützung für SD-Hostcontroller, die direkt mit dem PCI-Bus verbunden sind. Wenn das System einen SD-Hostcontroller aufzählt, lädt es einen nativen SD-Bustreiber (sdbus.sys). Wenn ein Benutzer einen SD-Speicher Karte einfügt, lädt Windows einen nativen SD-Speicherklassentreiber (sffdisk.sys) und einen Speicherminiporttreiber (sffp_sd.sys) auf den Bustreiber. Wenn ein Benutzer eine SD-Karte mit einer anderen Art von Funktion einfügt, z. B. GPS oder WLAN, lädt Windows einen vom Hersteller bereitgestellten Treiber für das Gerät.

Alle Gerätetreiber im SD-Stapel, unabhängig davon, ob sie systemintern oder vom Anbieter bereitgestellt werden, müssen mit dem SD-Bustreiber kommunizieren, indem Routinen in der statischen SD-Busbibliothek (sdbus.lib) aufgerufen werden. SD-Treiber müssen beim Kompilieren eine Verknüpfung mit dieser Bibliothek herstellen. Das folgende Diagramm zeigt den SD-Treiberstapel, den das System erstellt, wenn es einen SD-Controller und zugehörige Karten auflistet:

Diagramm zur Veranschaulichung der Beziehung zwischen den Sd-Software- und Hardwarekomponenten.

SD-Gerätetreiber können weder direkt auf den Hostcontroller-Registersatz zugreifen, noch können sie Passthroughbefehle für den Hostcontroller in E/A-Anforderungspakete (IRPs) einbetten. SD-Gerätetreiber geben Befehle an den Hostcontroller aus, indem sie die SD-Busbibliotheksroutinen aufrufen, und die Bibliothek generiert dann die entsprechenden SD-Befehle für den Hostcontroller.

SD-Gerätetreiber müssen Standard-PnP- und Power-IRPs verarbeiten, aber sie fordern oder verwalten keine Hardwareressourcen wie Ports, Arbeitsspeicher oder Interruptvektoren. Daher sind SD-Gerätetreiber zum Zuordnen von Hardwareressourcen beim Verarbeiten einer IRP_MN_START_DEVICE Anforderung nicht erforderlich. Wenn ein SD-Gerätetreiber jedoch eine IRP_MN_STOP_DEVICE Anforderung empfängt, muss er alle E/A-Vorgänge beenden. Darüber hinaus muss der Treiber seine Schnittstelle zum SD-Bustreiber auf eine IRP_MN_QUERY_REMOVE_DEVICE Anforderung schließen.

Wenn ein Hardware-Interrupt auftritt, fängt die SD-Busbibliothek den Interrupt ab, maskiert weitere Interrupts und benachrichtigt den SD-Gerätetreiber mithilfe einer Rückrufroutine, dass ein Hardware-Interrupt aufgetreten ist. Eine Beschreibung der Rückrufroutine, die der Bustreiber verwendet, um einen SD-Gerätetreiber über Hardwareunterbrechungen zu benachrichtigen, finden Sie unter PSDBUS_CALLBACK_ROUTINE. Eine allgemeine Erklärung dazu, wie der SD-Treiberstapel und die Bibliotheken Hardwareunterbrechungen verwalten, finden Sie unter Behandeln von Secure Digital (SD) Hardware Interrupts.

Die Headerdatei ntddsd.h , die im Windows Driver Kit (WDK) bereitgestellt wird, deklariert die Prototypen für die Routinen, die von der SD-Busbibliothek verfügbar gemacht werden.