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


Функция IoMakeAssociatedIrp (ntddk.h)

Эта подпрограмма зарезервирована для использования файловыми системами и драйверами фильтров файловой системы. Подпрограмма IoMakeAssociatedIrp выделяет и инициализирует IRP для связи с master IRP, отправляемых драйверу самого высокого уровня, позволяя вызывающему объекту разделить исходный запрос и отправить связанные irP в драйверы более низкого уровня.

Синтаксис

PIRP IoMakeAssociatedIrp(
  [in] PIRP  Irp,
  [in] CCHAR StackSize
);

Параметры

[in] Irp

Указатель на master IRP, который входил в подпрограмму диспетчеризации драйвера самого высокого уровня.

[in] StackSize

Указывает количество расположений стека, выделяемых для связанного IRP. Значение должно быть по крайней мере равно StackSize объекта устройства следующего ниже драйвера, но соответствующий IRP может иметь дополнительное расположение стека для вызывающего объекта.

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

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

Комментарии

Только драйвер самого высокого уровня может вызывать эту процедуру.

Диспетчер операций ввода-вывода автоматически завершает master IRP, если более низкие драйверы завершили все связанные irP, пока вызывающий объект не задал свою подпрограмму IoCompletion в связанном IRP и не вернул STATUS_MORE_PROCESSING_REQUIRED из своей процедуры IoCompletion. В таких случаях вызывающий объект должен явно завершить master IRP, когда драйвер определил, что все связанные irp завершены.

С потоком связан только master IRP, а связанные irP — нет. По этой причине диспетчер операций ввода-вывода не может вызывать подпрограммы Отмены для связанных irP при выходе потока. Когда поток IRP master завершается, диспетчер ввода-вывода вызывает процедуру отмены master IRP. Подпрограмма отмены отвечает за отслеживание всех связанных irP и вызов IoCancelIrp для их отмены.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть ntddk.h (включая Ntddk.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

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

IRP

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine