首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DMA事务的内存对齐(Windows Driver Foundation)

DMA事务的内存对齐(Windows Driver Foundation)
EN

Stack Overflow用户
提问于 2013-08-20 17:07:37
回答 1查看 834关注 0票数 1

我们正在使用Windows7的WDF为定制的PCI-Express设备编写基于DMA的驱动程序。

正如您可能知道的,PCI-Express总线事务不允许跨越4k内存边界。自定义设备不会检查这一点,因此我们需要确保驱动程序只请求与4k内存边界对齐的DMA传输。

设备的配置文件为WdfDmaProfilePacket64。

我们尝试使用DMA4095),但这不会导致WdfDeviceSetAlignmentRequirement(DevExt->Device,起始地址正确对齐。

我们如何配置WDF框架,使其只请求正确对齐的地址?

EN

回答 1

Stack Overflow用户

发布于 2017-04-17 14:55:21

你可以在用户空间应用程序中处理这个问题,通过某种方式,你可以在用户空间中启动/分配一个对齐的内存,然后将其发送到内核程序。对于驱动程序来说,对齐已经分配和启动的内存并不容易。即使在用户空间应用程序中,我们也必须分配额外的空间,然后使用对齐的部分(我知道这不是很好,这就是为什么我建议在设备端解决这个问题)

例如,如果您为用户空间应用程序使用C++,则可以执行类似于this的操作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18331126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档