Partager via


Écriture de routines AdapterControl

La plupart des pilotes d’appareils DMA ont une routine AdapterControl , qui est chargée de lancer les opérations DMA. (Les pilotes qui ne nécessitent pas de routines AdapterControl incluent ceux qui utilisent la diffusion/collecte de DMA et ceux qui utilisent common-buffer, bus-master DMA.)

Lorsqu’un pilote appelle AllocateAdapterChannel, sa routine AdapterControl est exécutée immédiatement si le contrôleur DMA système ou l’adaptateur master bus est disponible pour une opération DMA et si suffisamment de registres de carte sont disponibles. Sinon, la routine AdapterControl est mise en file d’attente jusqu’à ce que ces ressources soient disponibles.

Si la routine AdapterControl du pilote retourne KeepObject ou DeallocateObjectKeepRegisters (ce qui conserve le canal du contrôleur DMA système ou l’adaptateur master bus pour des opérations de transfert supplémentaires), la routine DpcForIsr ou CustomDpc du pilote est chargée de libérer l’objet d’adaptateur ou les registres de carte en appelant FreeAdapterChannel ou FreeMapRegisters avant que la routine DPC termine l’IRP actuel et retourne le contrôle.