there is no direct method of doing what you want to achieve in C# To begin with, you'll need to write your own custom printer driver for your virtual printer to use. You will need to do a lot of api wrapping, as there is no interface in C# to help you here. Your best bet is to start looking into the Windows Driver Development kit and see if you can find out exactly what you need to do. (and expect to be writing a c++ wrapper too I guess)