Уверен, что есть поддерживаемый способ. Я не знаю и не исследовал его, но вот некоторые догадки:
Самый простой способ - запустить его как процесс: записать его в *.com file, а затем сообщить O/S, чтобы запустить исполняемый файл ,
В качестве альтернативы передайте память как параметр в CreateThread
function (но вам нужно будет скрестить код, имеющий правильные соглашения о вызове, ожидающие указанные параметры, сохраняющие регистры и находящиеся в памяти, которая является исполняемой).
Другая возможность заключается в том, чтобы записать коды операций в память, которая уже известна, которая уже будет выполнена (например, перезаписать существующий код в недавно загруженной DLL).
Файл '.com' ограничен 16-разрядным кодом DOS, и, хотя этого может быть достаточно для некоторых целей, это не общее решение. Это берет на себя стоимость загрузки NTVDM для выполнения 16-битного кода. –
Ответ JulianR выглядит неплохо. – ChrisW