Функция RxCeAllocateIrpWithMDL (rxce.h)

RxCeAllocateIrpWithMDL выделяет IRP и связывает его с существующим списком дескрипторов памяти.

Синтаксис

PIRP RxCeAllocateIrpWithMDL(
  [in] IN CCHAR   StackSize,
  [in] IN BOOLEAN ChargeQuota,
  [in] IN PMDL    Buffer
);

Параметры

[in] StackSize

Размер стека, выделяемый для IRP.

[in] ChargeQuota

Промежуточные драйверы должны задать этому параметру значение FALSE . Значение TRUE может быть установлено только драйверами самого высокого уровня, которые вызываются в контексте потока, который является источником запроса ввода-вывода, для которого драйвер выделяет другое IRP.

[in] Buffer

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

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

RxCeAllocateIrpWithMDL возвращает указатель на IRP при успешном выполнении или указатель NULL на ошибку.

Комментарии

Цель RxCeAllocateIrpWithMDL — упростить отладку irP, которые выдаются другим компонентам, а затем зависают. IrPs, выданные с помощью RxCeAllocateIrpWithMDL , помещаются в очередь в глобальный список irps, поддерживаемых RDBSS. Таким образом, когда RX_CONTEXT ожидает завершения отправки, можно пройтись по глобальному списку, чтобы найти IRP, ожидающий в транспорте.

IRP, выделенный со связанным списком дескрипторов памяти, выделенным с помощью RxCeAllocateIrpWithMDL , должен быть освобожден после завершения IRP с помощью RxCeFreeIrp.

IoAllocateIrp автоматически инициализирует члены IRP и вставляет IRP в глобальный список IRP, поддерживаемый RDBSS. Если память для MDL, связанной с IRP, не может быть выделена, то созданный IRP освобождается, а RxCeAllocateIrpWithMDL возвращает указатель NULL , указывающий на сбой.

Требования

Требование Значение
Минимальная версия клиента Подпрограмма RxCeAllocateIrpWithMDL доступна только в Windows XP.
Целевая платформа Персональный компьютер
Верхняя часть rxce.h (включая Rxce.h)
IRQL <= APC_LEVEL

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

MDL

RxCeFreeIrp