ВУЗ:
Составители:
55
PDEVICE_EXTENSION pdx)
{
…
StartNextPacket(&pdx->dqSomething, fdo); //a
IoCompleteRequest(Irp, boost); //b
}
a. StartNextPacket удаляет следующий IRP из очереди и посылает его
StartIo,
b. IoCompleteRequest завершает IRP, указанный в первом аргументе;
второй аргумент задает приращение приоритета для потока,
ожидающего этого IRP.
3.14 Функции завершения
Для получения драйвером вышележащего уровня информации о
результатах выполнения конкретного запроса ввода-вывода IRP драйвером
нижележащего уровня (CompletionNotification) можно
вызвать функцию
IoSetCompletionRoutine():
VOID loSetCompletionRoutine(IN PIRP Irp,
IN PIO_COMPLETION_ROUTINE CompletionRoutine,
INPVOID Context,
IN BOOLEAN InvokeOnSuccess,
IN BOOLEAN InvokeOnError,
IN BOOLEAN InvokeOnCahcel);
Здесь Irp – указатель на IRP, информация о завершении которого
необходима, CompletionRoutine – указатель на точку входа драйвера,
вызываемую при завершении IRP, Context – определенное драйвером значение,
которое нужно передать как третий параметр для точки входа
CompletionRoutine, InvokeOnSuccess, InvokeOnError, IwokeOnCancel –
параметры, которые указывают, должна ли точка входа CompletionRoutine быть
вызвана при завершении IRP с указанным состоянием
.
PDEVICE_EXTENSION pdx) { … StartNextPacket(&pdx->dqSomething, fdo); //a IoCompleteRequest(Irp, boost); //b } a. StartNextPacket удаляет следующий IRP из очереди и посылает его StartIo, b. IoCompleteRequest завершает IRP, указанный в первом аргументе; второй аргумент задает приращение приоритета для потока, ожидающего этого IRP. 3.14 Функции завершения Для получения драйвером вышележащего уровня информации о результатах выполнения конкретного запроса ввода-вывода IRP драйвером нижележащего уровня (CompletionNotification) можно вызвать функцию IoSetCompletionRoutine(): VOID loSetCompletionRoutine(IN PIRP Irp, IN PIO_COMPLETION_ROUTINE CompletionRoutine, INPVOID Context, IN BOOLEAN InvokeOnSuccess, IN BOOLEAN InvokeOnError, IN BOOLEAN InvokeOnCahcel); Здесь Irp – указатель на IRP, информация о завершении которого необходима, CompletionRoutine – указатель на точку входа драйвера, вызываемую при завершении IRP, Context – определенное драйвером значение, которое нужно передать как третий параметр для точки входа CompletionRoutine, InvokeOnSuccess, InvokeOnError, IwokeOnCancel – параметры, которые указывают, должна ли точка входа CompletionRoutine быть вызвана при завершении IRP с указанным состоянием. 55
Страницы
- « первая
- ‹ предыдущая
- …
- 53
- 54
- 55
- 56
- 57
- …
- следующая ›
- последняя »