Se n'è già discusso su sto forum.

E ti assicuro che il C# non è un linguaggio adatto, dovresti scrivere un Device Driver in un linguaggio a basso livello