Я делал подобные вещи в прошлом, но это было какое-то время, поэтому я не уверен, что правильно понял.
Недостаточно документировано, но в vs2008 fstream принимает объект FILE в качестве конструктора. Вы можете создать объект FILE из идентификатора файла с помощью _fdopen (). Вы можете получить идентификатор файла из дескриптора os, используя _open_osfhandle.
Так что я думаю, что это похоже на:
int id = _open_osfhandle(CreateFile(..., FILE_FLAG_BACKUP_SEMANTICS...));
fstream f = new fstream(_fdopen(id));