gpt4 book ai didi

c - 大型 PnP 驱动程序缓冲区

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:30 33 4
gpt4 key购买 nike

我正在开发内核 PnP 驱动程序来映射我的 FPGA。当我使用非分散收集 DMA 时,我需要四个 32Mb 的连续内存缓冲区。现在我在使用 WdfCommonBufferCreate 分配它们时遇到问题,因为它有时有效,有时却无效。我不明白为什么分配会偶尔失败,因为设备内存和设备不会更改。

有没有办法确保创建缓冲区?什么会导致偶发性失败?

我还想用 Bcdedit 从 Windows 中删除 128Mb,并使用为我的缓冲区留下的空间。我这样做没问题,因为该驱动程序适用于受控环境中的特定平台,但我没有找到使用 Windows Driver API 了解内存大小的方法。

有没有办法知道实际内存的大小?我真的可以使用剩余的内存吗?如果可以,如何使用?

谢谢你的帮助

最佳答案

这是大量的连续内存。如果您通过 WdfDmaEnablerSetMaximumScatterGatherElements 告诉它您拥有的最大分散/收集描述符数量,Windows 驱动程序框架可以将大型 DMA 事务分解为您的驱动程序可以处理的大小。只需使用较少的固定数量的分散/聚集元素。

关于c - 大型 PnP 驱动程序缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24791340/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com