DRIVER_LIST_CONTROL Rückruffunktion (wdm.h)
Die AdapterListControl Routine startet einen DMA-Punkt/Gather-Vorgang (Direct Memory Access).
Syntax
DRIVER_LIST_CONTROL DriverListControl;
void DriverListControl(
[in] _DEVICE_OBJECT *DeviceObject,
[in] _IRP *Irp,
[in] PSCATTER_GATHER_LIST ScatterGather,
[in] PVOID Context
)
{...}
Parameter
[in] DeviceObject
Vom Aufrufer bereitgestellter Zeiger auf eine DEVICE_OBJECT Struktur. Dies ist das Geräteobjekt für das Zielgerät, das zuvor vom AddDevice Routine des Treibers erstellt wurde.
[in] Irp
Vom Aufrufer bereitgestellter Zeiger auf eine IRP--Struktur, die den E/A-Vorgang beschreibt, wenn der Treiber über eine StartIo Routine verfügt. Andernfalls wird nicht verwendet.
[in] ScatterGather
Vom Aufrufer bereitgestellter Zeiger auf eine SCATTER_GATHER_LIST Struktur, die Punkt/Sammelbereiche beschreibt.
[in] Context
Vom Aufrufer bereitgestellter Zeiger auf treiberdefinierte Kontextinformationen, die in einem vorherigen Aufruf von AllocateAdapterChannelangegeben wurden.
Rückgabewert
Nichts
Bemerkungen
Um eine AdapterListControl Routine für ein bestimmtes Geräteobjekt zu registrieren, muss ein Treiber IoGetDmaAdapter- aufrufen, um ein Adapterobjekt abzurufen. Rufen Sie dann GetScatterGatherList- auf, um die Verwendung des Adapters anzufordern und die Adresse des AdapterListControl Routine anzugeben. Wenn der Adapter kostenlos ist, ruft das System die AdapterListControl Routine auf.
Beispiele
Um eine AdapterListControl- Rückrufroutine zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der rückrufroutine identifiziert, die Sie definieren. Windows stellt eine Reihe von Rückruffunktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen 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 AdapterListControl- Rückrufroutine zu definieren, die MyAdapterListControl
heißt, verwenden Sie den DRIVER_LIST_CONTROL Typ, wie in diesem Codebeispiel gezeigt:
DRIVER_LIST_CONTROL MyAdapterListControl;
Implementieren Sie dann Ihre Rückrufroutine wie folgt:
_Use_decl_annotations_
VOID
MyAdapterListControl(
struct _DEVICE_OBJECT *DeviceObject,
struct _IRP *Irp,
PSCATTER_GATHER_LIST ScatterGather,
PVOID Context
)
{
// Function body
}
Der DRIVER_LIST_CONTROL Funktionstyp wird in der Wdm.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 DRIVER_LIST_CONTROL 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 WDM-Treiber. Informationen zu _Use_decl_annotations_
finden Sie unter Annotating Function Behavior.
Ausführliche Informationen zum Implementieren einer AdapterListControl--Routine finden Sie unter Using Scatter/Gather DMA.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
IRQL- | Wird bei DISPATCH_LEVEL aufgerufen. |