A bit late, but I ran into the same problem and had to spend most of my afternoon trying to figure out how to get from the port to the device. In the end it's fairly trivial, and I wonder how this is neither properly mentioned in the documentation nor a response to be found online:
The name isn't wrong. If you look at your device manager, you will find that the midi device contains several ports. You enumerate the ports and get the names of the ports. To get the device, you have to move up in the hierarchy. While this snippet is C++, it should still show the concept, which is:
-enumerate port (or set up watcher)
-query container id
-create device information for container id
-use that name (in combination with the port name, if the device has multiple ports, otherwise it will get very confusing when you list the same name multiple times)
// port is assumed to be the DeviceInformation object for the enumerated port
const auto container_id = port.Properties().Lookup(L"System.Devices.ContainerId").as<winrt::guid>();
const auto device = DeviceInformation::CreateFromIdAsync(to_hstring(container_id), {}, DeviceInformationKind::DeviceContainer).get();
const auto device_name = to_string(device.Name());
Based on that I'm surprised this was considered a bug/issue other than "why is the documentation not clearly pointing that out?"