Yes, it is technically possible. You will need a filter driver, a type of device driver that implements itself in front of a native serial port driver. It gets a crack in the IRP driver before sending them to a regular driver.
This is the method used by the PortMon SysInternals utility. However, you cannot write such a driver in C # code, the CLR cannot be loaded into ring 0. At least until the super-secret Midori project sees the light of day.
COM filter drivers are pretty common, like this one . You have to do some searches to find one that has a .NET shell.
source share