Организация ввода-вывода. Драйверы WDM. Рощин А.В. - 44 стр.

UptoLike

Составители: 

44
проходит весь показанный путь. Некоторые его фазы могут изменяться или
исключаться.
Рисунок 3.5 – Типичная модель обработки IRP
Жизненный цикл IRP начинается с его созданием диспетчером ввода-
вывода. Для создания IRP используются четыре функции:
Функция IoBuildAsynchronousFsdRequest (Fsd – File System Driver)
создает IRP, завершения которого вы не собираетесь дожидаться.
Функция IoBuildSynchronousFsdRequest создает IRP, завершения
которого вы намерены дождаться.
Функция IoBuildDeviceControlRequest создает синхронный запрос
IRP_MJ_DEVICE_CONTROL или IRP_MJ_INTERNAL_DEVICE_CONTROL.
Функция IoAllocateIrp создает
асинхронный IRP любого типа.
3.4 Создание синхронных IRP
Синхронный IRP принадлежит потоку, в контексте которого он был создан.
Это определяет следующие его особенности:
При завершении потока диспетчер ввода-вывода автоматически отменяет
все незавершенные синхронные IRP, принадлежащие этому потоку.
Если синхронный IRP был создан в произвольном потоке, то он
будет
отменен в случае завершения этого потока.
проходит весь показанный путь. Некоторые его фазы могут изменяться или
исключаться.




                Рисунок 3.5 – Типичная модель обработки IRP
     Жизненный цикл IRP начинается с его созданием диспетчером ввода-
вывода. Для создания IRP используются четыре функции:
     Функция IoBuildAsynchronousFsdRequest (Fsd – File System Driver)
создает IRP, завершения которого вы не собираетесь дожидаться.
     Функция    IoBuildSynchronousFsdRequest        создает   IRP,   завершения
которого вы намерены дождаться.
     Функция    IoBuildDeviceControlRequest    создает    синхронный     запрос
IRP_MJ_DEVICE_CONTROL или IRP_MJ_INTERNAL_DEVICE_CONTROL.
     Функция IoAllocateIrp создает асинхронный IRP любого типа.


     3.4 Создание синхронных IRP
     Синхронный IRP принадлежит потоку, в контексте которого он был создан.
Это определяет следующие его особенности:
     − При завершении потока диспетчер ввода-вывода автоматически отменяет
        все незавершенные синхронные IRP, принадлежащие этому потоку.
     − Если синхронный IRP был создан в произвольном потоке, то он будет
        отменен в случае завершения этого потока.

                                     44