如何将MmMapIoSpace从Windows CE 5.0移植到6.0或XP Embedded?

时间:2013-03-26 14:15:39

标签: memory-management windows-ce

我们目前有一个带有微控制器的定制板,通过双端口柱塞与PC / 104 windows CE 5.0板对话。目前我们使用MmMapIoSpace映射Windows CE中的双端口ram,以便我们可以直接读取和写入它。我们正在寻求加入Windows CE 6.0甚至Windows XP嵌入式的现代时代。我们的一个大问题是根据微软的文档,Windows CE 6.0和Windows XP Embedded中的MmMapIoSpace现在是用户空间程序无法访问的驱动程序级功能,这就是我们使用它的方式。

在我们出去购买大量硬件和可能的平台构建器副本之前,我们一直试图弄清楚它是否真的会成为一个问题,如果是这样我们可以做些什么呢。我们没有人有编写Windows驱动程序的经验,所以这似乎是一项艰巨的任务,但我们只是为了处理这一功能而编写驱动程序。

将MmMapIoSpace从Windows CE 5.0移植到Windows CE 6.0Windows XP Embedded是否很简单。 (链接到Microsoft文档)。

谢谢!

1 个答案:

答案 0 :(得分:3)

MmMapIoSpace实际上只应该由驱动程序首先使用,所以早期的CE版本只是让你在应用程序中使用它有点混乱。我创建了一个简单的流接口驱动程序,使用MmMapIoSpace与RAM连接,然后使用ReadFileDeviceIoControl从您的应用程序调用该驱动程序。

Windows CE中的流接口驱动程序非常简单明了。它只是一个定义了一些特定入口点的DLL,然后是注册表项,告诉device.exe加载它。 MSDN有很多例子,但是如果你想要更容易,那么a wizard on Codeplex也可以为你生成文件。