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


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

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

Синтаксис

void IoFreeIrp(
  [in] PIRP Irp
);

Параметры

[in] Irp

Указатель на IRP, который должен быть выпущен.

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

Никакой

Замечания

Эта подпрограмма является взаимной IoAllocateIrp или IoBuildAsynchronousFsdRequest. Освобожденный IRP должен быть выделен вызывающим объектом.

Эта подпрограмма также освобождает IRP, выделенную IoMakeAssociatedIrp, в которой вызывающий объект настраивает свою подпрограмму IoCompletion, которая возвращает STATUS_MORE_PROCESSING_REQUIRED для связанного IRP.

IoFreeIrp не освобождает никакие многомерные выражения, которые могут быть присоединены к IRP. Драйвер, который освобождает IRP, должен явным образом освободить эти многомерные выражения. Кроме того, если физические страницы, описанные MDL, блокируются, драйвер должен разблокировать страницы, прежде чем освободить MDL. Однако драйверу не требуется явно распакуировать эти страницы. Вместо этого IoFreeMdl автоматически распакует страницы при освобождении MDL. Пример кода, показывающий, как освободить цепочку MDL, см. в разделе Использование многомерных выражений.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 2000.
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
правил соответствия DDI HwStorPortProhibitedDIs(storport), IoAllocateFree(wdm), IoBuildDeviceControlNoFree(wdm) ,IoBuildFsdFree(wdm), IoBuildSynchronousFsdRequestNoFree(wdm), IoFreeIrp(storport)

См. также

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoCompletion

IoMakeAssociatedIrp

IoSetCompletionRoutine