Нет гарантии, что RBP (x64-эквивалент EBP) на самом деле является указателем на текущий кадр в стеке вызовов. Я предполагаю, что Microsoft решила, что, несмотря на несколько новых регистров общего назначения, им нужно освободить еще один, поэтому RBP используется только как framepointer в функциях, которые вызывают alloca (), и в некоторых других случаях. Поэтому, даже если встроенная сборка будет поддерживаться, это не будет правильным решением.
Если вы просто хотите вернуться, вам нужно использовать StackWalk64 в dbghelp.dll. Он находится в dbghelp.dll, поставляемом с XP, и до XP не было 64-битной поддержки, поэтому вам не нужно поставлять dll с приложением.
Для вашей 32-битной версии просто используйте ваш текущий метод. Ваши собственные методы, вероятно, будут меньше, чем библиотека импорта для dbghelp, намного меньше фактической dll в памяти, так что это определенная оптимизация (личный опыт: я реализовал backtrace в стиле Glibc и backtrace_symbols для x86 менее чем за десятый размер библиотеки импорта dbghelp).
Кроме того, если вы используете это для отладки в процессе или генерации отчетов о сбоях после выпуска, я настоятельно рекомендую просто работать со структурой CONTEXT, предоставленной обработчику исключений.
Возможно, однажды я решу серьезно нацелиться на x64 и найти дешевый способ использования StackWalk64, которым я могу поделиться, но, поскольку я все еще нацеливаюсь на x86 для всех своих проектов, я не потрудился.