По моему опыту, лучшее решение - использовать обычный макрос MEMORY_BASIC_INFORMATION
и создать отдельный исполняемый файл для x86 и x64. Кроме того, используйте макрос для всех адресов, смещений и указателей, которые соответствуют правильному размеру в зависимости от архитектуры, для которой вы строите. Затем используйте соответствующий исполняемый файл на основе архитектуры целевого процесса. Это приведет к наименьшей головной боли.
В этом случае, если вы используете MEMORY_BASIC_INFORMATION из процесса x64 и нацеливаетесь на процесс x86 или x64, он должен работать нормально. Но я не предполагаю, что это будет работать со всеми структурами и Windows API-функциями, поскольку это только приведет к неприятностям в будущем, поэтому я рекомендую описанный выше метод.