news 2026/4/18 10:47:36

35、深入探索Windows VxD与设备驱动开发:从C调用到包装库构建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
35、深入探索Windows VxD与设备驱动开发:从C调用到包装库构建

深入探索Windows VxD与设备驱动开发:从C调用到包装库构建

1. 调用机制与错误处理

在开发过程中,调用机制和错误处理是非常重要的环节。对于C调用者而言,文件句柄返回值会由IFSMgr提前初始化并放置于EAX寄存器。当标志位被置位(表示出现错误)时,包装器会将IFSMgr的错误码从AX复制到错误码指针所指向的位置,同时将EAX置为零后返回。这样做的意义在于,它能明确告知C调用者函数执行失败,并且错误码参数中包含有价值的错误信息,方便后续的调试和问题排查。

2. 构建包装库

当你对WRAPPERS.ASM进行修改以添加自定义服务后,就需要重新构建WRAPPERS.CLB库。具体操作如下:
-找到Makefile:WRAPPERS.MAK文件位于代码盘的子目录中。
-执行构建命令:在命令行中输入nmake -fwrappers.mak即可开始构建。

这个Makefile有一个特殊之处,它会将WRAPPERS.ASM源文件进行六次不同的汇编操作,每次使用不同的SEGNUM定义值,从而生成六个不同的OBJ文件。随后,这六个OBJ文件都会被添加到库中。

SEGNUM并不会被WRAPPERS.ASM直接使用,而是由DDK中的LOCAL.INC文件利用其值将包装函数放置到特定的代码段,并生成特定于该段的函数名。以下是LOCAL.INC文件的部分内容:

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

Langchain-Chatchat多轮对话管理:保持主题不丢失的技术实现

Langchain-Chatchat多轮对话管理&#xff1a;保持主题不丢失的技术实现 在企业级智能问答系统中&#xff0c;一个常见的尴尬场景是&#xff1a;用户刚开始咨询“公司差旅报销标准”&#xff0c;几轮对话后&#xff0c;AI却开始大谈特谈“国际航班选座技巧”。这种“答非所问”…

作者头像 李华
网站建设 2026/4/18 8:37:56

Luau语言深度解析:从Lua替代方案到高性能嵌入式脚本语言的蜕变

Luau语言深度解析&#xff1a;从Lua替代方案到高性能嵌入式脚本语言的蜕变 【免费下载链接】luau A fast, small, safe, gradually typed embeddable scripting language derived from Lua 项目地址: https://gitcode.com/gh_mirrors/lu/luau 在游戏开发和嵌入式系统领域…

作者头像 李华
网站建设 2026/4/18 6:29:54

如何给PDF添加水印?小白友好版教程分享!

花时间做好的PDF文档&#xff0c;谁都不希望被他人随意挪用或转发。添加水印是个简单实用的防护方法&#xff0c;既能标明归属权&#xff0c;也能提醒他人尊重版权。不知道怎么操作&#xff1f;接着往下看~一、PDF水印的类型与作用☑ 水印的常见分类• 可见水印&#xff1a;包括…

作者头像 李华