Unterstützung von Netzwerkschnittstellenkarten
In diesem Thema werden die Typen von Netzwerkschnittstellenkarten (NICs) beschrieben, die ein NDIS-Miniporttreiber verwalten kann, sowie die Art und Weise, wie die verschiedenen Arten von NICs die Art und Weise beeinflussen, wie ein Treiber Netzwerkdaten überträgt.
Melden des mittleren Typs einer Netzwerkkarte an NDIS
Um einen mittleren Typ für eine NIC zu melden, übergibt ein Miniporttreiber einen Zeiger auf eine NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES-Struktur im MiniportAttributes-Parameter der NdisMSetMiniportAttributes-Funktion . Ein Miniporttreiber ruft während der Initialisierung NdisMSetMiniportAttributes aus seiner MiniportInitializeEx-Funktion auf. Miniport-Treiber sollten die MiniportAttributes-Attribute nach dem Festlegen der Registrierungsattribute in der NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES-Struktur und vor dem Festlegen anderer Attribute festlegen. Das Festlegen der MiniportAttributes-Attribute ist obligatorisch. Der Treiber legt beim Festlegen der MiniportAttributes-Attribute den MediaType-Member der NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES-Struktur auf den entsprechenden Medientyp fest.
Wenn ein überlastender NDIS-Protokolltreiber NdisOpenAdapterEx aufruft, um eine Bindung an einen angegebenen Miniportadapter herzustellen, stellt er eine Liste der mittleren Typen bereit, mit denen er betrieben werden kann. NDIS verwendet die Informationen des Miniporttreibers und des Protokolltreibers, um eine Bindung einzurichten. Diese Bindung stellt den Pfad für die Übertragung von Netzwerkdaten auf und ab dem Treiberstapel bereit.
Physische NICs
Die Schritte, die ein Miniporttreiber zum Initialisieren eines Miniportadapters und zum Senden und Empfangen von Netzwerkdaten ausführt, können wie folgt von den Features eines physischen Geräts abhängen.
NDIS-WDM NICs
Bei NDIS-WDM-NICs, z. B. USB-basierten NICs, spielt die Art und Weise, wie der Miniporttreiber Speicher mit DMA verwaltet, für NDIS keine Rolle und ist für ihn nicht sichtbar.
Bus-master DMA-NICs
Diese NICs können direkt auf den Hostspeicher über einen on-board DMA-Controller zugreifen, der die Übertragung von Daten zwischen dem Netzwerk und dem Hostspeicher ohne Verwendung der Host-CPU verwaltet.
Zum Senden richtet der Miniporttreiber die NIC ein, um die ausgehenden Puffer zuzuordnen. Der Miniporttreiber bewirkt dann, dass das Gerät seine Übertragung aus diesem Speicher startet. Der NIC DMA-Controller überträgt die Daten aus dem freigegebenen Systemspeicher in das Netzwerk und unterbricht die CPU, wenn der Sendevorgang abgeschlossen ist. Zum Empfangen überträgt der DMA-Controller eingehende Daten an den Hostspeicher, bevor er den Host mit einem Interrupt benachrichtigt.
Eine Bus-master DMA-NIC verfügt in der Regel über einen integrierten Ringpuffer, den der Miniporttreiber einer Reihe von Puffern im Systemspeicher zuordnet. In der Regel kann die NIC so programmiert werden, dass mehrere Pakete effizient verarbeitet werden. Ein Miniporttreiber, der eine solche NIC verwaltet, unterstützt in der Regel Multipacket-Sende- und Empfangsvorgänge, da die Netzwerkkarte mehrere Pakete effizient verarbeiten und dadurch den E/A-Durchsatz verbessern kann.
Nichtbusmaster-DMA-NICs
Derzeit umfassen DMA-NiCs ohne Busmaster Folgendes:
System-DMA-NICs
Ein Miniporttreiber, der eine solche NIC verwaltet, verwendet den DMA-Systemcontroller, um die Übertragung von Paketdaten in das und aus dem Netzwerk zu verwalten. Die Übertragung der Daten erfordert die Zusammenarbeit der Host-CPU.
Virtuelle NICs und Miniports
Auf einem virtuellen Computer können NDIS-Miniporttreiber entweder reine Softwareressourcen als virtuellen Miniport oder eine virtuelle NIC verwalten, die Hardwareressourcen darstellt. In der folgenden Tabelle werden die Unterschiede zwischen einem virtuellen Miniport und einer virtuellen NIC erläutert.
attribute | Virtueller Miniport | Virtuelle NIC |
---|---|---|
Definition | Ein NDIS-Miniporttreiber, der einem softwarebasierten PnP-Gerät zugeordnet ist. | Eine NIC, die vom Hostbetriebssystem-Hypervisor verwaltet wird. Der Hypervisor lässt den virtuellen Computer denken, dass er über eine gewisse Hardware verfügt, aber in der physischen Welt gibt es keine solche Hardware. |
Verfügt über Unterbrechungen | Nein | Ja |
Kann DMA verwenden | Nein | Ja |
Wird erstellt oder zerstört durch... | Das Gastbetriebssystem | Das Hostbetriebssystem |
Kann außerhalb einer Gast-VM erreichen | Nein | Ja |