撰寫 AdapterControl 常式
DMA 裝置的大部分驅動程式都有 AdapterControl 常式,負責起始 DMA 作業。 (不需要 AdapterControl 常式的驅動程式包括 使用散佈/收集 DMA 的驅動程式,以及 使用 common-buffer、bus-master DMA.)
當驅動程式呼叫 AllocateAdapterChannel時,如果系統 DMA 控制器或匯流排主機介面卡可用於 DMA 作業,以及有足夠的地圖暫存器可用,則會立即執行其 AdapterControl 常式。 否則, AdapterControl 常式會排入佇列,直到這些資源可供使用為止。
如果驅動程式的 AdapterControl 常式傳回 KeepObject 或 DeallocateObjectKeepRegisters (藉此保留系統 DMA 控制器通道或匯流排主機介面卡,以進行其他傳輸作業) , 驅動程式的 DpcForIsr 或 CustomDpc 常式負責在 DPC 常式完成目前的 IRP 並傳回控制項之前呼叫 FreeAdapterChannel 或 FreeMapRegisters 來釋放配接器物件或地圖暫存器。