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 将具有足够的堆栈位置,以允许转发它。 当设备从停止状态转换时,必须在流式处理设备上重新计算堆栈深度。 还可以在释放对象以节省资源时重新计算它。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | ks.h (包括 Ks.h) |
库 | Ks.lib |