Функция 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 заключается в том, чтобы упростить отладку IRPs, выданных другим компонентам, а затем остановить работу. 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 (include Rxce.h) |
IRQL | <= APC_LEVEL |