StorPortBuildScatterGatherList-Funktion (storport.h)
Die StorPortBuildScatterGatherList-Routine erstellt eine Scatter/Gather-Liste für den angegebenen Datenpuffer.
Syntax
ULONG StorPortBuildScatterGatherList(
[in] PVOID HwDeviceExtension,
[in] PVOID Mdl,
[in] PVOID CurrentVa,
[in] ULONG Length,
[in] PPOST_SCATTER_GATHER_EXECUTE ExecutionRoutine,
[in] PVOID Context,
[in] BOOLEAN WriteToDevice,
[in, out] PVOID ScatterGatherBuffer,
[in] ULONG ScatterGatherBufferLength
);
Parameter
[in] HwDeviceExtension
Ein Zeiger auf die Hardwaregeräteerweiterung für den Host Bus Adapter (HBA).
[in] Mdl
Ein Zeiger auf eine Speicherdeskriptorliste (Memory Descriptor List, MDL), die die dem Datenpuffer zugeordneten Speicherseiten beschreibt.
[in] CurrentVa
Die virtuelle Adresse des Datenpuffers.
[in] Length
Die Länge des Datenpuffers in Bytes.
[in] ExecutionRoutine
Ein Zeiger auf eine vom Miniporttreiber bereitgestellte ExecutionRoutine. Der Storport-Treiber ruft diese Routine auf, nachdem die Scatter/Gather-Liste erstellt wurde. Der Miniporttreiber sollte alle Vorgänge ausführen, die die Scatter/Gather-Liste innerhalb der Ausführungsroutine verwenden, nicht im Code, der dem Aufruf der StorPortBuildScatterGatherList-Routine folgt.
Eine ExecutionRoutine wird wie folgt deklariert:
VOID
ExecutionRoutine (
IN PVOID *DeviceObject,
IN PVOID *Irp,
IN PSTOR_SCATTER_GATHER_LIST ScatterGather,
IN PVOID Context
);
DeviceObject
Miniporttreiber sollten diesen Parameter ignorieren.
Irp
Miniporttreiber sollten diesen Parameter ignorieren.
ScatterGather
Ein Zeiger auf eine STOR_SCATTER_GATHER_LIST-Struktur , die die Scatter/Gather-Liste für den angegebenen Datenpuffer enthält.
Kontext
Der im Context-Parameter der StorPortBuildScatterGatherList-Funktion angegebene Kontextwert.
Der Storport-Treiber ruft die ExecutionRoutine eines Miniporttreibers unter IRQL = DISPATCH_LEVEL auf.
[in] Context
Ein Kontextwert, den der Porttreiber an die im ExecutionRoutine-Parameter angegebene Ausführungsroutine übergibt. Die Ausführungsroutine verwendet diesen Wert, um die Anforderung eindeutig zu identifizieren.
[in] WriteToDevice
Ein Wert, der die Richtung der DMA-Übertragung angibt. Ein Wert von TRUE gibt eine Übertragung vom Datenpuffer an das Gerät an, und der Wert FALSE gibt eine Übertragung vom Gerät an den Datenpuffer an.
[in, out] ScatterGatherBuffer
Ein Zeiger auf einen vom Miniport bereitgestellten Puffer, der die Punkt-/Sammlungsliste empfängt. Ein Miniporttreiber kann Arbeitsspeicher für diesen Puffer zuweisen, indem er die StorPortAllocatePool-Routine aufruft.
[in] ScatterGatherBufferLength
Die Größe des Puffers in Bytes, auf den der ScatterGatherBuffer-Parameter verweist.
Rückgabewert
StorPortBuildScatterGatherList gibt einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Diese Funktion ist auf dem aktiven Betriebssystem nicht implementiert. |
|
Gibt an, dass die Routine die Scatter/Gather-Liste erfolgreich erstellt hat.
Wichtig Weitere Informationen finden Sie unter "Hinweise".
|
|
Die übergebene HwDeviceExtension war NULL. |
|
Der Aufruf wurde an einem ungültigen IRQL ausgeführt. |
|
Das System verfügt über unzureichende Kartenregister für die Übertragung. |
|
Der Length-Parameter ist zu groß, um in den Puffer zu passen. |
Hinweise
Der Miniporttreiber ruft StorPortPutScatterGatherList auf, um die Ressourcen freizugeben, die StorPortBuildScatterGatherList beim Erstellen der Scatter/Gather-Liste zugewiesen hat.
Der Miniporttreiber muss StorPortPutScatterGatherList aufrufen, bevor der Speicher freigegeben oder wiederverwendet wird, den er für die Scatter/Gather-Liste zugewiesen hat.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | storport.h (einschließlich Storport.h) |
IRQL | DISPATCH_LEVEL |