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


Написание процедур управления адаптером

Большинство драйверов устройств DMA имеют подпрограмму AdapterControl , которая отвечает за инициирование операций DMA. (Драйверы, для которых не требуются подпрограммы AdapterControl, включают те, которые используют scatter/gather DMA и те, которые используют DMA с общим буфером и bus-master.)

Когда драйвер вызывает AllocateAdapterChannel, его подпрограмма AdapterControl выполняется немедленно, если системный контроллер DMA или адаптер шины доступен для операции DMA, и если доступны достаточно регистров карты. В противном случае подпрограмма AdapterControl помещается в очередь до тех пор, пока эти ресурсы не будут доступны.

Если подпрограмма AdapterControl драйвера возвращает KeepObject или DeallocateObjectKeepRegisters (тем самым сохраняя канал контроллера системы DMA или адаптер шины ведущего устройства для дополнительных операций передачи), подпрограмма DpcForIsr или CustomDpc драйвера отвечает за освобождение объекта адаптера или регистров карты через вызов FreeAdapterChannel или FreeMapRegisters перед завершением выполнения текущего IRP и возвратом управления.