KsRecalculateStackDepth-Funktion (ks.h)

Die KsRecalculateStackDepth-Funktion berechnet die maximale Stapeltiefe des zugrunde liegenden Geräteobjekts basierend auf allen Objekten, die ein Zielgerät festgelegt haben (sie haben sich mithilfe der KsSetTargetDeviceObject-Funktion der Objektliste des zugrunde liegenden Geräteobjekts hinzugefügt). Wenn das PnP-Geräteobjekt für den zugrunde liegenden Geräteheader mithilfe von KsSetDevicePnpAndBaseObject festgelegt wurde, wird dieses Gerät auch bei der Berechnung der maximalen Stapeltiefe berücksichtigt.

Syntax

KSDDKAPI VOID KsRecalculateStackDepth(
  [in] KSDEVICE_HEADER Header,
  [in] BOOLEAN         ReuseStackLocation
);

Parameter

[in] Header

Zeigt auf einen Header, der zuvor von KsAllocateDeviceHeader zugewiesen wurde.

[in] ReuseStackLocation

Wenn dies auf TRUE festgelegt ist, wird der aktuelle Stapelspeicherort wiederverwendet, wenn ein IRP weitergeleitet wird. Dies bedeutet, dass für dieses Objekt beim Weiterleiten von IRPs kein eigener Stapelspeicherort erforderlich ist und der maximalen Stapelgröße kein zusätzlicher Speicherort hinzugefügt wird. Wenn auf FALSE festgelegt ist, wird die berechnete Stapelgröße um eins erhöht. Wenn der Pnp-Objektstapel festgelegt ist, gilt der Wiederverwendungsparameter auch für diesen Stapel. Beachten Sie, dass KsDefaultDispatchPnp immer den aktuellen Stapelspeicherort wiederverwendet. Die minimale Stapeltiefe ist 1.

Rückgabewert

Keine

Bemerkungen

Die KsRecalculateStackDepth-Funktion geht davon aus, dass KsSetDevicePnpAndBaseObject für diesen Geräteheader aufgerufen wurde und ein Basisobjekt zugewiesen hat, dessen Stapeltiefe neu berechnet werden soll.

Mit dieser Funktion können IRPs über ein Objekt weitergeleitet werden, indem sichergestellt wird, dass alle auf diesem Gerät zugewiesenen IRP über genügend Stapelspeicherplätze verfügen, um die Weiterleitung zu ermöglichen. Die Stapeltiefe muss auf einem Streaminggerät neu berechnet werden, wenn das Gerät aus dem Status "Beenden" wechselt. Es kann auch neu berechnet werden, wenn ein Objekt freigegeben wird, um Ressourcen zu sparen.

Anforderungen

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

Weitere Informationen

KsAllocateDeviceHeader

KsDefaultDispatchPnp

KsSetDevicePnpAndBaseObject

KsSetTargetDeviceObject