Поделиться через


Функция IoSetNextIrpStackLocation (wdm.h)

Программа IoSetNextIrpStackLocation задает расположение стека IRP в выделенном драйвере IRP вызывающей программе.

Синтаксис

void IoSetNextIrpStackLocation(
  [in, out] PIRP Irp
);

Параметры

[in, out] Irp

Указатель на IRP, расположение стека которого необходимо задать.

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

Никакой

Замечания

Как правило, эта подпрограмма редко используется драйверами. Он в основном используется драйверами, которым требуется собственное расположение стека в IRP, выделенное им самостоятельно, для отправки другому драйверу.

IoSetNextIrpStackLocation обычно не требуется, так как либо:

  • Драйвер получил IRP, который передается от другого, более высокого уровня драйвера, и поэтому он уже владеет расположением стека,
  • Или драйвер выделил IRP, но не нуждается в своем расположении стека, так как он может хранить все, что требуется в блоке контекста, адрес которого можно передать в его IoCompletion подпрограмму.
Будьте внимательны, если эта подпрограмма вызывается, особенно при выделении IRP с IoAllocateIrp или IoMakeAssociatedIrp. Модуль записи распределителя должен помнить, что расположение стека для конкретного вызывающего объекта не входит в число расположений стека, необходимых драйверам нижнего уровня, в которые он отправляет irPs с IoCallDriver. Драйвер должен явно указать расположение стека для себя в вызове IoAllocateIrp или IoMakeAssociatedIrp, если он вызывает IoSetNextIrpStackLocation с IRP, возвращаемым любой подпрограммой.

Драйвер не может вызывать IoSetNextIrpStackLocation с любым выделенным IRP путем вызова IoBuildAsynchronousFsdRequest, IoBuildDeviceIoControlRequestили IoBuildSynchronousFsdRequest.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 2000.
целевая платформа Настольный
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL Любой уровень

См. также

IO_STACK_LOCATION

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine