KsRecalculateStackDepth 関数 (ks.h)

KsRecalculateStackDepth 関数は、ターゲット デバイスを設定したすべてのオブジェクトに基づいて、基になるデバイス オブジェクトに必要な最大スタック深度を再計算します (KsSetTargetDeviceObject 関数を使用して、基になるデバイス オブジェクトのオブジェクト リストに追加されています)。 KsSetDevicePnpAndBaseObject を使用して基になるデバイス ヘッダーに PnP デバイス オブジェクトが設定されている場合、そのデバイスはスタックの最大深度を計算するときにも考慮されます。

構文

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

パラメーター

[in] Header

KsAllocateDeviceHeader によって以前に割り当てられたヘッダーを指します。

[in] ReuseStackLocation

TRUE に設定すると、IRP が転送されるときに現在のスタックの場所が再利用されます。 つまり、IRP を転送するときに、このオブジェクトは独自のスタックの場所を必要とせず、追加の場所は最大スタック サイズに追加されません。 FALSE に設定すると、計算されるスタック サイズは 1 ずつインクリメントされます。 Pnp オブジェクト スタックが設定されている場合、再利用パラメーターもそのスタックに適用されます。 KsDefaultDispatchPnp は常に現在のスタックの場所を再利用します。 スタックの最小深さは 1 です。

戻り値

なし

解説

KsRecalculateStackDepth 関数は、KsSetDevicePnpAndBaseObject がこのデバイス ヘッダーで呼び出され、スタックの深さが再計算される基本オブジェクトを割り当てたと想定しています。

この関数を使用すると、このデバイスに割り当てられた IRP に転送できる十分なスタックの場所を確保することで、オブジェクトを介して IRP を転送できます。 スタックの深さは、デバイスが Stop 状態から遷移したときにストリーミング デバイスで再計算する必要があります。 また、リソースを節約するためにオブジェクトが解放されたときに再計算することもできます。

要件

要件
対象プラットフォーム ユニバーサル
Header ks.h (Ks.h を含む)
Library Ks.lib

こちらもご覧ください

KsAllocateDeviceHeader

KsDefaultDispatchPnp

KsSetDevicePnpAndBaseObject

KsSetTargetDeviceObject