在 Windows 10 驱动程序中将内核空间虚拟地址映射到用户空间虚拟地址

2024-01-01

我正在 Windows 10(64 位)中编写一个内核模式驱动程序,其主要目的是从 DMA 读取,我想知道是否不是将内存块从内核空间复制到用户空间中分配的缓冲区,我可以以某种方式向用户空间公开一个地址(当然不是物理地址),并节省内存复制操作。

也许是这样的:

  1. 分配一块连续的物理内存(并将物理地址映射到内核空间中的虚拟地址)。

  2. 将内核空间中的虚拟地址映射到用户空间中的虚拟地址。

顺便说一句,由于只有一个内核空间,并且用户空间与系统中运行的进程一样多(这是正确的吗?),我必须对调用进程使用某种句柄,以便获得适当进程中的虚拟地址...

谢谢你的时间!


对于你的(2),怎么样MmMapLockedPagesSpecifyCache() https://msdn.microsoft.com/en-us/library/windows/hardware/ff554629(v=vs.85).aspx其中 AccessMode = UserMode。请注意重要的警告,“例程返回一个在驱动程序运行的进程上下文中有效的用户地址”,因此当您执行以下操作时,您需要确保驱动程序正在用户模式应用程序的进程中运行映射,即通过在直接处理来自用户模式代码的调用的驱动程序代码中进行映射,例如DeviceIoControl()。另请注意,要使用此功能,您需要提供描述物理页的 MDL,并且这些页必须被锁定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 10 驱动程序中将内核空间虚拟地址映射到用户空间虚拟地址 的相关文章

随机推荐

  • 为什么不在java中使用带有锁的try?

    我读了这个话题 https stackoverflow com questions 6965731 are locks autocloseable 和这个博客文章 http www java7developer com blog p 256
  • 编译时出现错误?

    当我编译代码时 我收到这些错误 我有 user include 下的所有标题 g Ip appmanager inc Icore inc p appmanager src appmanager process cpp o p appmana
  • 本地主机上的 404 错误

    我正在尝试使用一些ajax 来发送一些电子邮件 我在使用冷聚变之前已经这样做过并且没有任何问题 我遇到的是本地主机未在目录中找到明确的文件 事实上 该文件与index php 位于同一目录中 这没有发现任何问题 然而它给了我一个404错误找
  • 使用 LiveData、协程和事务测试 Android Room

    我想测试我的数据库层 但我陷入了第 22 条军规类型的情况 测试用例由两部分组成 保存一些实体 加载实体并断言数据库映射按预期工作 简而言之 问题在于 Insert is a suspend方法 这意味着它需要运行在runBlocking
  • Eclipse“正确缩进”忽略空格与制表符设置

    我正在 Windows 中运行 Eclipse Juno Service Release 2 20130225 0426 我发现自动缩进 Ctrl I 会忽略常规 编辑器 文本编辑器 插入选项卡空格和 Java 代码样式 格式化程序 缩进
  • “无处不在”使用 LINQ 时的性能问题?

    升级到 ReSharper5 后 它为我提供了更多关于代码改进的有用提示 我现在随处看到的一个提示是用 LINQ 查询替换 foreach 语句 举个例子 private Ninja FindNinjaById int ninjaId fo
  • 获取 Android 上的应用程序安装日期

    有没有办法找出 Android 设备上的 应用程序安装日期 进行了大量搜索 但无法找到相关答案 无法找到有关应用程序安装日期的任何信息PackageManager文档 代码 或这个 API 级别 9向上 long installed con
  • Z Shell“自动加载”内置 - 它有什么好处?

    我已经使用 Z shell 一段时间了 我开始感到好奇 我在编写自己的函数时偶然发现的一件事是 自动加载 根据 zshbuiltins 1 手册页autoload是 相当于functions u 有一个例外 它 相当于typeset f 有
  • Webkit 必须始终在主线程上使用吗?

    我试图在后台渲染网页 但遇到了以下麻烦 2012 05 11 12 39 02 086 77207 1c03 An uncaught exception was raised 2012 05 11 12 39 02 087 77207 1c
  • 在从代码库中的 dockerfile 构建的 Docker 容器中运行 Jenkins 测试

    我想部署一个基于Jenkins的持续集成平台 由于我有各种类型的项目 PHP Symfony node Angular 等 并且我希望这些测试既可以在本地运行 也可以在 Jenkins 上运行 所以我正在考虑使用 Docker 容器 我的目
  • 数据库内部结构 - 从哪里开始? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 假设您想了解一些有关数据库内部结构的知识 最好看的源代码是什么 最好买的书 前几天我和一个朋友讨论这个问
  • 构建 Qt5 Git / Perl - 路径

    我的理解能力有点问题 In the Qt Wiki http qt project org wiki Building Qt 5 from Git aea23489ce3aa9b6406ebb28e0cda430上面写着我必须 Hint 确
  • 如何将 Delphi 调试器附加到 64 位 IIS 7.5?

    我在 Windows 7 Pro 64 和 IIS 7 5 上运行 Delphi XE 开发 ISAPI 应用程序 IIS 配置正确 包括允许 32 位代码在 ISAPI 进程中运行 ISAPI进程运行正常 在 Delphi 中 我尝试附加
  • Chrome Inspect - 关闭预览框架

    在 Chrome 的最新更新中 检查 窗口 chrome inspect 有一个预览窗口 在屏幕移动框架中显示网页 我该如何关闭它 到目前为止 我所做的最接近的事情是减少宽度 这样它就不会占用太多的屏幕空间 图片示例 您可以使用下面突出显示
  • Docker 镜像 - 类型。修身 vs 修身弹力 vs 弹力 vs 高山

    我正在寻找一个 docker 镜像来构建一个 java 应用程序 并查看可用的 OpenJDK 镜像的变体 我正在看这里https github com docker library openjdk tree master 8 jdk ht
  • 如何正确地使JSP会话失效?

    所以问题就在这里 当用户退出我的网站时 他们仍然可以点击后退按钮并继续使用该网站 为了跟踪用户是否登录 我创建了一个会话属性 isActive 该属性在用户登录时设置为 true 并在注销时会话失效之前被 冗余 删除 另外 我在每个页面上检
  • 如何替换 Web API 模型绑定的行为,以便在没有传入参数时收到一个新实例而不是 Null

    我们有一个包含许多操作的 API 这些操作需要Filter目的 但是 当有人调用 API 方法并且不传递任何参数时 我们最终会得到空引用 为了避免在任何地方都必须检查这一点 我们希望改变模型绑定的行为 以便对于该类型它返回一个新实例而不是
  • OpenGL 中的透明 FrameBuffer 背景

    我想使用 glClear 和 glClearColor 用包括 alpha 透明度的颜色填充帧缓冲区 但是 当绑定到渲染到屏幕的纹理时 帧缓冲区始终呈现为不透明 我希望渲染到帧缓冲区的所有内容都保持其透明度 我只是想改变背景 请看下面的代码
  • ASP.NET C# - 使用用户控件的下拉列表

    我是 ASP NET 新手 这个论坛中的某人帮助我如何使下拉列表与用户控件一起使用并且它正在工作 在我的用户控制文件 VendorListControl ascx 中 我有下面的代码 请假设 VendorListControl ascx c
  • 在 Windows 10 驱动程序中将内核空间虚拟地址映射到用户空间虚拟地址

    我正在 Windows 10 64 位 中编写一个内核模式驱动程序 其主要目的是从 DMA 读取 我想知道是否不是将内存块从内核空间复制到用户空间中分配的缓冲区 我可以以某种方式向用户空间公开一个地址 当然不是物理地址 并节省内存复制操作