次の方法で共有


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 を転送できます。 デバイスが停止状態から遷移した場合、ストリーミング デバイスでスタック深度を再計算する必要があります。 また、リソースを節約するためにオブジェクトが解放されたときに再計算することもできます。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー ks.h (Ks.h を含む)
ライブラリ Ks.lib

関連項目

KsAllocateDeviceHeader

KsDefaultDispatchPnp

KsSetDevicePnpAndBaseObject

KsSetTargetDeviceObject