Of course it does if you call the Unicode functions. Unix systems don't store the filenames in Unicode but use codepages. This codepage may be UTF-8 which is equivalent to Unicode or some other codepage. Wine takes care of converting from that codepage to Unicode.
There's no Unix function that returns 16bit Unicode characters. But the filenames retrieved from readdir() can easily be converted to Unicode by using MultiByteToWideChar(...CP_UNIX...).
What happens if two mounted drives want to use different code pages? CP_UNIX is only one constant, and can't handle both cases. I suspect, there is some inherent problem with this approach.
Regards,
Martin