I am not sure if I fully understand all of your questions, but will give it a shot.
For the most part, the Teeensy code does not support connecting to the host computer as an MSC device. As I mentioned "for the most part" as, there is now support in CircuitPython to allow it to run on the Teensy 4, 4.1 and Micromod, and they have their own implementation of code and they do connect the teensy up as an MSC type device.
However we do have code that we are working that allows the Teensy to connect up as an MTP (
Media Transfer Protocol ) device. The code for this is not fully in the builds yet, but we are working on it.
Lots more details up on the thread:
https://forum.pjrc.com/threads/68139-Teensyduino-File-System-Integration-including-MTP-and-MSC
As part of this, currently the MTP stuff is in the library:
https://www.github.com/kurte/MTP_Teensy
There are several examples of code that for example allow you to plug an MSC type device (USBDrive, USBFilesystem) into the USBHost port of T3.6 or T4.x and the code will enumerate the partitions on the drive and try to assign a USBFilesystem object to each partition that we understand (Fat, ExFat).
Once this is done, your code on the Teensy can open up files on the filesystem the same way it can with an SD drive, or LittleFS.
Again some of the examples, then add these FileSystems to the list of storage items shown by MTP. Example run right on a MicroMod.
Where I have an SSD drive plugged in using and SSD to Serial adapter...
The MTP USB Types show up on the host computers, like I showed. However they are not normal Filesystems on the host, like an MSC device would be. Instead all of the communications is done through the MTP protocol. What does this mean. Your typical apps can not open up files on the Teensy and edit them directly.
However MTP does allow you to do things, like copy files, delete files, enumerate the hierarchy, etc. And some operations may sort of disguise some of this. For example if you double click on a bitmap file, the underlying code will probably use the MTP transfer code to copy the file to your PC probably into the temporary directory and then launch the app on your PC for that type file passing it the file from TEMP.
Wit this I have played around with stuff, like editing configuration file. I have two explorer windows open, one to some main folder on PC and another to the browsing into the Teensy object. I drag the file from the Teensy to the PC folder. I then edit the file on the pc and after I save the changes, I drag the file back to the Teensy object.
This was done in example sketch that shows image files stored in on an SD card, and when plugged in to PC, allows me to copy more Images to the teensy to be shown in the slide show. It also has simple config file that allows me to experiment by changing the options, which the sketch checks to see if the file was updated.
However with USB Types including MTP.
Currently only in 1.57 Beta 3 so far we have:
MTP - Only MTP plus a Serial Emulator type which talks to Terminal Monitor in Arduino.
Serial + MTP - like the other one but instead of emulated Serial it has the normal Serial .
What we don't have is the easy ability to add this to other USB types. That is we don't have things like: Joystick + MTP... Would be nice and one could probably hack it up by changing some stuff. As actually in previous builds we did not have Serial + MTP, but had setups to do it anyway.
Hope this answers most of the questions.