Freigeben über


KsForwardAndCatchIrp-Funktion (ks.h)

Die KsForwardAndCatchIrp-Funktion leitet einen IRP an den angegebenen Treiber weiter, nachdem der nächste Stapelspeicherort initialisiert wurde, und erhält die Kontrolle über den IRP nach Abschluss dieses Treibers wieder. Die Funktion wird für Geräte verwendet, die gestapelt werden können und keine Dateiobjekte für die Kommunikation verwenden.

Wenn ein Dateiobjekt verwendet wird, muss der Aufrufer den aktuellen Stapelspeicherort mit diesem Dateiobjekt initialisieren, bevor die KsForwardAndCatchIrp-Funktion aufgerufen wird. Die Funktion überprüft, ob ein neuer Stapelspeicherort zum Kopieren vorhanden ist, bevor dies versucht wird. Wenn kein neuer Stapelspeicherort vorhanden ist, gibt die Funktion STATUS_INVALID_DEVICE_REQUEST zurück. Unabhängig davon, ob ein neuer Stapelspeicherort vorhanden ist, ist der IRP nicht abgeschlossen.

Syntax

KSDDKAPI NTSTATUS KsForwardAndCatchIrp(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PIRP           Irp,
  [in] PFILE_OBJECT   FileObject,
  [in] KSSTACK_USE    StackUse
);

Parameter

[in] DeviceObject

Gibt das Gerät an, an das die IRP weitergeleitet werden soll.

[in] Irp

Gibt die IRP an, die an den angegebenen Treiber weitergeleitet wird.

[in] FileObject

Gibt einen Dateiobjektwert an, der an den nächsten Stapelspeicherort kopiert werden soll. Dies kann NULL sein, um kein Dateiobjekt festzulegen, aber der Wert wird immer an den nächsten Stapelspeicherort kopiert. Wenn das aktuelle Dateiobjekt beibehalten werden soll, muss es in diesem Parameter übergeben werden.

[in] StackUse

Gibt einen Wert an, der von KSSTACK_USE aufgezählt wird. Wenn der Wert KsStackCopyToNewLocation ist, werden die Parameter an den nächsten Stapelspeicherort kopiert. Wenn der Wert KsStackReuseCurrentLocation ist, wird der aktuelle Stapelspeicherort wiederverwendet, wenn der IRP weitergeleitet und der Stapelspeicherort an den aktuellen Speicherort zurückgegeben wird. Wenn der Wert KsStackUseNewLocation ist, wird der neue Stapelspeicherort unverändert verwendet.

Rückgabewert

Die KsForwardAndCatchIrp-Funktion gibt das Ergebnis des IoCallDrivers zurück, oder sie gibt eine ungültige status zurück, wenn keine stapeltiefe mehr verfügbar ist.

Hinweise

Der Typ KSSTACK_USE Enumeration gibt an, wie der IRP-Stapel beim Weiterleiten des IRP an den nächsten Treiber verwendet wird.

Enumeration Beschreibung
KsStackCopyToNewLocation Gibt an, dass die Parameter an den nächsten Stapelspeicherort kopiert werden sollen.
KsStackReuseCurrentLocation Gibt an, dass der aktuelle Stapelspeicherort wiederverwendet werden soll.
KsStackUseNewLocation Gibt an, dass der nächste Stapelspeicherort ohne Änderung verwendet werden soll.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header ks.h (einschließlich Ks.h)
Bibliothek Ks.lib