HalAllocateCommonBuffer 函数

 

PVOID HalAllocateCommonBuffer(
PDMA_ADAPTER_OBJECT DmaAdapter,
ULONG               Length,
PPHYSICAL_ADDRESS   LogicalAddress,
BOOLEAN             CacheEnabled
);


是要alloc一塊memory給 "不認識virtual address" 的hardware用 (?)

參數中指定需要的大小 (Length) 和 CacheEable。並且指定是要給哪一個hardware用 (DmaAdaptor)。
    pVirtDMABufferAddr =
(PBYTE)HalAllocateCommonBuffer(&Adapter,(AUDIO_DMA_PAGE_SIZE),&PhysDMABufferAddr, FALSE);
就會alloc一塊memory,memory的virtual address會return 回來,physical address 就放在 argument 的 "LogicalAddress" 中。

一般是給DMA用 (DMA只認識 physical address ?)

以 DMA 的 output channel 來看,allocate的memory,physical address要填入DMA的source pointer register。
DMA.SourceAddress = LogicalAddress。
然後,driver要藉由DMA送出資料,就要寫入 pVirtDMABufferAddr
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值