You can call any C/C++ API from .net. That said, actaully writing any sort of kernel level code (I assume interrupts would qualify here) in .net is a bad idea. There's a performance hit with every call across the managed boundary, and with low level code you're going to have to do that very frequently. Secondly if you modify any system code that's loaded by other system apps you're injecting the version of hte .net framework you use into every one of them, and if they need a different version to work, you've just broken them. If you just want to get the values there's no harm, but modifying anything at that level is a job for C/C++. PS you're more likely to get the API names asking in the c++ forum.