ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »