MINIPORT_PROCESS_SG_LIST Rückruffunktion (ndis.h)
Ein Busmaster-Miniporttreiber bietet eine MiniportProcessSGList- Funktion zum Verarbeiten von Punkt-/Sammellisten für Netzwerkdaten.
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/Gather-Listenpuffer. Dies ist nicht notwendigerweise derselbe Puffer wie der im Aufruf des Aufrufs angegebene Treiber. NdisMAllocateNetBufferSGList Funktion
[in] Context
Ein Zeiger auf einen Kontextbereich, den der Miniporttreiber vor dem Aufrufen NdisMAllocateNetBufferSGListerstellt hat.
Rückgabewert
Nichts
Bemerkungen
Miniporttreiber rufen die NdisMRegisterScatterGatherDma Funktion zum Registrieren einer MiniportProcessSGList--Funktion. Wenn ein Miniporttreiber NdisMAllocateNetBufferSGList aufruft, um eine Punkt/Sammelliste zu erstellen, ruft NDIS HAL auf, um die Liste zu erstellen.
NDIS ruft die MiniportProcessSGList Funktion des Miniporttreibers auf, wenn NdisMAllocateNetBufferSGList- erfolgreich ist. Eine Erfolgsrückgabe von 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 sendet die physischen Adressen der Punkt-/Gather-Liste an die DMA der NIC und gibt einen Sendebefehl an die NIC aus.
HAL kann MiniportProcessSGList- vor oder nach der Rückgabe von NDIS aus NdisMAllocateNetBufferSGListaufrufen. Daher sollten Treiberautoren nicht davon ausgehen, dass der Aufruf im Kontext von NdisMAllocateNetBufferSGListerfolgt.
NDIS ruft MiniportProcessSGList bei IRQL = DISPATCH_LEVEL auf.
beispiele für
Um eine MiniportProcessSGList--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der Funktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Funktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.Um beispielsweise eine MiniportProcessSGList--Funktion zu definieren, die den Namen "MyProcessSGList" hat, verwenden Sie den MINIPORT_PROCESS_SG_LIST Typ, 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 wird in der Ndis.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den funktionstyp MINIPORT_PROCESS_SG_LIST in der Headerdatei angewendet werden, verwendet 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_annotationsfinden Sie unter Annotating Function Behavior.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Unterstützt in NDIS 6.0 und höher. |
Zielplattform- | Fenster |
Header- | ndis.h (include Ndis.h) |
IRQL- | DISPATCH_LEVEL |