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 |