Функция KsRecalculateStackDepth (ks.h)

Функция KsRecalculateStackDepth пересчитывает максимальную глубину стека, необходимую для базового объекта устройства, на основе всех объектов, которые задали целевое устройство (они добавили себя в список объектов базового объекта устройства с помощью функции KsSetTargetDeviceObject ). Если объект устройства PnP был задан в базовом заголовке устройства с помощью KsSetDevicePnpAndBaseObject, это устройство также учитывается при расчете максимальной глубины стека.

Синтаксис

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

Параметры

[in] Header

Указывает на заголовок, ранее выделенный KsAllocateDeviceHeader.

[in] ReuseStackLocation

Если задано значение TRUE, текущее расположение стека повторно используется при пересылке любого IRP. Это означает, что этому объекту не требуется собственное расположение стека при пересылке IRP, а дополнительное расположение не добавляется к максимальному размеру стека. Если задано значение FALSE, вычисляемый размер стека увеличивается на единицу. Если задан стек объектов Pnp, параметр повторного использования также применяется к стеку. Обратите внимание, что KsDefaultDispatchPnp всегда повторно использует текущее расположение стека. Минимальная глубина стека — 1.

Возвращаемое значение

None

Remarks

Функция KsRecalculateStackDepth предполагает, что ksSetDevicePnpAndBaseObject был вызван для этого заголовка устройства и назначил базовый объект, глубина стека которого должна быть пересчитана.

Эта функция позволяет выполнять перенаправление irp через объект, гарантируя, что все IRP, выделенные на этом устройстве, будут иметь достаточно расположений стека для перенаправления. Глубина стека должна быть пересчитана на устройстве потоковой передачи при переходе устройства из состояния остановки. Он также может быть пересчитан при освобождении объекта для экономии ресурсов.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ks.h (включая Ks.h)
Библиотека Ks.lib

См. также раздел

KsAllocateDeviceHeader

KsDefaultDispatchPnp

KsSetDevicePnpAndBaseObject

KsSetTargetDeviceObject