¿Con qué codificación se almacenan los nombres de archivo en NTFS?

Acabo de comenzar con alguna programación para manejar nombres de archivos con nombres que no están en inglés en un sistema WinXP. He hecho algunas lecturas recomendadas en Unicode y creo que tengo la idea básica, pero algunas partes aún no están muy claras para mí.

Específicamente, qué codificación (UTF-8, UTF-16LE / BE) es el archivonombres (no el contenido, pero el nombre real del archivo) almacenado en NTFS? ¿Es posible abrir cualquier archivo usando fopen (), que toma un char *, o no tengo más remedio que usar wfopen (), que usa un wchar_t *, y presumiblemente toma una cadena UTF-16?

Intenté introducir manualmente una cadena codificada en UTF-8 para fopen (), por ejemplo.

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

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

pero esto salió como 'ê ° € .txt'.

Tenía la impresión (lo cual puede ser incorrecto) de que una cadena codificada en UTF8 sería suficiente para abrir cualquier nombre de archivo en Windows, porque parece recordar vagamente que alguna aplicación de Windows pasa (char *), no (wchar_t *), y no hay problemas.

¿Alguien puede arrojar algo de luz sobre esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta