Hi good people! I have a unicode problem; I have created a ISAPI DLL in C++ that takes in a filename and then sends a file to the requesting client. (The DLL is executed from a browser.)

Problem is that when I send in a Japanese filename (where each character need two bytes) the application believes the file doesn't exist.

I'm trying to get a file named "日本語.jpg".
This is turned into ANSI characters in the application: "日本語.jpg".

Then when I try to open the file:

Code:
HANDLE fileHandle = CreateFile(
  filePath,  //the file path, char *filePath
  GENERIC_READ,
  FILE_SHARE_READ,
  NULL,
  OPEN_EXISTING,
  FILE_ATTRIBUTE_NORMAL,
  NULL
);
...it doesn't find the file since it checks for the ANSI version of the Unicode file name. If I rename the file to "日本語.jpg" and then try to get "日本語.jpg" I can get the file (but that means I have to rename the files to weird symbols).

The question is:

Can I make it so that the CreateFile function understands that "filePath" is Unicode and not ANSI? Or is there some other way to get a HANDLE to the correct file?

Desperate for help, I just discovered this and if there is no way of fixing it it will mean I have wasted weeks coding for a broken system!