Поделиться через


Транзакции DMA и передача DMA

[Применимо только к KMDF]

Чтобы понять, как фреймворк обрабатывает операции DMA с основным устройством шины и в системном режиме, необходимо знать следующие два термина:

транзакция DMA
Транзакция DMA — это полная операция ввода-вывода, например один запрос на чтение или запись из приложения.

перенос DMA
Передача DMA — это одна аппаратная операция, которая передает данные из памяти компьютера на устройство или с устройства на память компьютера.

Одна транзакция DMA всегда состоит из по крайней мере одной передачи DMA, но транзакция может состоять из множества передач.

Когда драйвер на основе платформы получает запрос ввода-вывода, драйвер обычно создает один объект транзакции DMA для представления запроса. Когда платформа начинает обслуживание транзакции, она определяет, может ли устройство обрабатывать всю транзакцию в рамках одной передачи. Если транзакция слишком велика, фреймворк разбивает транзакцию на несколько переводов.