Que codificação são nomes de arquivos em NTFS armazenados como?

Eu estou apenas começando em alguma programação para lidar com nomes de arquivos com nomes não ingleses em um sistema WinXP. Eu fiz algumas leituras recomendadas no unicode e acho que tenho a idéia básica, mas algumas partes ainda não estão muito claras para mim.

Especificamente, qual codificação (UTF-8, UTF-16LE / BE) é o arquivonomes (não o conteúdo, mas o nome real do arquivo) armazenado em NTFS? É possível abrir qualquer arquivo usando fopen (), o que leva um char *, ou não tenho outra escolha senão usar wfopen (), que usa um wchar_t *, e presumivelmente usa uma string UTF-16?

Eu tentei manualmente alimentando em uma string codificada UTF-8 para fopen (), por exemplo.

unsigned char filename[] = {0xEA, 0xB0, 0x80, 0x2E, 0x74, 0x78, 0x74, 0x0}; // 가.txt

FILE* f = fopen((char*)filename, "wb+");

mas isso saiu como "ê ° € .txt".

Fiquei com a impressão (que pode estar errada) de que uma string codificada em UTF8 seria suficiente para abrir qualquer nome de arquivo no Windows, porque pareço lembrar vagamente algum aplicativo do Windows passando por aí (char *), não (wchar_t *) e tendo sem problemas.

Alguém pode lançar alguma luz sobre isso?

questionAnswers(3)

yourAnswerToTheQuestion