Freigeben über


IoStartNextPacket-Funktion (ntifs.h)

Die IoStartNextPacket Routine dequeues the next IRP(sofern vorhanden) aus der zugeordneten Gerätewarteschlange des angegebenen 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

Nichts

Bemerkungen

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

Wenn der Treiber einen Zeiger an eine Cancel-Routine übergeben hat, wenn er IoStartPacket-aufgerufen hat, sollte er TRUE im Cancelable-Parameter dieser Routine übergeben. Wenn cancelable WAHR ist, verwendet der E/A-Manager die Drehungssperre zum Schützen der Gerätewarteschlange und des aktuellen IRP.

Treiber, die nicht über eine StartIo Routine verfügen, können nicht IoStartNextPacketaufrufen.

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

Aufrufer von IoStartNextPacket- müssen unter IRQL = DISPATCH_LEVEL ausgeführt werden. In der Regel wird diese Routine von der DpcForIsr oder CustomDpc Routine aufgerufen, die beide bei IRQL = DISPATCH_LEVEL ausgeführt werden.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000
Zielplattform- Universal
Header- ntifs.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- DISPATCH_LEVEL (siehe Abschnitt "Hinweise")
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlDispatch(storport), IrqlDispatch(storport), IrqlDispatch(wd, SpinLockSafe(storport), SpinLockSafe(storport), SpinLockSafe(wdm), StartIoRecursion(wdm)

Siehe auch

DEVICE_OBJECT

IoSetStartIoAttributes

IoStartNextPacketByKey

IoStartPacket-