Функция 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 |