Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Interfejsy statycznych obrazów definiują dwa tryby transferu − tryb stanu i tryb danych. Gdy klient interfejsu IStillImage COM wywołuje metodę IStillImage::CreateDevice w celu uzyskania dostępu do urządzenia obrazu, określa jeden (lub oba) tryby transferu. Wielu klientów może otworzyć urządzenie w trybie stanu, ale tylko jeden klient naraz może otworzyć urządzenie w trybie danych.
Monitor statycznych obrazów otwiera urządzenia w trybie monitorowania stanu. Zazwyczaj jednak nie zawsze interfejsy API pozyskiwania obrazów otwierają urządzenia w trybie danych.
Gdy klient otworzy urządzenie w trybie danych, monitor zdarzeń będzie przechowywać kolejne zdarzenia urządzenia obrazu w kolejce wewnętrznej. Jeśli klient wywołuje metodę IStiDevice::Subscribe, może odczytywać zdarzenia z kolejki, wywołując metodę IStiDevice::GetLastNotificationData. Gdy klient zamknie urządzenie, następnie odebrane zdarzenia spowodują, że monitor zdarzeń ponownie spróbuje uruchomić zarejestrowaną aplikację.
Znaczenie dwóch trybów transferu całkowicie zależy od minidrivera działającego w trybie użytkownika urządzenia. Interfejsy IStillImage i IStiDevice umożliwiają wywoływanie wszystkich metod w obu trybach.
Minidriver może określić tryb, w którym został otwarty, wywołując element IStiDevice::GetLastNotificationData. Minidrivery powinny uniemożliwiać klientowi wykonywanie transferów danych, jeśli klient zażądał tylko trybu stanu podczas uzyskiwania dostępu do urządzenia.
Należy pamiętać, że urządzenia są zwykle otwierane w trybie statusu przez stosunkowo długi czas (na przykład, gdy monitor zdarzeń obserwuje zdarzenia urządzenia), natomiast w trybie danych są otwierane przez stosunkowo krótki czas (na przykład, do odczytu obrazu). Mimo iż architektura obrazów statycznych zezwala tylko jednemu klientowi na raz na otwieranie urządzenia w trybie danych, może okazać się konieczne wprowadzenie dalszych ograniczeń dostępu do tego urządzenia przez sterownik.
Jeśli na przykład piszesz sterownik dla urządzenia podłączonego do portu szeregowego, możesz wywołać metodę CreateFile wewnątrz metody IStiUSD::LockDevice, jeśli urządzenie zostało otwarte w trybie statusu. Uniemożliwi to innym aplikacjom korzystanie z portu (który może obsługiwać inne urządzenia), podczas gdy informacje o stanie są uzyskiwane z urządzenia.
W przypadku urządzeń podłączonych do dedykowanych portów, takich jak urządzenia magistrali SCSI lub USB, zwykle można wywołać metodę CreateFile z poziomu elementu IStiUSD::Initialize , jeśli określono tryb stanu, ponieważ urządzenie i port zawsze będą dedykowane jednemu klientowi.
Po otwarciu urządzenia w trybie danych CreateFile jest zwykle wywoływane w ramach IStiUSD:Initialize, niezależnie od typu magistrali.