Alberto Massari wrote: I guess Wine is converting the NULL into ?? to be able to store it as a string.
Shachar Shemesh wrote:
You guessed wrong. The leading ?? is there under both Wine and Windows 2000, and in both cases there is ALSO a NULL. As neither Wine nor Windows 2000 then accepts that as a valid path, I'll just remove it. I was just wondering whether anyone knows why Windows 2000 puts that extra stuff in (it's obvious why wine does that - to be compatible).
I'm not sure about ??, but see this excerpt from MSDN Re CreateFile:
lpFileName [in] Pointer to a null-terminated string that specifies the name of the object to create or open.
In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\?" to the path. For more information, see Naming a File.
Windows 95/98/Me: This string must not exceed MAX_PATH characters.
John K. Hohm wrote:
Alberto Massari wrote: I guess Wine is converting the NULL into ?? to be able to store it as a string.
Shachar Shemesh wrote:
You guessed wrong. The leading ?? is there under both Wine and Windows 2000, and in both cases there is ALSO a NULL. As neither Wine nor Windows 2000 then accepts that as a valid path, I'll just remove it. I was just wondering whether anyone knows why Windows 2000 puts that extra stuff in (it's obvious why wine does that - to be compatible).
I'm not sure about ??, but see this excerpt from MSDN Re CreateFile:
lpFileName [in] Pointer to a null-terminated string that specifies the name of the object to create or open.
In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\?" to the path. For more information, see Naming a File.
Windows 95/98/Me: This string must not exceed MAX_PATH characters.
That's true, except:
1. Wine does not support this convention. 2. I have not managed to get Windows to really support it either. 3. Changing the first '?' to a '' is more difficult, as you need to perform elaborate tests to make sure that you are not accessing data outside of the buffer.
I was seriously considering doing it in C++ (which SHOULD be ok, as this is not a DLL, right?). That would have allowed much more felxibility. Oh well, maybe next time.
Shachar
Shachar Shemesh wrote:
[string processing stuff deleted] I was seriously considering doing it in C++ (which SHOULD be ok, as this is not a DLL, right?). That would have allowed much more felxibility. Oh well, maybe next time.
You're joking, right? - Dan