Bagikan melalui


Kompatibilitas WIA-TWAIN

Jika perangkat dapat memiliki dua driver atau lebih, uji driver ini secara menyeluruh untuk kompatibilitas satu sama lain. Misalnya, jika satu driver meninggalkan perangkat dalam keadaan tidak dapat digunakan (seperti driver tidak mengirim pesan sesi tutup dalam beberapa protokol), driver lain mungkin gagal ketika mencoba berkomunikasi dengan perangkat. Situasi ini sering terjadi dengan perangkat serial.

WIA dan TWAIN di DLL yang Sama

Jika Anda menjalankan driver WIA dan driver TWAIN pada saat yang sama dari satu DLL, layanan WIA dan aplikasi TWAIN akan memuat instans DLL ini. Instans WIA dll akan membangun pohon item WIA. Pohon ini mewakili folder dan gambar pada kamera Anda. Aplikasi apa pun yang menggunakan WIA (seperti Komputer Saya atau Pemindai dan Wizard Kamera) akan memiliki salinan pohon item di driver Anda.

Ketika gambar dihapus atau ditambahkan dengan driver TWAIN, driver WIA tidak diberi tahu tentang perubahan ini. Akibatnya, pohon item WIA akan berisi gambar yang telah dihapus, atau tidak akan berisi gambar yang telah ditambahkan. Dalam kedua kasus, driver harus menyegarkan pohon itemnya. Untuk melakukannya, driver TWAIN harus memesan driver WIA Anda untuk menyegarkan pohon itemnya ketika gambar telah ditambahkan atau dihapus.

Salah satu cara untuk melakukan ini adalah dengan memanggil CoCreateInstance (CLSID_IWiaDevMgr,...) dari driver TWAIN Anda, menghitung semua perangkat, dan mencari perangkat Anda. Salah satu cara untuk mengidentifikasi driver Anda melalui enumerasi ini adalah dengan membuat properti kustom di driver WIA Anda sehingga jika driver TWAIN meminta properti ini dan itu ada, Anda akan tahu bahwa itu adalah driver WIA Anda. Setelah Anda memiliki IWiaItem untuk driver Anda, kirim perintah ke driver Anda untuk membangun kembali pohonnya (misalnya, kirimi perintah WIA CMD_SYNCHRONIZE dalam panggilan ke metode IWiaItem::D eviceCommand ). CoCreateInstance, IWiaDevMgr, dan IWiaItem dijelaskan dalam dokumentasi Microsoft Windows SDK.

Cara lain untuk menyegarkan pohon item WIA adalah dengan membuat peristiwa bernama di driver WIA. Utas di driver WIA Anda kemudian dapat menunggu peristiwa ini disinyalkan. Setiap kali Anda menghapus atau menambahkan gambar dengan driver TWAIN, sinyal driver TWAIN (dengan memanggil SetEvent (dijelaskan dalam dokumentasi Windows SDK)) pada peristiwa bernama ini. Utas di driver WIA Anda kemudian akan dilepaskan, dan driver WIA akan membangun kembali pohon.

Bagaimanapun, Anda harus membangun kembali pohon Anda sehingga mencerminkan perubahan apa pun yang dilakukan pada gambar aktual pada kamera atau pemindai. Pastikan bahwa setiap kali Anda memperbarui pohon dengan menambahkan atau menghapus item dari pohon item, Anda mengantre peristiwa (misalnya, WIA_EVENT_ITEM_DELETED atau WIA_EVENT_TREE_UPDATED (untuk deskripsi pengidentifikasi peristiwa WIA ini dan lainnya, lihat dokumentasi Windows SDK)). Jika Anda berhasil mengirim peristiwa ketika pohon Anda berubah, ini akan menyelesaikan masalah dengan Komputer Saya dan aplikasi WIA lainnya yang tidak diperbarui secara otomatis.

Catatan Meskipun driver TWAIN dan WIA Anda mungkin ada di DLL yang sama, driver WIA dan TWAIN tidak dapat berbagi UI yang sama. Setiap driver harus memiliki UI sendiri.