Freigeben über


IoStartPacket-Funktion (ntifs.h)

Die IoStartPacket- Routine ruft die StartIo-Routine des Treibers mit dem angegebenen IRP auf oder fügt das 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 das zu verarbeitende IRP.

[in, optional] Key

Zeigen Sie auf einen Wert, der bestimmt, wo das Paket in die Gerätewarteschlange eingefügt werden soll. Wenn dies null 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

Nichts

Bemerkungen

Wenn der Treiber bereits eine Anforderung für das Zielgerätobjekt verarbeitet, 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 Nicht-NULL-CancelFunction Zeiger bereitgestellt wird, wird er im IRP festgelegt, sodass die Cancel Routine des Treibers aufgerufen wird, wenn das IRP vor abschluss abgebrochen wird.

Treiber, die nicht über eine StartIo Routine verfügen, können nicht IoStartPacket-aufrufen.

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

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")

Siehe auch

DEVICE_OBJECT

IoMarkIrpPending

IoSetCancelRoutine

IoStartNextPacket-

IoStartNextPacketByKey