| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1676 人关注过本帖
标题:求教,delphi怎么添加tls_callback函数
只看楼主 加入收藏
asmdaydream
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:中原
等 级:版主
威 望:13
帖 子:257
专家分:840
注 册:2009-5-10
结帖率:100%
收藏
 问题点数:0 回复次数:3 
求教,delphi怎么添加tls_callback函数
如题,网上的资料都是C语言的,希望高手指点。。。
程序代码:
#include "stdafx.h" 
#include <windows.h> 
#include <winnt.h> 
//下面这行告诉链接器在PE 文件中要创建TLS 目录 
#pragma comment(linker, "/INCLUDE:__tls_used") 
/*这是PIMAGE_TLS_CALLBACK()函数的原型,其中第一个和第三个参数保留,第
二个参数决定函数在那种情况下*/ 
void NTAPI my_tls_callback(PVOID h, DWORD reason, PVOID pv) 
{ 
/*一共有四个选项DLL_PROCESS_ATTACH、DLL_THREAD_ATTACH、
DLL_THREAD_DETACH 和DLL_PROCESS_DETACH。 
DLL_PROCESS_ATTACH,是指新进程创建时,在初始化主线程时执行 
DLL_THREAD_ATTACH,是指在新进程初始化时执行,但是不包括主线程 
DLL_THREAD_DETACH,是指在所有的线程终止时执行,但是同样不包括主线程 
DLL_PROCESS_DETACH,是指在进程终止时执行。 
详见微软发布的《Microsoft Portable Executable and Common Object File 
Format Specification v8》*/ 
//仅在进程初始化创建主线程时执行的代码 
  if( reason == DLL_PROCESS_ATTACH ){ 
  MessageBox(NULL,L"hi,this is tls 
callback",L"title",MB_OK); 

 } 

 return; 
} 
/*下面这段是创建一个tls 段 
".CRT$XLB"的含义是: 
.CRT 表明是使用C RunTime 机制 
$后面的XLB 中 
X 表示随机的标识 
L 表示是TLS callback section 
B 可以被换成B 到Y 的任意一个字母,但是不能使用".CRT$XLA"和".CRT$XLZ" 
因为".CRT$XLA"和".CRT$XLZ"是用于tlssup.obj 的 
$是给链接器的。LINK 做的一个重要的任务,就是把所有具有相同名字的段合并成为
一个单独的段(这也就是连接程序名字的由来之一),合并的做法就是简单地把每个
段中的数据按顺序前后放到一个连续的空间就可以了。这样在最终运行的时候,程序
看到的CRT$XL?段也就是一个连续的数组,而不是多个数组。 
*/ 
#pragma data_seg(".CRT$XLB") 
/*如果要定义多个TLS_CallBack 函数,可以把下面这句写成: 
PIMAGE_TLS_CALLBACK p_thread_callback [] = {tls_callback_A, 
tls_callback_B, tls_callback_C,0}; 
其中tls_callback_B 和tls_callback_C 应该是你定义好的其他
Team509
TLS_callBack 函数,这些函数会被依次执行 
*/ 
PIMAGE_TLS_CALLBACK p_thread_callback = my_tls_callback; 
#pragma data_seg() 

 
int main(void) 
{ 
  MessageBox(NULL,L"hi,this is main()",L"title",MB_OK); 
  return 0; 
} 


[ 本帖最后由 asmdaydream 于 2011-11-6 19:57 编辑 ]
搜索更多相关主题的帖子: 目录 comment include reason C语言 
2011-11-06 19:50
asmdaydream
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:中原
等 级:版主
威 望:13
帖 子:257
专家分:840
注 册:2009-5-10
收藏
得分:0 
TLS_CallBack(线程局部存储回调函数)

常走夜路不怕黑 长沙PHP高薪招聘群6K+ 95926136
2011-11-06 19:55
asmdaydream
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:中原
等 级:版主
威 望:13
帖 子:257
专家分:840
注 册:2009-5-10
收藏
得分:0 
各位大侠,有谁知道吗

常走夜路不怕黑 长沙PHP高薪招聘群6K+ 95926136
2011-11-06 20:29
youthan
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-11-28
收藏
得分:0 
话说斑竹~~都研究一年了,弄出来没有啊
2012-11-28 00:39
快速回复:求教,delphi怎么添加tls_callback函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024871 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved