Bagikan melalui


Pesanan panggilan untuk fungsi minidriver

Ketika minidriver dimulai, ini memanggil beberapa titik masuk STI yang lebih lama, seperti IStiUSD::Initialize, dan IStiUSD::GetStatus. Segera setelah aplikasi pertama mencoba berkomunikasi dengan perangkat, layanan WIA memanggil IWiaMiniDrv::d rvInitializeWia. Dalam fungsi inilah minidriver harus membangun pohon item.

Layanan WIA selanjutnya memanggil IWiaMiniDrv::d rvInitItemProperties untuk setiap item di pohon. Minidriver harus membuat semua properti yang relevan dengan item. Dalam beberapa situasi, mungkin bijaksana untuk membuat properti kosong dan mengisi datanya nanti. Misalnya, untuk performa yang lebih baik, gambar mini gambar pada kamera harus dibaca hanya ketika layanan WIA secara khusus memintanya, seperti yang dijelaskan di bawah ini.

Fungsi berikutnya yang akan dipanggil tergantung pada jenis aplikasi dan perangkat. Biasanya, operasi aplikasi yang paling umum adalah mentransfer data. Untuk pemindai, aplikasi pertama-tama menyiapkan properti (misalnya, jenis data dan jangkauan) yang menentukan gambar yang ingin didapatkannya dari perangkat. Layanan WIA memanggil IWiaMiniDrv::d rvValidateItemProperties ketika aplikasi mengubah properti apa pun. Minidriver harus memeriksa apakah properti valid, berkomunikasi dengan perangkat, jika perlu. Minidriver umumnya harus menghindari pengaturan properti dalam fungsi tersebut, karena aplikasi lain dapat mengatur properti ke nilai yang berbeda sebelum transfer data terjadi.

Untuk mentransfer data, layanan WIA memanggil IWiaMiniDrv::d rvLockWiaDevice, IWiaMiniDrv::d rvWriteItemProperties, IWiaMiniDrv::d rvAcquireItemData, dan IWiaMiniDrv::d rvUnLockWiaDevice, dalam urutan tersebut. Panggilan untuk mengunci dan membuka kunci perangkat menjamin bahwa tidak ada aplikasi lain yang mengakses perangkat selama transfer. Untuk pemindai, IWiaMiniDrv::d rvWriteItemProperties harus mengirim properti seperti posisi, jangkauan, dan resolusi ke perangkat. Driver kamera biasanya tidak perlu mengirim properti apa pun ke perangkat. IWiaMiniDrv::d rvAcquireItemData harus mengambil data gambar dari perangkat dan mengirimkannya kembali ke aplikasi melalui layanan WIA, menggunakan antarmuka COM IWiaMiniDrvCallback COM.

Untuk kamera, jika aplikasi ingin menampilkan gambar mini untuk gambar, layanan WIA memanggil IWiaMiniDrv::d rvReadItemProperties pada setiap gambar. Minidriver harus membaca gambar mini pada saat itu dan menyimpannya dalam konteks item driver. Penting untuk menyimpan gambar mini, karena beberapa aplikasi mungkin meminta gambar mini, menghasilkan beberapa panggilan ke IWiaMiniDrv::d rvReadItemProperties. Jika minidriver membaca gambar mini setiap kali aplikasi memintanya, performa akan menderita.

Satu pertimbangan khusus lainnya untuk kamera adalah properti item akar yang memengaruhi pengaturan pada kamera (kecepatan rana, misalnya). Ketika aplikasi mengubah properti ini, layanan WIA memanggil IWiaMiniDrv::d rvValidateItemProperties. Minidriver dapat berkomunikasi dengan kamera, jika perlu, untuk memvalidasi pengaturan properti. Namun, fungsi ini bukan tempat terbaik untuk mengubah pengaturan pada kamera, karena aplikasi lain juga dapat mengubah properti. Minidriver harus memperbarui semua pengaturan kamera dari properti item akar ketika fungsi IWiaMiniDrv::d rvDeviceCommand dipanggil untuk mengambil gambar baru.