IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++中的Thunk技术和它的使用场景 -> 正文阅读

[C++知识库]C++中的Thunk技术和它的使用场景

????????需要具备的基础知识:了解汇编跟机器码映射表,了解函数指针,了解C++函数调用约定如:__cdecl、__stdcall

????????Thunk技术就是申请一段可执行的内存,并通过手动构造CPU指令的形式来生成代码块,实现针对一些特定问题的解决方案,如:

  • 通知我们要在窗口的回调函数里获得包含此窗口的类的指针得把窗口类指针放到窗口绑定的数据里,可是有一种技术可以帮助你省去这种绑定的麻烦。如下图:

因为是 WindowProc 是 __stdcall 调用约定,就算我们多压入了一个this参数,也不管调用者的事, 因为堆栈是由被调用者(windowProc)来清理的。虽然只有4个显式参数, 但作为成员函数的WindowProc在结束的时候是用ret 14h返回的,this被自动清除,你知道为什么吗?

我们只需构造如下的3条简单的指令即可:

  • 我们知道一个窗口对映一个对象,很自然设计一个类。如下图MyWin *p1和MyWin *p2,在类里有窗口的句柄,这样就进入到window的程序世界里了。通过类可以找到窗口句柄,但通过窗口句柄怎么找到类,这就是一个比较难办的问题。当第二或后继的基类指针来调用派生类函数时需要修改指针的偏移值,而由于多态的真正对象必须在运行期确定,所以编译期不能确定具体的偏移量offset是多少(虚函数继承情况或者虚基类)。

以下主要介绍1中涉及的技术方案,通过源代码体现:

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 13:42:06  更:2022-01-01 13:44:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:11:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码