• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 关于Thunk用户线程回调函数的问题

关于Thunk用户线程回调函数的问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了thunk,thunk是什么意思,thunk thunk tun,redux thunk,junk re thunk等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于Thunk用户线程回调函数的问题
描述:

我到网上找了段简单的Thunk代码,用于将类的成员函数变成回调函数,而且写代码测试时没问题,核心代码如下:
void Init(CommonMemberFun method, const T *pThis)
{
union uPtr { BYTE *byte; DWORD *dword; CommonMemberFun method; };
uPtr pAsm86;
pAsm86.byte = asm86;
uPtr pFn;
pFn.method = method;
*pAsm86.byte++      =   0x58; //pop eax
*pAsm86.byte++      =   0x68; //push pThis
*pAsm86.dword++     =   (DWORD)pThis;
*pAsm86.byte++      =   0x50; //push eax
*pAsm86.byte++      =   0xE9; //jmp method
*pAsm86.dword++     =   (DWORD)pFn.dword - (DWORD)(this+1);
FlushInstructionCache(GetCurrentProcess(), this, sizeof(*this));
}
今天突然想把这段代码用在创建线程时的回调函数的问题上,能运行,能达到效果,可有个不大不小的瑕疵,
结束线程时,居然造成了我的回调函数的代码堆栈除了问题。虽然继续运行还能运行下去。
哪位大牛能不能指点一二,是不是线程的回调函数不一样啊,不然为什么我没看到过有人把Thunk应用到这里呢。


解决方案1:

你的回调函数的是什么格式,__stdcall还是__cdecl?


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于Thunk技术的疑问
  • 有谁知道Thunk技术的?在Win98下如何读取硬盘的物理扇区?
  • [求助]ATL中的thunk
  • 今天看不懂了程序员2003第六期的thunk机制问题请教各位。等待)
  • 能帮我解释一下C++类成员函数地址与C++类对象地址的关系吗?在做Thunk时,遇了问题
  • 还是Thunk的问题,实现我已经实现,不过还有些细节没弄明白。
  • 关于Thunk用户线程回调函数的问题

相关文章

  • 2017-06-05 呵呵,懒人来啦!关于消息的处理问题!
  • 2017-06-04 高分请教一个简单问题:关于基于第3方ocx控件的开发问题
  • 2017-06-04 如何才能在对话框里面加表格?可以是一个activeX控件
  • 2017-06-04 一个ATLDLL怎么调用另一个ATLDLL
  • 2017-06-04 请教在sdk中如何相应com中的事件啊?
  • 2017-06-05 某指令引用了某某地址,该地址不能为读,怎么回事啊(2地址一样)
  • 2017-06-05 调用net开发的dll必须安装netFrameWork吗?
  • 2017-06-04 MDI方式创建的程序,怎么将一个dialog作为子窗体显示
  • 2017-06-04 在com中调用任何一句ConvertBSTRToString和_bstr_t函数都会异常
  • 2017-06-05 win2000中怎么加载自己的服务

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 最近机子老是弹出一些窗口,广告页面,但是也不是BHO和IE插件之类的东西,他们是怎么处理的?
    • 高分求教:如何用VC作一个安装程序?
    • 请问有什么方法不通过SetSite得到IWebBrowser2接口呢?
    • 关于DLL的问题,急
    • activex与页面交互
    • 最简单的COM,有些疑问,不知道如何测试
    • 欢迎大家讨论com技术和设计模式
    • 大家讨论:static使用及注意事项
    • 请帮忙:如何编程控制其它的应用程序,使之滚动窗口???
    • 哪里去找'xmldomidl'这个文件啊

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有