 <p>You probably want to check if the device supports <a href="http://msdn.microsoft.com/en-us/library/dd389295%28v=VS.85%29.aspx" rel="nofollow">WPD</a>, the replacement of WIA in Vista or later. If the device does not support WPD, then try access the device with <a href="http://msdn.microsoft.com/en-us/library/ms630814%28v=vs.85%29.aspx" rel="nofollow">WIA Automation Layer</a>. It can't handle WIA device-specific problems for sure, but at least it is good for standardized behavior. If neither WPD nor WIA is supported, I am afraid you have to deal with the old TWAIN interface.</p> <p>The <a href="http://msdn.microsoft.com/en-us/library/ff553346%28v=VS.85%29.aspx" rel="nofollow">WIA documentation in Windows Driver Kit</a> is on par with the documentation in Windows SDK. Don't be surprised if a driver developer fails to follow the WIA driver guidelines. If you travel WIA scanner trees, make sure you are aware of the difference of tree layout for <a href="http://msdn.microsoft.com/en-us/library/ff552775%28v=VS.85%29.aspx" rel="nofollow">Windows XP</a>, <a href="http://msdn.microsoft.com/en-us/library/ff552772%28v=VS.85%29.aspx" rel="nofollow">Vista</a> and <a href="http://msdn.microsoft.com/en-us/library/ff552766%28VS.85%29.aspx" rel="nofollow">Windows 7</a>.</p> <p>There is a discussion about wrappers of these APIs for .Net applications at <a href="http://stackoverflow.com/questions/39276/net-scanning-api">.NET Scanning API</a>.</p>