There are many similarities between TWAIN and WIA, but there are also some distinct differences that you should base your choice on when developing an application.
1. As long as a driver exists, both are able to acquire images from devices such as a scanner or camera. For devices like cameras, sometimes the driver is actually WIA but you can access it via the "TWAIN compatibility layer".
2. Acquire images with a dialog.
3. Programmatically set properties of the device and acquire the images programmatically without showing a dialog
4. Not all capabilities are supported by each device, so you can query the device for the ones that it does support.
1. WIA uses a common dialog for all devices while Twain uses a dialog created by the device manufacturer. Practically speaking, this almost always means that the TWAIN dialog will provide more options and advanced control over the device.
2. TWAIN allows you to use custom capabilities that the device manufacturer has created even though they don't exist in the TWAIN specifications.
3. In general, when a device supports both Twain and WIA, TWAIN is better for scanners and WIA is better for acquiring images from cameras and video devices.
4. TWAIN has three transfer modes (Native, Memory, File) and WIA only has two (Memory, File).
5. Most TWAIN sources save the settings of the previous scan while WIA does not.
6. TWAIN supports options for each page when scanning in duplex mode but WIA uses the same settings for both sides.
For more details on WIA, please visit http://www.microsoft.com/whdc/device/stillimage/WIA-arch.mspx
For more details on TWAIN, please visit http://www.twain.org/