gpt4 book ai didi

c++ - 没有 Windows API 调用的 Windows 当前 ThreadID

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:59:50 25 4
gpt4 key购买 nike

我想在不调用 windowsAPI 的情况下查询当前线程 ID。

根据这个http://en.wikipedia.org/wiki/Win32_Thread_Information_Block维基百科文章应该可以直接访问线程 ID。我试过这段代码:

void* tibPtr;
__asm {
mov EAX, FS:[0x18]
mov [tibPtr], EAX
}
int* ptrToThreadID = (int*)(((char*)tibPtr)+0x24);

据我了解,每次当前 ThreadID 时,取消引用 ptrToThreadID 都应该退出。

但是,它给我的结果与 WinAPI 函数 GetCurrentThreadId() 不同,而且它指向的值也没有改变。

我做错了什么?我正在为 Win32 编译,但运行的是 Windows Vista 64 位。我是否需要在 64 位系统上的另一个位置查找 threadID?

最佳答案

如果您想了解 Windows 是如何做到的,只需跟踪函数 - 它已经非常快 - 不会导致模式切换。

但是,如果您甚至想避免这种情况,您可以直接从 TIB 中偏移量 0x24 处读取线程 ID。

带有 asm 的 C 不是我的强项,而是类似的东西:

int threadId;
__asm {
mov EAX, FS:[0x24]
mov [threadId], EAX
}

关于c++ - 没有 Windows API 调用的 Windows 当前 ThreadID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4001464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com