【发布时间】:2014-09-07 14:30:42
【问题描述】:
我正在开发一个内核 PnP 驱动程序来映射我的 FPGA。当我使用非分散收集 DMA 时,我需要四个 32Mb 的连续内存缓冲区。现在我在使用 WdfCommonBufferCreate 分配它们时遇到问题,因为它有时可以工作,有时不能。我不明白为什么分配偶尔会失败,因为设备内存和设备没有改变。
有没有办法确保我的缓冲区会被创建?什么会导致零星失败?
我还考虑使用 Bcdedit 从 Windows 中删除 128Mb 并将剩余空间用于我的缓冲区。我这样做没有问题,因为驱动程序适用于受控环境中的特定平台,但我没有找到使用 Windows 驱动程序 API 了解内存大小的方法。
有没有办法知道实际内存的大小?我真的可以使用剩下的内存吗?如果可以,如何使用?
感谢您的帮助
【问题讨论】:
标签: c windows memory kernel buffer