Failing Symbolic Links?


I’m working on a certain project, for a certain convention, to work with ITGmania. It’s an unlock system where I want to reveal new songs once the condition for a previous one is met, usually determinable once a player completes a song.

Whilst I won’t go into the details now on how that works (I will in the future), the gist is that every time a song is unlocked, I create a symbolic link from a folder that contains all my songs to the folder where ITGmania actually loads songs. Then, I tell the game to refresh the song list.

This way, I’m not actually duplicating files or messing around with my full contents folder. Note: creating shortcuts won’t do the trick here (I’m using Windows) since applications can’t resolve these.


Whilst testing creating my links, I came across a problem.

Unhandled exception. System.IO.IOException: Incorrect function. : 'D:\Games\itgmania\Songs\SMASH! 2023\[01] Never Fear (Short Cut)'
   at Interop.Kernel32.CreateSymbolicLink(String symlinkFileName, String targetFileName, Boolean isDirectory)
   ... etc etc

That’s strange, because earlier I made a mistake of not specifying the full path of the link (i.e. it showed up in my base project’s working folder instead). Creating a link there caused no issues...

The incorrect function error threw me off hard because I thought it might have something to do with spaces in the folder names (you know, new arguments in the terminal, not escaping spaces, etc). So for a brief moment I went on a tangent to try to escape spaces and quotation marks, but stopped and thought about how it didn’t explain why my hiccup worked.

So the next sanity check was for me to try manually creating a link.

λ mklink /d "D:\Games\itgmania\Songs\SMASH! 2023\[01] Never Fear (Short Cut)" "D:\Games\itgmania\Songs-NoLoad\SMASH! 2023\[01] Never Fear (Short Cut)"
The device does not support symbolic links.

My system drive C: works, but my external microSD card D: doesn’t...? Oh.

Symbolic links aren’t supported in exFAT (or any kind of FAT file system). It’s only been a thing since NTFS 3.1.

Yeah. Forgot about how this card used to be in my GoPro.