ВУЗ:
Составители:
71
Irp->IoStatus.Information = YYY;
IoRequestDpc(pdx->DeviceObject, NULL, pdx);
…
}
VOID DpcForIsr(PKDPC junk1, PDEVICE_OBJECT fdo, PIRP junk2,
PDEVICE_EXTENSION pdx)
{
…
PIRP Irp = GetCurrentIrp(&pdx->dqReadWrite);
StartNextPacket(&pdx->dqReadWrite, fdo);
IoCompleteRequest(Irp, IO_NO_INCREMENT);
}
Сценарий 5: создание асинхронных IRP
В этом сценарии драйвер создает асинхронный IRP, который пересылается
другому драйверу (рисунок 3.12). Условия для применения этого сценария:
− имеется другой драйвер, выполняющий операцию по вашему поручению,
− выполнение ведется либо в контексте произвольного потока (в котором
блокировка нежелательна), либо на уровне DISPATCH_LEVEL (на
котором блокировка невозможна).
Рисунок 3.12 – Создание асинхронных IRP
Ниже приведен примерный код, включаемый в драйвер. Этот код не обязан
находиться в диспетчерской функции IRP, а целевой объект устройства не обязан
быть следующим нижним объектом в стеке.
SOMETYPE SomeFunction(PDEVICE_EXTENSION pdx,
PDEVICE_OBJECT DeviceObject)
Irp->IoStatus.Information = YYY;
IoRequestDpc(pdx->DeviceObject, NULL, pdx);
…
}
VOID DpcForIsr(PKDPC junk1, PDEVICE_OBJECT fdo, PIRP junk2,
PDEVICE_EXTENSION pdx)
{
…
PIRP Irp = GetCurrentIrp(&pdx->dqReadWrite);
StartNextPacket(&pdx->dqReadWrite, fdo);
IoCompleteRequest(Irp, IO_NO_INCREMENT);
}
Сценарий 5: создание асинхронных IRP
В этом сценарии драйвер создает асинхронный IRP, который пересылается
другому драйверу (рисунок 3.12). Условия для применения этого сценария:
− имеется другой драйвер, выполняющий операцию по вашему поручению,
− выполнение ведется либо в контексте произвольного потока (в котором
блокировка нежелательна), либо на уровне DISPATCH_LEVEL (на
котором блокировка невозможна).
Рисунок 3.12 – Создание асинхронных IRP
Ниже приведен примерный код, включаемый в драйвер. Этот код не обязан
находиться в диспетчерской функции IRP, а целевой объект устройства не обязан
быть следующим нижним объектом в стеке.
SOMETYPE SomeFunction(PDEVICE_EXTENSION pdx,
PDEVICE_OBJECT DeviceObject)
71
Страницы
- « первая
- ‹ предыдущая
- …
- 69
- 70
- 71
- 72
- 73
- …
- следующая ›
- последняя »
