Udostępnij przez


Zmiany sterownika transferu danych IStream

Aby zminimalizować zmiany sterowników opracowanych przed systemem Windows Vista, sterowniki nie muszą implementować żadnych nowych interfejsów do obsługi transferu danych IStream . Zamiast tego nowy interfejs został udostępniony za pośrednictwem interfejsu IWiaMiniDrvCallBack. Sterowniki mogą wywołać IWiaMiniDrvCallBack::QueryInterface dla nowej funkcji zwrotnej IWiaTransfer, co zapewni im dostęp do strumieni danych oraz powiadomień dotyczących stanu. Interfejs IWiaTransfer został opisany w dokumentacji zestawu Microsoft Windows SDK.

Kod transferu danych wewnątrz sterownika jest teraz prostszy, ponieważ wszystkie transfery są obsługiwane w taki sam sposób, bez logiki gałęzi transferu plików ani pamięci.

Sterowniki, które nie obsługują modelu transferu IStream , zazwyczaj wykonują następujące czynności:

  1. Sprawdź flagi, aby określić, czy żądanie dotyczy przekazania, czy pobrania.

  2. Uzyskaj interfejs IWiaMiniDrvCallBack .

  3. Odbierz strumień docelowy z funkcji wywołania zwrotnego.

  4. Wykonaj pętlę transferu danych:

    1. Odbieranie danych z urządzenia.
    2. Zapisz dane do strumienia.

Jednak w przypadku sterowników implementujących nowy model transferu IStream usługa WIA nie będzie wywoływać IWiaMiniDrv::drvWriteItemProperties, ponieważ aktywacja folderów jest obsługiwana.

W przypadku pozyskiwania folderu pojedyncze żądanie przeniesienia znajduje się w elemencie nadrzędnym, ale rzeczywiste właściwości elementu znajdują się na każdym z elementów podrzędnych, które są przenoszone. Metoda IWiaMiniDrv::d rvWriteItemProperties nie jest wywoływana dla każdego elementu podrzędnego, więc tej metody nie można użyć do programowania ustawień urządzenia. W przypadku sterowników obsługujących transfery danych IStream usługa WIA zamiast tego wywołuje IWiaMiniDrv::drvAcquireItemData.

Nuta Ta zmiana dotyczy tylko sterowników obsługujących nowe transfery danych. Nie ma to wpływu na starsze sterowniki, które nie obsługują transferów danych IStream; usługa WIA będzie nadal wywoływać metodę IWiaMiniDrv::drvWriteItemProperties.

W przypadku pozyskiwania folderów, w których sterownik wykonuje wiele wywołań do IWiaTransferCallback::GetNextStream (opisanych w dokumentacji zestawu SDK systemu Microsoft Windows), sterownik może mieć tylko jeden aktywny strumień naraz.

Sterownik podczas operacji pobierania musi wywoływać tylko metody IStream::Write, IStream::Seek i IStream::SetSize (opisane w dokumentacji Windows SDK). To ograniczenie ułatwia pisanie filtru. Sterownik nie powinien oczekiwać, że strumień docelowy będzie implementować inne metody.

Gdy właściwość WIA_DPS_PAGE_SIZE jest ustawiona na WIA_PAGE_AUTO (czyli automatyczne wykrywanie rozmiaru strony jest włączone), sterownik powinien podać dokładne informacje o wymiarze obrazu dopiero po zakończeniu transferu danych obrazu. W przypadku transferów opartych na strumieniu sterownik powinien zaktualizować wymiary obrazu w nagłówku obrazu na końcu transferu. Na początku nowej sesji wartość właściwości WIA_DPS_PAGE_SIZE powinna być zawsze ustawiona na wartość inną niż WIA_PAGE_AUTO.