ВУЗ:
Составители:
46
− Самый простой выход – использовать асинхронный IRP, и инициировать
событие в функции завершения.
В таблице 3.1 показаны типы синхронных IRP.
Таблица 3.1 – типы синхронных IRP
Функция Типы создаваемых IRP
IoBuildSynchronousFsdRequest IRP_MJ_READ
IRP_MJ_WRITE
IRP_MJ_FLUSH_BUFFERS
IRP_MJ_SHUTDOWN
IRP_MJ_PNP
IRP_MJ_POWER
IoBuildDeviceControlRequest IRP_MJ_DEVICE_CONTROL
IRP_MJ_INTERNAL_DEVICE_CONTROL
3.5 Создание асинхронных IRP
Для создания асинхронных IRP используются две другие функции:
Функция Типы создаваемых IRP
IoBuildAsynchronousFsdRequest IRP_MJ_READ
IRP_MJ_WRITE
IRP_MJ_FLUSH_BUFFERS
IRP_MJ_SHUTDOWN
IRP_MJ_PNP
IRP_MJ_POWER
(только для IRP_MJ_POWER_SEQUENCE)
IoAllocateIrp
Любые (при этом необходимо
инициализировать поле MajorFunction в
первом элементе стека)
Асинхронные IRP не принадлежат породившему их потоку. Диспетчер
ввода-вывода не планирует ACP и не выполняет их деинициализацию при
завершении IRP. Особенности асинхронных IRP:
− при завершении потока диспетчер ввода-вывода не пытается отменить
все асинхронные IRP, созданные в этом потоке,
− Самый простой выход – использовать асинхронный IRP, и инициировать событие в функции завершения. В таблице 3.1 показаны типы синхронных IRP. Таблица 3.1 – типы синхронных IRP Функция Типы создаваемых IRP IoBuildSynchronousFsdRequest IRP_MJ_READ IRP_MJ_WRITE IRP_MJ_FLUSH_BUFFERS IRP_MJ_SHUTDOWN IRP_MJ_PNP IRP_MJ_POWER IoBuildDeviceControlRequest IRP_MJ_DEVICE_CONTROL IRP_MJ_INTERNAL_DEVICE_CONTROL 3.5 Создание асинхронных IRP Для создания асинхронных IRP используются две другие функции: Функция Типы создаваемых IRP IoBuildAsynchronousFsdRequest IRP_MJ_READ IRP_MJ_WRITE IRP_MJ_FLUSH_BUFFERS IRP_MJ_SHUTDOWN IRP_MJ_PNP IRP_MJ_POWER (только для IRP_MJ_POWER_SEQUENCE) IoAllocateIrp Любые (при этом необходимо инициализировать поле MajorFunction в первом элементе стека) Асинхронные IRP не принадлежат породившему их потоку. Диспетчер ввода-вывода не планирует ACP и не выполняет их деинициализацию при завершении IRP. Особенности асинхронных IRP: − при завершении потока диспетчер ввода-вывода не пытается отменить все асинхронные IRP, созданные в этом потоке, 46
Страницы
- « первая
- ‹ предыдущая
- …
- 44
- 45
- 46
- 47
- 48
- …
- следующая ›
- последняя »