Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Драйверы для устройств, которые могут передавать большие объемы данных за раз, должны использовать прямые операции ввода-вывода для этих передач. Использование прямых операций ввода-вывода для больших операций передачи повышает производительность драйвера, сокращая затраты на прерывание и устраняя выделение памяти и операции копирования, присущие буферизованному вводу-выводу.
Как правило, драйверы устройств массового хранения запрашивают выполнение операции ввода-вывода для запросов на передачу, включая низкоуровневые драйверы, использующие прямой доступ к памяти (DMA) или программируемый ввод-вывод (PIO), а также любые промежуточные драйверы.
Диспетчер ввода-вывода определяет, что операция ввода-вывода использует прямой ввод-вывод следующим образом:
Для запросов IRP_MJ_READ и IRP_MJ_WRITE DO_DIRECT_IO устанавливается в элементе Flags структуры DEVICE_OBJECT . Дополнительные сведения см. в инициализации объекта устройства.
Для запросов IRP_MJ_DEVICE_CONTROL и IRP_MJ_INTERNAL_DEVICE_CONTROL значение кода IOCTL содержит METHOD_IN_DIRECT или METHOD_OUT_DIRECT в качестве значения TransferType в значении IOCTL. Дополнительные сведения см. в разделе Определение кодов управления ввода-вывода.
Драйверы, использующие прямой ввод-вывод, иногда также используют буферизованный ввод-вывод для обработки некоторых IRPs. В частности, драйверы обычно используют буферные операции ввода-вывода для некоторых кодов управления ввода-вывода для IRP_MJ_DEVICE_CONTROL запросов, требующих передачи данных, независимо от того, использует ли драйвер прямые операции ввода-вывода для операций чтения и записи.
Настройка прямой передачи ввода-вывода немного зависит от того, используется ли DMA или PIO. Дополнительные сведения можно найти здесь
Использование прямого ввода-вывода с DMA
Использование прямого ввода-вывода с PIO
Драйверы должны выполнить шаги по поддержанию когерентности кэша во время передачи DMA и PIO. Дополнительные сведения см. в разделе "Обслуживание когерентности кэша".