Possible? Yes.
Practical? Hell no!
You're looking at writing a printer driver. Though this is possible to do in C#, in order for it to work, you'd be loading the weight of the .NET Framework into the kernel when the code is running. That's not a wise thing to do.
You'd also be rewriting quite a sizable chunk of the Windows Driver Kit code in C#. This is not an undertaking I would want to tackle and I've been writing code for 40 years.
Drivers like this are best written in C/C++, not C#.
You can find the Windows Driver Kit documentation and samples
here[
^].