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.
Jeśli urządzenie może mieć co najmniej dwa sterowniki, przetestuj te sterowniki dokładnie pod kątem zgodności ze sobą. Jeśli na przykład jeden sterownik pozostawi urządzenie w stanie nieużywalnym (np. sterownik nie wysyła komunikatu o zamknięciu sesji w pewnym protokole), drugi sterownik może nie działać poprawnie, gdy próbuje nawiązać komunikację z urządzeniem. Taka sytuacja występuje często w przypadku urządzeń szeregowych.
WIA i TWAIN w tej samej dll
Jeśli uruchamiasz sterownik WIA i sterownik TWAIN w tym samym czasie z jednej biblioteki DLL, usługa WIA i aplikacja TWAIN załadują instancję tej biblioteki DLL. Instancja WIA biblioteki DLL zbuduje drzewo elementów WIA. To drzewo reprezentuje foldery i obrazy w aparacie. Każda aplikacja używająca WIA (np. Mój komputer lub Kreator skanera i aparatu fotograficznego) będzie mieć kopię drzewa elementów w sterowniku.
Gdy obraz zostanie usunięty lub dodany za pomocą sterownika TWAIN, sterownik WIA nie zostanie powiadomiony o tej zmianie. W rezultacie drzewo elementów WIA będzie zawierać obrazy, które zostały usunięte, lub nie będzie zawierać obrazów, które zostały dodane. W obu przypadkach sterownik musi odświeżyć drzewo elementów. W tym celu sterownik TWAIN musi polecić sterownikowi WIA, aby odświeżył drzewo elementów w przypadku dodania lub usunięcia obrazu.
Jednym ze sposobów jest wywołanie metody CoCreateInstance(CLSID_IWiaDevMgr,...) ze sterownika TWAIN, wyliczenie wszystkich urządzeń i wyszukanie urządzenia. Jednym ze sposobów identyfikacji swojego sterownika za pomocą tego wyliczenia jest utworzenie właściwości niestandardowej w sterowniku WIA. Dzięki temu, jeśli sterownik TWAIN zapyta o tę właściwość i będzie ona istnieć, będziesz wiedział, że to twój sterownik WIA. Po uzyskaniu IWiaItem dla swojego sterownika, wyślij polecenie do sterownika, aby odtworzyć jego drzewo (na przykład, wyślij mu polecenie WIA CMD_SYNCHRONIZE w wywołaniu metody IWiaItem::DeviceCommand). CoCreateInstance, IWiaDevMgr i IWiaItem są opisane w dokumentacji zestawu Microsoft Windows SDK.
Innym sposobem odświeżania drzewa elementów WIA jest utworzenie nazwanego zdarzenia w sterowniku WIA. Wątek w sterowniku WIA może następnie czekać, aż zdarzenie zostanie zasygnalizowane. Za każdym razem, gdy usuniesz lub dodasz obraz za pomocą sterownika TWAIN, sterownik TWAIN sygnalizuje (wywołując SetEvent (opisane w dokumentacji zestawu Windows SDK)) na to nazwane zdarzenie. Wątek w sterowniku WIA zostanie następnie zwolniony, a sterownik WIA zrekonstruuje drzewo.
Tak czy inaczej, należy zrekonstruować drzewo, aby odzwierciedlało wszelkie zmiany wprowadzone w faktycznych zdjęciach w aparacie lub skanerze. Upewnij się, że za każdym razem, gdy zaktualizujesz drzewo, dodając lub usuwając element z drzewa elementów, kolejkujesz zdarzenie (na przykład WIA_EVENT_ITEM_DELETED lub WIA_EVENT_TREE_UPDATED (aby uzyskać opis tych i innych identyfikatorów zdarzeń WIA, zobacz dokumentację zestawu Windows SDK). Jeśli zdarzenie zostanie pomyślnie wysłane po zmianie drzewa, rozwiąże to problem z moim komputerem i innymi aplikacjami WIA, które nie są automatycznie aktualizowane.
Uwaga Chociaż sterowniki TWAIN i WIA mogą istnieć w tej samej bibliotece DLL, sterowniki WIA i TWAIN nie mogą współdzielić tego samego interfejsu użytkownika. Każdy sterownik musi mieć własny interfejs użytkownika.