Hi, I am writing a wrapper dll for an existing printer driver. Basically what I want to do is to make some changes to the final output of the page in either DrvNextBand or DrvSendPage functions. I am having an interesting case regarding calling of DrvQueryPerBandInfo function by the GDI and drivers returned values. When this function is first called, driver returns the full width and height of the surface in PERBANDINFO structure instead of the band size and also sets the bRepeatThisBand to 1 which tells the GDI to repeat this band. GDI then calls the rendering function (DrvBitBlt, DrvTextOut etc.) and then calls DrvQueryPerBandInfo again. In this second call the DrvQueryPerBandInfo, driver returns the band size as normal and bRepeatThisBand is set to 0. After that, usual banding calls occurs. What I don't understand is that why driver wants GDI to repeat the band (in this case band size is equal to whole page) without sending it to the printer? What's the possible use case of setting bRepeatThisBand to 1? By the way, for the same driver, if I don't return function pointer to DrvQueryPerBandInfo (everything else is same), driver works as expected and produces correct output, but with DrvqueryPerBandInfo implemented, some internal exception occurs in the driver. Thank you all. --- Questions? First check the UndocPrint pages at http://www.undocprint.org/winspool To unsubscribe, visit the List Server page at //www.freelists.org/list/winprndev