【发布时间】:2019-12-25 03:28:56
【问题描述】:
我想知道是否有办法在创建 Win32 线程时设置线程堆栈的地址。
【问题讨论】:
-
你需要什么设置这个地址?
-
感谢您的提问。为了测试,我只是想模拟我在嵌入式系统上可以做什么。
-
仍然不明白你需要什么设置线程堆栈地址(而不是它保留/提交大小)但如果非常想要 - 可能使用(已经过时但仍然存在)
ZwCreateThread你可以自己设置线程堆栈地址。但是此线程未连接到 csrss(因此限制了您可以在此线程上执行的操作)也可能在创建和释放原始文件后更改线程堆栈。但我个人再次认为这里没有大意义。难以实施,我们获得了什么? -
@RbMm 感谢您的回复。我希望将 DLL 的所有 RW 数据都放在同一个地址范围内。我希望堆栈成为这个范围的一部分
-
在windows中这没有意义,不知道其他系统。那么你必须限制 - 你可以在 DLL 中创建多少线程,并在开始设计时说 dll 中的 .bss 部分。您可以在创建线程后将其堆栈交换到 dll 中的某个位置,但是有意义吗?!你得到了什么。可能你需要更详细地描述这个问题