Я не верю, что для этого есть стандартный API c ++.
Обратите внимание, что Windows API допускает больше имен файлов, чем оболочка Windows (имена файлов, которые пользователь может использовать в проводнике windws).
Вы должны взглянуть на API оболочки Windows.
Другая возможность - использовать метод проб и ошибок, так что вы действительно независимы от текущей файловой системы.
Самый простой способ - запретить
\ / <> | ":? *
и с тобой все будет в порядке.