Насколько я могу судить, не делает DMA "случайно", используя обычные файловые потоки для копирования из одного файла в другой. DMA в некоторых местах используется в фоновом режиме (например, для переноса с диска в RAM с помощью FileStreams), но он не может обрабатывать прямое копирование потока файл в файл в C #.
Сам DMA довольно сложный и родной для языков низкого уровня. Я имею в виду этот документ . Все примеры кода написаны на C и asm, поэтому его нельзя напрямую применять к C #.
DMA - это еще одна микросхема на материнской плате (обычно это Intel 8237
чип), что позволяет вам (программисту) разгружать передачи данных
между платами ввода / вывода. DMA фактически означает «прямой доступ к памяти».
Пример использования DMA - способность Sound Blaster играть
образцы в фоновом режиме. Процессор устанавливает звуковую карту и DMA.
Когда DMA говорят «идти», он просто переносит данные из ОЗУ в
карта. Поскольку это делается вне процессора, процессор может делать другие вещи
во время передачи данных.
DMA использует канальную систему, доступ к которой осуществляется через порты. Как правило, вы использовали бы asm для этого. Может быть, вы найдете здесь полезную информацию здесь или здесь .
Альтернативой может быть позволить ОС обрабатывать передачу: просто используйте File.Copy.