-
-
[求助]能否使用FS寄存器实现线程局部数据的存储
-
发表于:
2007-11-18 11:13
6242
-
比如使用FS:[38H]来存储线程的局部数据,是否会和操作系统相冲突?
下面的程序是否会有问题?
#include <stdio.h>
#include <windows.h>
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
int 线程局部数据 = -1;
__asm{
mov eax,FS:[38H] ////用od调试得知FS:[38H]的地址是7FFDE038
mov dword ptr [线程局部数据],eax
}
printf("%d\n",线程局部数据);
return 0;
}
void main()
{
int 线程局部数据 = -1;
__asm mov dword ptr FS:[38H],1 //用od调试得知FS:[38H]的地址是7FFDF038
__asm{
mov eax,FS:[38H]
mov dword ptr [线程局部数据],eax
}
printf("%d\n",线程局部数据);
//---
::CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
Sleep(100);
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课