Асинхронный вызов DeviceIoControl в ядре

У нас есть структура OverLapped в пользовательском режиме. Например, мы можем вызвать DeviceIoControl с перекрывающимся элементом, чтобы вызвать событие, когда этот вызов будет завершен. Но какой режим ядра? Как я могу отправить асинхронный DeviceIoControl в ядре с обратным вызовом? (FsRtlIssueDeviceIoControl синхронизируется)


person Brans Ds    schedule 23.07.2015    source источник
comment
FsRtlIssueDeviceIoControl: Процедура FsRtlIssueDeviceIoControl отправляет синхронный запрос управления вводом/выводом устройства к объекту целевого устройства. Он завершается, когда возвращается. Как и в случае со всеми синхронными вызовами. Может быть, я просто не понял вопроса.   -  person IInspectable    schedule 23.07.2015
comment
Я исправил вопрос. Я не могу найти асинхронный DeviceIoControl в ядре.   -  person Brans Ds    schedule 23.07.2015
comment
Драйверы Google Windows асинхронного ввода-вывода устройства запрашивают и принимают первый удар.   -  person Hans Passant    schedule 23.07.2015
comment
@HansPassant, как вы можете видеть, первое попадание касается только драйвера Wdf, и я спрашиваю о контексте минифайлера (см. тег)   -  person Brans Ds    schedule 24.07.2015


Ответы (1)


вы можете использовать IoCallDriver() для отправки вашего IOCTL с подпрограммой завершения, установленной с помощью IoSetCompletionRoutine(). но все же завершение может синхронизироваться или асинхронизироваться, это зависит от целевого драйвера, завершающего IOCTL.

person samjeba    schedule 25.07.2015