Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Драйверы более высокого уровня, которые отслеживают выполнение запросов драйверами нижнего уровня на уровне отдельных IRP, могут иметь одну или несколько процедур IoCompletion. Драйверы более высокого уровня, которые выделяют IRPs для отправки запросов к драйверам более низкого уровня, должны иметь подпрограмму IoCompletion.
Подпрограмма DispatchRead или DispatchWrite высокого уровня или промежуточного драйвера, скорее всего, будет устанавливать подпрограмму IoCompletion для IRP, так как драйверы нижнего уровня должны асинхронно обрабатывать запросы на передачу.
Драйвер самого низкого уровня в стеке драйверов не может зарегистрировать подпрограммы IoCompletion .
Драйверы обычно не регистрируют процедуры IoCompletion для IRPs, связанных с синхронными операциями ввода-вывода. Например, подпрограмма DispatchDeviceControl драйвера более высокого уровня может выделить IRP с помощью IoBuildDeviceIoControlRequest. В этом случае подпрограмма диспетчера обычно не регистрирует подпрограмму IoCompletion , так как запросы на управление устройствами обычно обрабатываются синхронно. Вместо этого драйвер может выделить и инициализировать объект события, и его подпрограмма DispatchDeviceControl может ожидать инициализацию события при отправке IRP, выделенных драйвером. Как правило, драйвер более высокого уровня не регистрирует подпрограмму IoCompletion для IRP, созданного с использованием IoBuildSynchronousFsdRequest, по той же причине.
В этом разделе содержатся следующие разделы: