Короче говоря, C # не подходит для такого рода задач, поскольку это неуправляемый код низкого уровня. Вы можете теоретически сделать это, но это будет более болезненным, так как вам приходится часто совершать поездки в неуправляемый мир, чтобы справляться с прерываниями. Я бы посоветовал взглянуть на это по аналогии с нативным кодом C / C ++, который работал бы лучше и обрабатывал подобные вещи низкого уровня.
Еще одна причина, по которой в C # есть своя собственная сборка мусора, последнее, что вам нужно, - это чтобы механизм обработки прерываний удалялся в сборщике мусора, а пока прощайте драгоценной структуре данных, используемой для обработки прерываний, это добавит значительные накладные расходы к коду в этом отношении.
Лично я никогда не слышал о том, чтобы C # имел дело с такого рода вещами, но некоторые из более проницательных читателей скажут: «Подожди, а как насчет новой неопрятной ОС под названием Singularity, которая написана на C #?», В в конце дня использование среды выполнения .NET для управления этой аппаратной задачей - нет-нет.
Edit:
После того, как я понял, что, посмотрев справочное руководство по одному из примеров кода C, в котором он использует outp
, я решил, что вам нужно сделать вывод с прямого порта, я подумал this может помочь, это dll, которая позволит вам делать именно то, что для ввода, вам понадобится найти соответствующую подпись p / invoke, чтобы сделать это. Есть еще одна DLL, которая может сделать то же самое здесь . Также проверьте этот WinRing0 код.
Опять же, вам нужно покопаться и найти подходящую сигнатуру метода, подходящую для пинвокинга ...
Желаю удачи с этим .. не стесняйтесь размещать больше, и я постараюсь помочь ...:)
Надеюсь, это поможет,
С наилучшими пожеланиями,
Том.