Freigeben über


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 von der 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

Keine

Bemerkungen

Die StartIo-Routine eines Treibers wird in einem beliebigen Threadkontext unter IRQL = DISPATCH_LEVEL ausgeführt.

Die StartIo-Routine ist optional. Die StartIo-Routine eines Treibers sollte, sofern angegeben, XxxStartIo heißen, 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 für festzulegen, wenn seine StartIo-Routine aufgerufen wird.

Ausführliche Informationen zum Implementieren der StartIo-Routine eines Treibers finden Sie unter Schreiben einer StartIo-Routine.

Beispiele

Um eine StartIo-Rückrufroutine zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der von Ihnen definierten Rückrufroutine identifiziert. Windows bietet eine Reihe von Rückruffunktionstypen für Treiber. Das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen 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 Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine StartIo-Rückrufroutine mit dem Namen MyStartIozu definieren, verwenden Sie den typ DRIVER_STARTIO, 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 ist in der Headerdatei Wdm.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, fügen Sie die _Use_decl_annotations_ Anmerkung ihrer Funktionsdefinition hinzu. Die _Use_decl_annotations_ Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den DRIVER_STARTIO 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 WDM-Treiber. Informationen zu _Use_decl_annotations_finden Sie unter Annotating Function Behavior.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
IRQL Wird bei DISPATCH_LEVEL aufgerufen.