Функция IoFreeIrp (wdm.h)
Подпрограмма IoFreeIrp освобождает выделенный вызывающим объектом IRP из процедуры IoCompletion вызывающего объекта.
Синтаксис
void IoFreeIrp(
[in] PIRP Irp
);
Параметры
[in] Irp
Указатель на IRP, который должен быть освобожден.
Возвращаемое значение
None
Remarks
Эта процедура является взаимной для IoAllocateIrp или IoBuildAsynchronousFsdRequest. Освобожденный IRP должен быть выделен вызывающим объектом.
Эта подпрограмма также выпускает IRP, выделенный с помощью IoMakeAssociatedIrp , в котором вызывающий объект настраивает свою подпрограмму IoCompletion , которая возвращает STATUS_MORE_PROCESSING_REQUIRED для связанного IRP.
IoFreeIrp не освобождает многомерные списки, которые могут быть присоединены к IRP. Драйвер, который освобождает IRP, должен явным образом освободить эти многомерные списки. Кроме того, если физические страницы, описанные в MDL, заблокированы, драйвер должен разблокировать страницы, прежде чем освободить MDL. Однако драйверу не нужно явно отменять сопоставление этих страниц. Вместо этого IoFreeMdl автоматически отменяет сопоставление страниц при освобождении MDL. Пример кода, показывающий, как освободить цепочку MDL, см. в разделе Использование mdls.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 2000. |
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDIs(storport), IoAllocateFree(wdm), IoBuildDeviceControlNoFree(wdm), IoBuildFsdFree(wdm), IoBuildSynchronousFsdRequestNo(wdm), IoFreeIrp(storport) |