You are the victim of a bug in the error reporting. The exception message is strange because the WinIOError() method it uses is shared with the SerialPort class. When the Windows error code is 2 (File not found) or 3 (Path not found) then you get the exception message that's only appropriate for a serial port. Thus the weirdo "The specified port does not exist" message.
I am a victim of your code snippet, you obfuscated the real problem. The semaphore name you used isn't actually "my-test-semaphore". I can't guess what it really looks like but it violates the rules for a properly named Windows object. It might look like "backslashes\\are not okay"
.
Fix the semaphore name.