共用方式為


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,則計算堆疊大小會遞增一。 如果已設定 Pnp 物件堆疊,重複使用參數也會套用至該堆疊。 請注意, KsDefaultDispatchPnp 一律會重複使用目前的堆疊位置。 最小堆疊深度為 1。

傳回值

備註

KsRecalculateStackDepth 函式假設 KsSetDevicePnpAndBaseObject 已在此裝置標頭上呼叫,並指派要重新計算其堆疊深度的基底物件。

此函式可讓 IRP 透過物件轉送,方法是確保此裝置上配置的任何 IRP 都有足夠的堆疊位置,以允許轉送。 當裝置從停止狀態轉換時,必須在串流裝置上重新計算堆疊深度。 當釋放物件以節省資源時,也可以重新計算它。

規格需求

需求
目標平台 Universal
標頭 ks.h (包含 Ks.h)
程式庫 Ks.lib

另請參閱

KsAllocateDeviceHeader

KsDefaultDispatchPnp

KsSetDevicePnpAndBaseObject

KsSetTargetDeviceObject