MINIPORT_PROCESS_SG_LIST Rückruffunktion (ndis.h)
Ein Bus-master Miniporttreiber stellt eine MiniportProcessSGList-Funktion zum Verarbeiten von Punkt-/Sammlungslisten für Netzwerkdaten bereit.
Syntax
MINIPORT_PROCESS_SG_LIST MiniportProcessSgList;
void MiniportProcessSgList(
[in] PDEVICE_OBJECT pDO,
[in] PVOID Reserved,
[in] PSCATTER_GATHER_LIST pSGL,
[in] PVOID Context
)
{...}
Parameter
[in] pDO
Miniport-Treiber sollten diesen Parameter ignorieren.
[in] Reserved
Miniport-Treiber sollten diesen Parameter ignorieren.
[in] pSGL
Ein Zeiger auf einen Punkt/Sammlungslistenpuffer. Dies ist nicht notwendigerweise derselbe Puffer wie der, den der Treiber im Aufruf von angegeben hat. NdisMAllocateNetBufferSGList-Funktion
[in] Context
Ein Zeiger auf einen Kontextbereich, den der Miniporttreiber vor dem Aufruf von NdisMAllocateNetBufferSGList erstellt hat.
Rückgabewert
Keine
Bemerkungen
Miniporttreiber rufen die NdisMRegisterScatterGatherDma-Funktion zum Registrieren einer MiniportProcessSGList-Funktion . Wenn ein Miniporttreiber NdisMAllocateNetBufferSGList aufruft , um eine Scatter-/Gather-Liste zu erstellen, ruft NDIS HAL auf, um die Liste zu erstellen.
NDIS ruft die MiniportProcessSGList-Funktion des Miniporttreibers auf, wenn NdisMAllocateNetBufferSGList erfolgreich ist. Eine erfolgreiche Rückgabe dieser Funktion garantiert jedoch nicht, dass der Rückruf bereits aufgerufen wurde. Sie kann asynchron aufgerufen werden.
Wenn NDIS MiniportProcessSGList aufruft, kann der Treiber die NET_BUFFER-Struktur an die Hardware senden. MiniportProcessSGList übermittelt die physischen Adressen der Scatter/Gather-Liste an den DMA der NIC und gibt einen Sendebefehl an die NIC aus.
HAL kann MiniportProcessSGList vor oder nach der Rückgabe von NDIS aus NdisMAllocateNetBufferSGList aufrufen. Daher sollten Treiberautoren nicht davon ausgehen, dass der Aufruf im Kontext von NdisMAllocateNetBufferSGList erfolgt.
NDIS ruft MiniportProcessSGList unter IRQL = DISPATCH_LEVEL auf.
Beispiele
Um eine MiniportProcessSGList-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden Funktion identifiziert. Windows bietet eine Reihe von Funktionstypen für Treiber. Das Deklarieren einer Funktion mithilfe der Funktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.Wenn Sie beispielsweise eine MiniportProcessSGList-Funktion mit dem Namen "MyProcessSGList" definieren möchten, verwenden Sie den typ MINIPORT_PROCESS_SG_LIST , wie in diesem Codebeispiel gezeigt:
MINIPORT_PROCESS_SG_LIST MyProcessSGList;
Implementieren Sie dann Ihre Funktion wie folgt:
_Use_decl_annotations_
VOID
MyProcessSGList(
PDEVICE_OBJECT pDO,
PVOID Reserved,
PSCATTER_GATHER_LIST pSGL,
PVOID Context
)
{...}
Der MINIPORT_PROCESS_SG_LIST Funktionstyp ist in der Headerdatei Ndis.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, müssen Sie der Funktionsdefinition die anmerkung Use_decl_annotations hinzufügen. Die Use_decl_annotations-Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den MINIPORT_PROCESS_SG_LIST Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.
Informationen zu Use_decl_annotations finden Sie unter Verhalten von Funktionen mit Anmerkungen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt in NDIS 6.0 und höher. |
Zielplattform | Windows |
Kopfzeile | ndis.h (include Ndis.h) |
IRQL | DISPATCH_LEVEL |