news 2026/9/12 17:20:33

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/9/12 4:08:39

32、Windows驱动程序中的定时器使用与英特尔架构解析

Windows驱动程序中的定时器使用与英特尔架构解析 1. 驱动DLL使用定时器 1.1 INT 8h处理器的使用与局限 INT 8h处理器仅应执行真正对时间要求严格的操作,对于其他操作(如更新客户端窗口),可通过调用 PostMessage 并使用用户定义的消息来推迟处理。窗口过程在接收到消息…

作者头像 李华
网站建设 2026/9/13 4:42:56

ArcGIS大师之路500技---037普通克里金VS泛克里金

文章目录前言一、两种克里金的本质区别(一句话说清)二、普通克里金的5种半变异函数详解2.1 Spherical(球面模型)★★★★★2.2 Exponential(指数模型)★★★★2.3 Gaussian(高斯模型&#xff09…

作者头像 李华
网站建设 2026/9/12 19:57:26

QQ音乐API终极指南:快速搭建专属音乐数据服务

QQ音乐API终极指南:快速搭建专属音乐数据服务 【免费下载链接】QQMusicApi 基于 Express Axios 的 QQ音乐接口 nodejs 版 项目地址: https://gitcode.com/gh_mirrors/qqm/QQMusicApi 在当今数字音乐时代,获取可靠的音乐数据接口成为众多开发者的…

作者头像 李华
网站建设 2026/9/12 20:26:34

Auto-install 终极指南:智能依赖管理全解析

Auto-install 终极指南:智能依赖管理全解析 【免费下载链接】auto-install Install dependencies as you code ⚡️ 项目地址: https://gitcode.com/gh_mirrors/au/auto-install 在当今快节奏的开发环境中,手动管理项目依赖已成为效率瓶颈。Auto-…

作者头像 李华
网站建设 2026/9/12 20:44:09

iOS上架被卡在 4.3条款 怎么办?分析应用被判定为相似应用的常见原因

第一次遇到 4.3 被拒时,我并没有太意外。 项目是典型的工具型应用,功能明确、逻辑简单,但审核意见里那句“与 App Store 上已有应用过于相似”,还是让人停下来重新审视整个上架过程。 后来几次 4.3 相关的项目让我逐渐意识到&…

作者头像 李华
网站建设 2026/9/12 17:18:16

Langchain-Chatchat协同编辑设想:多人同时维护知识库的可能性

Langchain-Chatchat协同编辑设想:多人同时维护知识库的可能性 在企业级AI应用逐渐从“演示系统”走向“生产系统”的今天,一个现实问题日益凸显:如何让团队中的多个成员,像协作编辑一份Word文档一样,共同维护一个本地部…

作者头像 李华