The OpenPrinter() and GetPrinter() API calls return the values for the printer status that they get from the printer driver itself.

In many cases (for non BIDI interface type printers) the only way that the printer driver knows that there is a problem with the printer is when a job stalls so for such printer drivers it is not possible to know the status of the printer before a job is sent to it.

HTH,
Duncan