gpt4 book ai didi

c++ - 在应用程序和驱动程序之间共享内存

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:46 24 4
gpt4 key购买 nike

我有 DMA 驱动程序的源代码,我开发了一个应用程序来向这个驱动程序发送数据包。

问题是内核崩溃总是可能由于共享给驱动程序的错误指针“内存地址”而存在。

问题是:我如何向驱动程序发送指针并使驱动程序看到我的内存,就像应用程序看到它一样。

我知道它可能是将虚拟内存映射到物理内存,但我仍然不确定确切的问题或如何解决!

提示:驱动程序是一个系统文件和信息文件,所以我不能在里面调试。

我的平台是Windows 7,这是我在我的应用程序中尝试的代码:

DeviceIoControl(hDMADevice, IOCode, &TC, sizeof(TestCmd), NULL, 0, &bytes, &os))

其中 TC 是包含我的地址的结构。

DMADevice 中,windows 框架将调用一个函数“EvtIoControl”,该函数将获取该地址并读取其数据。

Mydata = TC.mydata;

最佳答案

"64bit app , driver is 32bit"

这是不可能的。反之亦然 - 32 位应用程序和 64 位驱动程序。

在这种情况下需要了解 32 位和 64 位的结构布局不同(因为不同的 PVOID 大小 - 4 或 8 字节)这解释了为什么错误的指针“内存地址”您需要使用 IoIs32bitProcess 函数 - 并阅读 Extended Example: Using IoIs32bitProcess

关于c++ - 在应用程序和驱动程序之间共享内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907741/

24 4 0
文章推荐: jquery - 在 jquery html 中使用特殊字符无法正确显示
文章推荐: javascript - 随着窗口大小的变化自动调整标题大小
文章推荐: javascript - 如何获取特色图像并将其图像路径放入内联样式中,即。
?
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com