DRIVER_STARTIO Rückruffunktion (wdm.h)
Die StartIo Routine startet den von einem IRP beschriebenen E/A-Vorgang.
Syntax
DRIVER_STARTIO DriverStartio;
void DriverStartio(
[in, out] _DEVICE_OBJECT *DeviceObject,
[in, out] _IRP *Irp
)
{...}
Parameter
[in, out] 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, out] Irp
Vom Aufrufer bereitgestellter Zeiger auf eine IRP--Struktur, die den angeforderten E/A-Vorgang beschreibt.
Rückgabewert
Nichts
Bemerkungen
Die StartIo Routine eines Treibers wird in einem beliebigen Threadkontext bei IRQL = DISPATCH_LEVEL ausgeführt.
Die StartIo Routine ist optional. Wenn angegeben, sollte die startIo - StartIo-Routine eines Treibers XxxStartIo-benannt werden, wobei Xxx- ein treiberspezifisches Präfix ist. Die DriverEntry Routine des Treibers muss die Adresse der StartIo Routine in DriverObject->DriverStartIo-speichern. (Wenn keine Routine angegeben wird, muss dieser Zeiger NULL-sein.)
Ein Treiber kann IoSetStartIoAttributes- verwenden, um Attribute festzulegen, wenn die StartIo- Routine aufgerufen wird.
Ausführliche Informationen zum Implementieren der StartIo--Routine eines Fahrers finden Sie unter Schreiben einer StartIo Routine-.
Beispiele
Um eine StartIo- Rückrufroutine zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der von Ihnen definierten Rückrufroutine identifiziert. 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.
Wenn Sie beispielsweise eine StartIo- Rückrufroutine definieren möchten, die MyStartIo
heißt, verwenden Sie den DRIVER_STARTIO Typ, wie in diesem Codebeispiel gezeigt:
DRIVER_STARTIO MyStartIo;
Implementieren Sie dann Ihre Rückrufroutine wie folgt:
_Use_decl_annotations_
VOID
MyStartIo(
struct _DEVICE_OBJECT *DeviceObject,
struct _IRP *Irp
)
{
// Function body
}
Der DRIVER_STARTIO 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_STARTIO 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.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
IRQL- | Wird bei DISPATCH_LEVEL aufgerufen. |