ВУЗ:
Составители:
76
}
return status;
}
NTSTATUS ForwardAndWaitCompletionRoutine(PDEVICE_JBJECT fdo,
PIRP Irp,PKEVENT pev)
{
if (Irp->PendingReturned)
KeSetEvent(pev,IO_NO_INCREMENT, FALSE);
return STATUS_MORE_PROCESSING_REQUIRED;
}
Сценарий 8: синхронная обработка асинхронных IRP
В этом сценарии драйвер создает асинхронный IRP, пересылает его другому
драйверу и ожидает завершения IRP (рисунок 3.15). Условия для применения
этого сценария:
− имеется другой драйвер, выполняющий операцию по вашему поручению,
− вы должны дождаться завершения операции для продолжения работы,
− выполнение осуществляется на уровне DPC_LEVEL в контексте
фиксированного потока.
Типичный пример ситуации, в которой целесообразно использовать этот
сценарий – выполнение синхронной операции после захвата быстрого мьютекса.
Рисунок 3.15 – Синхронная обработка асинхронных IRP
В приведенном коде сочетаются уже встречавшиеся ранее элементы.
SOMETYPE SomeFunction(PDEVICE_EXTENSION pdx,
PDEVICE_OBJECT DeviceObject)
}
return status;
}
NTSTATUS ForwardAndWaitCompletionRoutine(PDEVICE_JBJECT fdo,
PIRP Irp,PKEVENT pev)
{
if (Irp->PendingReturned)
KeSetEvent(pev,IO_NO_INCREMENT, FALSE);
return STATUS_MORE_PROCESSING_REQUIRED;
}
Сценарий 8: синхронная обработка асинхронных IRP
В этом сценарии драйвер создает асинхронный IRP, пересылает его другому
драйверу и ожидает завершения IRP (рисунок 3.15). Условия для применения
этого сценария:
− имеется другой драйвер, выполняющий операцию по вашему поручению,
− вы должны дождаться завершения операции для продолжения работы,
− выполнение осуществляется на уровне DPC_LEVEL в контексте
фиксированного потока.
Типичный пример ситуации, в которой целесообразно использовать этот
сценарий – выполнение синхронной операции после захвата быстрого мьютекса.
Рисунок 3.15 – Синхронная обработка асинхронных IRP
В приведенном коде сочетаются уже встречавшиеся ранее элементы.
SOMETYPE SomeFunction(PDEVICE_EXTENSION pdx,
PDEVICE_OBJECT DeviceObject)
76
Страницы
- « первая
- ‹ предыдущая
- …
- 74
- 75
- 76
- 77
- 78
- …
- следующая ›
- последняя »
