According to the documentation
<https://msdn.microsoft.com/de-de/library/yeby3zcb.aspx>, _wfopen
already takes a wide-character string, not an ANSI string.
So
return _wfopen(name.tempCStringW(), mode.tempCStringW());
would be the correct way. All these weird ansi versions are
Windows 98 era legacy, they aren't commonly used anymore.
Please also try whether your C runtime implements _wfopen
correctly or otherwise your file name is somehow broken (maybe
it's on a FAT filesystem etc). For that, please try opening it in
a C program using _wfopen(_T("filenamehere"), "r");
For comparison, try to create a file with the same name on an
NTFS filesystem and try opening it in a C program using
_wfopen(_T("filenamehere"), "r");
Does that work?
Also, what version and flavour (DMD, GDC, LDC) of D do you use?