Lavorare con dispositivi USB in .NET

Usando .Net (C #), come si può lavorare con i dispositivi USB?

Come è ansible rilevare eventi USB (connessioni / disconnessioni) e come comunicare con i dispositivi (lettura / scrittura).

C’è una soluzione nativa .Net per fare questo?