Freigeben über


IoStartPacket-Funktion (ntifs.h)

Die IoStartPacket-Routine ruft die StartIo-Routine des Treibers mit dem angegebenen IRP auf oder fügt den IRP in die Gerätewarteschlange ein, die dem angegebenen Geräteobjekt zugeordnet ist, wenn das Gerät bereits ausgelastet ist.

Syntax

void IoStartPacket(
  [in]           PDEVICE_OBJECT DeviceObject,
  [in]           PIRP           Irp,
  [in, optional] PULONG         Key,
  [in, optional] PDRIVER_CANCEL CancelFunction
);

Parameter

[in] DeviceObject

Zeiger auf das Zielgerätobjekt für das IRP.

[in] Irp

Zeiger auf die zu verarbeitende IRP.

[in, optional] Key

Zeiger auf einen Wert, der bestimmt, wo das Paket in die Gerätewarteschlange eingefügt werden soll. Wenn dies 0 ist, wird das Paket am Ende der Gerätewarteschlange eingefügt.

[in, optional] CancelFunction

Gibt den Einstiegspunkt für eine vom Treiber bereitgestellte Cancel-Routine an.

Rückgabewert

Keine

Bemerkungen

Wenn der Treiber bereits mit der Verarbeitung einer Anforderung für das Zielgerätobjekt beschäftigt ist, wird das Paket in der Gerätewarteschlange in die Warteschlange eingereiht. Andernfalls ruft diese Routine die StartIo-Routine des Treibers mit dem angegebenen IRP auf.

Wenn ein CancelFunction-Zeiger ohne NULL angegeben wird, wird er im IRP festgelegt, sodass die Cancel-Routine des Treibers aufgerufen wird, wenn der IRP vor seiner Fertigstellung abgebrochen wird.

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

Aufrufer von IoStartPacket müssen unter IRQL <= DISPATCH_LEVEL ausgeführt werden. Normalerweise wird diese Routine von der Dispatch-Routine eines Gerätetreibers unter IRQL = PASSIVE_LEVEL aufgerufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000
Zielplattform Universell
Header ntifs.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (siehe Abschnitt Hinweise)

Weitere Informationen

DEVICE_OBJECT

IoMarkIrpPending

IoSetCancelRoutine

IoStartNextPacket

IoStartNextPacketByKey