news 2026/5/26 8:23:25

23、16位驱动DLL入门指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
23、16位驱动DLL入门指南

16位驱动DLL入门指南

一、为何驱动DLL通常为16位

在Windows 3.x时代,微软建议开发者将所有硬件驱动打包为VxD(Windows的“真正”设备驱动)。然而,许多开发者(包括微软自身)并未遵循这一建议,而是将驱动功能放入DLL中。毕竟,VxD的学习曲线很陡峭,而打包为DLL的驱动也能胜任工作(不过,像串口驱动这类需要快速中断响应时间的驱动除外)。

如今,微软建议Windows 95开发者将硬件驱动打包为VxD。这一次,该建议更难被忽视,因为Win32 DLL被禁止执行大多数“驱动”类型的操作,禁止的操作包括:
- 访问内存映射硬件
- 执行DMA传输
- 处理硬件中断
- 发出软件中断

由此可见,若不违反这些规则,唯一能打包为32位DLL的驱动类型是最简单的那种:用于I/O映射设备的轮询模式驱动(无中断)。

许多Windows 95开发者因此听从微软建议编写VxD。不过,若将驱动构建为16位DLL,仍可编写复杂的驱动,因为16位DLL不受Win32 DLL的相同限制。实际上,微软提供的许多标准驱动(包括鼠标驱动和多媒体驱动)仍是16位的。但在Windows 95下使用16位DLL,除了驱动DLL外,还需要编写另一个DLL:thunk DLL。

二、16位DLL与32位应用程序的接口

在Windows 95中,无论与DLL接口的应用程序是旧的16位Windows 3.x应用程序还是新的32位Win32应用程序,驱动DLL始终是16位的。若要让16位驱动DLL被Win32应用程序使用,必须编写一个转换层,在32位和16位世界之间进行转换,这个转换层称为thunk DLL。

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

企业级云原生应用平台Erda:5分钟快速上手终极指南

企业级云原生应用平台Erda:5分钟快速上手终极指南 【免费下载链接】erda An enterprise-grade Cloud-Native application platform for Kubernetes. 项目地址: https://gitcode.com/gh_mirrors/er/erda Erda是一个专为Kubernetes设计的企业级云原生应用平台&…

作者头像 李华
网站建设 2026/5/25 13:48:37

KCP协议实战指南:如何用极简代码打造高可靠低延迟传输系统

KCP协议实战指南:如何用极简代码打造高可靠低延迟传输系统 【免费下载链接】kcp KCP —— 这是一种快速且高效的自动重传请求(Automatic Repeat-reQuest,简称ARQ)协议,旨在提高网络数据传输的速度和可靠性。 项目地址…

作者头像 李华
网站建设 2026/5/26 5:37:58

Langchain-Chatchat实体识别应用:自动标注人名/地名/组织机构

Langchain-Chatchat 实体识别应用:自动标注人名/地名/组织机构 在金融合规审查、法律合同归档或科研文献管理中,一个常见的挑战是:如何从成百上千页的非结构化文档里快速找出所有涉及的人名、公司和地理位置?传统做法依赖人工逐字…

作者头像 李华
网站建设 2026/5/26 5:34:29

35、媒体播放器音乐管理与复制全攻略

媒体播放器音乐管理与复制全攻略 1. 媒体播放器隐私设置 在媒体播放器的选项对话框中,点击“隐私”标签,会显示一些可决定媒体播放器通过互联网传输多少信息的选项。若希望媒体播放器能够在线获取媒体信息,必须选择前三个选项。该标签上的其他设置并非那么关键。若需了解隐…

作者头像 李华
网站建设 2026/5/26 5:36:36

人工智能赋能聚合物及复合材料模型应用与实践

近年来,生成式人工智能(包括大语言模型、分子生成模型等)在聚合物及复合材料领域掀起革命性浪潮,其依托数据驱动与机理协同,从海量数据中挖掘构效关系、通过分子结构表示(如 SMILES、BigSMILES)…

作者头像 李华