Ответ 1
В то время как API не имеет прямого определения размера стека, смежное виртуальное адресное пространство должно быть зарезервировано до максимального размера стека - это просто то, что большая часть этого пространства еще не выполнена. Вы можете воспользоваться этим и сделать два вызова VirtualQuery.
Для первого вызова передайте ему адрес любого значения в стеке, чтобы получить базовый адрес и размер в байтах зарезервированного пространства стека. На машине x86, где стек растет вниз, вычитайте размер с базового адреса и VirtualQuery еще раз: это даст вам размер пространства, зарезервированного для стека (если вы не точно на пределе размера стека в то время). Суммирование двух естественно дает вам общий размер стека.