IoStartNextPacket-Funktion (wdm.h)

Die IoStartNextPacket-Routine entfernt die nächste IRP(sofern vorhanden) aus der zugeordneten Gerätewarteschlange des jeweiligen Geräteobjekts und ruft die StartIo-Routine des Treibers auf.

Syntax

void IoStartNextPacket(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] BOOLEAN        Cancelable
);

Parameter

[in] DeviceObject

Zeiger auf das Geräteobjekt, für das das IRP dequeuiert werden soll.

[in] Cancelable

Gibt an, ob IRPs in der Gerätewarteschlange abgebrochen werden können.

Rückgabewert

Keine

Bemerkungen

Wenn sich derzeit keine IRPs in der Gerätewarteschlange für das DeviceObject-Ziel befinden, gibt diese Routine einfach die Steuerung an den Aufrufer zurück.

Wenn der Treiber beim Namen IoStartPacket einen Zeiger auf eine Abbruchroutine übergeben hat, sollte er TRUE im Cancelable-Parameter übergeben. Wenn Cancelable TRUE ist, verwendet der E/A-Manager die Abbruch-Drehsperre, um die Gerätewarteschlange und die aktuelle IRP zu schützen.

Treiber ohne StartIo-Routine können IoStartNextPacket nicht aufrufen.

Treiber, die IoStartNextPacket aus ihrer StartIo-Routine aufrufen, sollten sich der Rekursionsprobleme bewusst sein. Wenn ein Treiber IoStartNextPacket für eine große Anzahl von Anforderungen nacheinander aus seiner StartIo-Routine aufrufen kann (z. B. wenn ein Gerätefehler auftritt und der Treiber die Gerätewarteschlange auslöscht), sollten Sie das DeferredStartIo-Attribut für das Gerät mithilfe der IoSetStartIoAttributes-Routine festlegen. Dieses Attribut stellt sicher, dass das nächste Paket erst ausgegeben wird, wenn der vorherige StartIo-Aufruf zurückgibt.

Aufrufer von IoStartNextPacket müssen unter IRQL = DISPATCH_LEVEL ausgeführt werden. Normalerweise wird diese Routine von der DpcForIsr - oder CustomDpc-Routine eines Gerätetreibers aufgerufen, die beide mit IRQL = DISPATCH_LEVEL ausgeführt werden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL DISPATCH_LEVEL (siehe Abschnitt Hinweise)
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlDispatch(storport), IrqlDispatch(storport), IrqlDispatch(wdm), SpinLockSafe(storport), SpinLockSafe(storport), SpinLockSafe(wdm), StartIoRecursion(wdm)

Weitere Informationen

DEVICE_OBJECT

IoSetStartIoAttributes

IoStartNextPacketByKey

IoStartPacket