2012年2月17日

tls callback例子

摘要: 1 #include <windows.h> 2 #include <winnt.h> 3 //下面这行告诉链接器在PE文件中要创建TLS目录 4 #pragma comment(linker, "/INCLUDE:__tls_used") 5 //这是PIMAGE_TLS_CALLBACK()函数的原型 6 //其中第一个和第三个参数保留,第二个参数决定函数在那种情况下 7 void NTAPI my_tls_callback(PVOID h, DWORD reason, PVOID pv) 8 { 9 ///共有四个选项DLL_PROCESS_A 阅读全文

posted @ 2012-02-17 08:41 梦想Sky 阅读(1560) 评论(0) 推荐(0) 编辑

TLS目录结构

摘要: PE文件结构的目录表(directory table)中有一个是IMAGE_DIRECTORY_ENTRY_TLS (9)线程级局部存储目录,如果此处非零的话,PE将会有一个tls节,tls节以结构IMAGE_TLS_DIRECTORY(winnt.h)开始 typedef struct _IMAGE_TLS_DIRECTORY32 { DWORD StartAddressOfRawData; DWORD EndAddressOfRawData; PDWORD AddressOfIndex; PIMAGE_TLS_CALLBACK *AddressOfCallBacks; DWORD Size 阅读全文

posted @ 2012-02-17 08:35 梦想Sky 阅读(1444) 评论(0) 推荐(0) 编辑

TLS简介----转

摘要: 1.什么是TLS?TLS是ThreadLocalStorage(线程局部存储)的简称,是一项解决多线程内部变量使用问题的技术。用于将某些数据和一特定线程关联起来,即,这些数据为关联线程所独有(私有)。在多线程编程中,同一个变量,如果要让多个线程共享访问,那么这个变量可以使用关键字volatile进行声明;而如果一个变量不想被多个线程共享访问,那么就应该使用TLS。2.如何使用TLS编程?TLS使用非常简单,只要对变量声明时使用__declspec(thread)修饰就可以了。例如:__declspec(thread) int g_nData = 0;3.一个使用TLS的例子 1 #includ 阅读全文

posted @ 2012-02-17 08:17 梦想Sky 阅读(1592) 评论(0) 推荐(0) 编辑

导航