Mode Transfer

Antarmuka gambar diam menentukan dua mode transfer − mode status dan mode data. Ketika klien antarmuka IStillImage COM memanggil IStillImage::CreateDevice untuk mendapatkan akses ke perangkat gambar diam, ia menentukan satu (atau kedua) mode transfer. Beberapa klien dapat membuka perangkat dalam mode status, tetapi hanya satu klien pada satu waktu yang diizinkan untuk membuka perangkat dalam mode data.

Pemantau peristiwa gambar diam membuka perangkat dalam mode status. Biasanya, tetapi tidak selalu, API akuisisi gambar membuka perangkat dalam mode data.

Setelah klien membuka perangkat dalam mode data, pemantau peristiwa menyimpan peristiwa perangkat gambar berikutnya yang masih dalam antrean internal. Jika klien memanggil IStiDevice::Subscribe, klien dapat membaca peristiwa dari antrean dengan memanggil IStiDevice::GetLastNotificationData. Setelah klien menutup perangkat, peristiwa yang kemudian diterima menyebabkan pemantau peristiwa kembali mencoba memulai aplikasi terdaftar.

Arti dari dua mode transfer sepenuhnya tergantung pada minidriver mode pengguna perangkat. Antarmuka IStillImage dan IStiDevice memungkinkan semua metode dipanggil dalam salah satu mode.

Minidriver dapat menentukan mode tempatnya dibuka dengan memanggil IStiDevice::GetLastNotificationData. Minidriver harus melarang klien melakukan transfer data jika klien hanya meminta mode status saat mendapatkan akses ke perangkat.

Penting untuk dicatat bahwa perangkat biasanya dibuka dalam mode status untuk waktu yang relatif lama (misalnya, pemantauan peristiwa mengawasi peristiwa perangkat), saat dibuka dalam mode data untuk waktu yang relatif singkat (misalnya, untuk membaca dalam gambar). Meskipun arsitektur gambar diam hanya memungkinkan satu klien pada satu waktu untuk membuka perangkat dalam mode data, mungkin perlu bagi driver untuk melakukan pembatasan lebih lanjut pada akses perangkat.

Misalnya, jika Anda menulis driver untuk perangkat yang terhubung ke port serial, Anda mungkin ingin memanggil CreateFile dari dalam metode IStiUSD::LockDevice driver jika perangkat dibuka dalam mode status. Ini akan melarang aplikasi lain menggunakan port (yang mungkin mendukung perangkat lain) saat informasi status diperoleh dari perangkat.

Untuk perangkat yang terhubung ke port khusus, seperti perangkat SCSI atau bus USB, biasanya diizinkan untuk memanggil CreateFile dari dalam IStiUSD::Inisialisasi jika mode status ditentukan, karena perangkat dan port akan selalu didedikasikan untuk satu klien.

Saat perangkat dibuka dalam mode data, CreateFile biasanya dipanggil dari dalam IStiUSD:Initialize, terlepas dari jenis bus.