news 2026/8/22 1:31:56

31、32位到16位调用的Thunk层及驱动DLL定时器使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
31、32位到16位调用的Thunk层及驱动DLL定时器使用

32位到16位调用的Thunk层及驱动DLL定时器使用

32位到16位调用的Thunk层

在进行32位到16位的调用时,参数转换完成后,从32位到16位的切换通过如下代码实现:

call dword ptr [pfnQT_Thunk_X2to16]

这个通过函数指针表的调用最终会调用一个未公开的KERNEL32函数QT_ThunkQT_Thunk会接收真实16位DLL中DLL16Foo函数的16:16地址,它负责从32位栈切换到16位栈,然后跳转到真实16位DLL中DLL16Foo函数的16:16地址。

函数指针表的初始化过程较为复杂。简单来说,32位DLL必须在其DllMain中调用一个特殊的初始化函数ThunkConnect32。该函数由Thunk编译器生成,它通过用16位DLL每个导出函数的16:16地址初始化表,将32位DLL与16位DLL“连接”起来。这些地址直到运行时16位DLL加载后才可知,ThunkConnect32会使用另一个未公开的KERNEL32函数Connect32来获取这些16:16地址。

创建Thunk层的步骤

创建Thunk DLL需要遵循以下步骤:
1. 修改16位DLL的头文件,创建包含每个导出函数参数输入、输出和输入输

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

5步实现嵌入式设备网络性能优化终极指南

5步实现嵌入式设备网络性能优化终极指南 【免费下载链接】mongoose Embedded Web Server 项目地址: https://gitcode.com/gh_mirrors/mon/mongoose 你的嵌入式设备是否在面临高并发请求时响应缓慢?内存资源有限却需要支撑大量网络连接?别担心&…

作者头像 李华
网站建设 2026/8/22 0:44:38

如何用Kornia解决相机定位难题?实战高效避坑指南

如何用Kornia解决相机定位难题?实战高效避坑指南 【免费下载链接】kornia 🐍 空间人工智能的几何计算机视觉库 项目地址: https://gitcode.com/kornia/kornia 当你的AR应用无法精准跟踪物体,或者机器人导航频繁失准时,问题…

作者头像 李华
网站建设 2026/8/20 17:20:38

Fluent UI主题定制终极指南:从设计思想到实战应用

Fluent UI主题定制终极指南:从设计思想到实战应用 【免费下载链接】fluentui 项目地址: https://gitcode.com/GitHub_Trending/of/fluentui 你是否在为如何让企业应用拥有统一的品牌视觉风格而烦恼?微软的Fluent UI设计系统提供了强大的主题定制…

作者头像 李华
网站建设 2026/8/20 10:17:12

Tambo MCP客户端实战指南:从零构建智能对话数据平台

Tambo MCP客户端实战指南:从零构建智能对话数据平台 【免费下载链接】awesome-mcp-clients A collection of MCP clients. 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-mcp-clients Tambo MCP客户端作为现代AI工具集成的典范,通过…

作者头像 李华
网站建设 2026/8/21 19:09:52

MMDeploy终极指南:5分钟实现深度学习模型一键部署

引言:为什么模型部署如此重要 【免费下载链接】mmdeploy OpenMMLab Model Deployment Framework 项目地址: https://gitcode.com/gh_mirrors/mm/mmdeploy 在深度学习项目中,训练出高精度的模型只是成功的一半。真正的挑战在于如何将训练好的模型高…

作者头像 李华