news 2026/6/6 23:19:00

25、编写 Windows VxDs 和设备驱动程序:内存映射设备访问与高级内存问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
25、编写 Windows VxDs 和设备驱动程序:内存映射设备访问与高级内存问题

编写 Windows VxDs 和设备驱动程序:内存映射设备访问与高级内存问题

1. 访问内存映射设备

在最初的 PC 系统设计中,处理器物理地址空间在 A0000h 到 F0000h 之间故意留出了一段空间,该区域没有 RAM,可供内存映射设备使用。

1.1 DOS 和 16 位 Windows DLL 访问方式
  • 在 DOS 环境下,要访问内存映射设备,需形成指向该位置的指针,然后对指针进行解引用操作。
  • 从 16 位 Windows DLL 访问设备时,基本思路与 DOS 相同,但会因地址转换问题而变得复杂。
1.2 Windows 预分配选择器

如果设备映射在未使用的 A0000h - F0000h 物理地址范围内,可使用 Windows 提供的预分配选择器。这些选择器是从 Windows 系统 DLL 导出的变量,如 _A000h、_B000h 等。Windows 已正确设置了选择器的基地址和相关页表项,例如 _B000h 确实映射到物理地址 B0000h。每个选择器的限制设置为 64Kb,_A000h 映射 A0000 - AFFFF,_B000h 映射 B0000 - BFFFF 等。

不过,Win32 应用程序或 DLL 不能使用这些预制选择器,因为它们是从 KERNEL16 模块导出的,而不是 32 位代码链接的 KERNEL32 模块。

1.3 形成设备指针

要形成指向设备的指针,需选择合适的选择器和偏移量。例如,_D000h 和 8000h 的偏移量组合可指向 D8000h 处的设备。将选择器/偏移量

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 18:47:35

从“读不懂”到“读透”:科研小白必学的文献阅读三步法

刚接触科研的你,是不是也有过这样的困扰?面对动辄几十页的英文文献,翻了几页就头晕脑胀,要么抓不住核心观点,要么读完就忘,花了大量时间却收效甚微?其实,文献阅读从来不是“逐字逐句…

作者头像 李华
网站建设 2026/6/6 11:08:07

38、电影制作全攻略:从素材导入到特效添加

电影制作全攻略:从素材导入到特效添加 在当今数字化时代,制作属于自己的电影不再是遥不可及的梦想。借助强大的视频编辑工具,我们可以轻松地将各种素材整合在一起,创作出令人惊艳的作品。本文将详细介绍如何使用视频编辑软件进行电影制作,涵盖从素材导入到特效添加的各个…

作者头像 李华
网站建设 2026/6/4 21:56:06

AI动画制作工具选择指南:从新手到专业的决策路径

AI动画制作工具选择指南:从新手到专业的决策路径 【免费下载链接】awesome-ai-painting AI绘画资料合集(包含国内外可使用平台、使用教程、参数教程、部署教程、业界新闻等等) stable diffusion tutorial、disco diffusion tutorial、 AI Pla…

作者头像 李华
网站建设 2026/6/3 6:28:45

理解Linux和Windows的区别

Linux 和 Windows 是目前主流的两类操作系统,二者的核心区别可以从定位与起源、权限与安全、定制性、使用场景、生态这几个核心维度来区分: 定位与起源 Linux:是一款基于 Unix 的开源操作系统,最初由林纳斯・托瓦兹在 1991 年开发…

作者头像 李华
网站建设 2026/5/31 19:56:17

Vue3组件库终极指南:企业级UI开发完整教程

Vue3组件库终极指南:企业级UI开发完整教程 【免费下载链接】vue-devui 基于全新 DevUI Design 设计体系的 Vue3 组件库,面向研发工具的开源前端解决方案。 项目地址: https://gitcode.com/DevCloudFE/vue-devui 还在为Vue3项目选择UI组件库而烦恼…

作者头像 李华