Что ж, это вряд ли произойдет, особенно в C #, - вряд ли возможно удовлетворить требования низкого уровня в управляемом коде. Сохранение состояния всей виртуальной машины на самом деле проще, чем просто сохранение отдельных процессов, все, что вам нужно сделать, это сбросить всю память машины и обеспечить согласованный образ диска, что, учитывая возможности программного обеспечения для виртуализации, довольно просто.
Восстановление одного процесса подразумевало бы загрузку всех общих объектов, на которые ссылается процесс, включая любые объекты, на которые ссылается процесс, в пространстве ядра, то есть файл / память / мьютекс / все, что обрабатывает, и без того, чтобы вся машина / операционная система была виртуальной это означало бы заглядывать глубоко внутрь Windows ...
Все, что я говорю: пока это возможно, усилия будут огромными и, вероятно, не будут стоить этого.