Yes, I am very familiar with DocumentProperties and DEVMODE. I have reviewed all the documentation on the MSDN site. I'm also familiar with using dmFields to determine if a given printer has a specific property available. What that doesn't tell you is what settings are available for that property on that printer. For that you need DeviceCapabilities. The problem is that the buffer size you need to send DeviceCapabilities as the fourth parameter varies depending on the property you are checking. How to get that buffer size is what I'm trying to figure out.