共用方式為


撰寫 AdapterControl 常式

DMA 裝置的大部分驅動程式都有 AdapterControl 常式,負責起始 DMA 作業。 (不需要 AdapterControl 常式的驅動程式包括 使用散佈/收集 DMA 的驅動程式,以及 使用 common-buffer、bus-master DMA.)

當驅動程式呼叫 AllocateAdapterChannel時,如果系統 DMA 控制器或匯流排主機介面卡可用於 DMA 作業,以及有足夠的地圖暫存器可用,則會立即執行其 AdapterControl 常式。 否則, AdapterControl 常式會排入佇列,直到這些資源可供使用為止。

如果驅動程式的 AdapterControl 常式傳回 KeepObjectDeallocateObjectKeepRegisters (藉此保留系統 DMA 控制器通道或匯流排主機介面卡,以進行其他傳輸作業) , 驅動程式的 DpcForIsrCustomDpc 常式負責在 DPC 常式完成目前的 IRP 並傳回控制項之前呼叫 FreeAdapterChannelFreeMapRegisters 來釋放配接器物件或地圖暫存器。