Udostępnij przez


Omówienie transferów danych warstwy zgodności WIA

Bez warstwy zgodności transferu, sterownik WIA dla systemu Windows Vista musiałby zaimplementować zarówno style transferu danych TYMED, jak i oparte na strumieniach, aby móc wykonywać transfery danych z aplikacji starszego typu oraz aplikacji systemu Windows Vista. Podobnie aplikacja Windows Vista WIA musiałaby zaimplementować oba style transferów (z różnymi implementacjami wywołania zwrotnego), aby móc wykonywać transfery danych ze starszych sterowników i Windows Vista. Dzięki warstwie zgodności WIA, typ sterownika jest przejrzysty dla aplikacji WIA, a sterownik WIA systemu Windows Vista nie musi zajmować się żadnym starszym kodem transferu.

Istnieją dwa przypadki transferu, w których wymagana jest warstwa zgodności, z których każda może zostać podzielona na dwie podkategorie:

  1. Starsza aplikacja przesyła dane ze sterownika Windows Vista:

    1. Transfer plików: aplikacja wywołuje metodę IWiaDataTransfer::idtGetBandedData.
    2. Transfer z wywołaniem zwrotnym: aplikacja wywołuje metodę IWiaDataTransfer::idtGetData.
  2. Aplikacja systemu Windows Vista przesyłającą dane ze starszego sterownika:

    1. Transfer plików: warstwa zgodności inicjuje transfer plików ze starszym sterownikiem.
    2. Transfer wywołania zwrotnego: warstwa zgodności inicjuje transfer wywołania zwrotnego ze starszym sterownikiem.

Pierwszym krokiem w ustaleniu, czy należy użyć warstwy zgodności, jest ustalenie, czy sterownik WIA jest sterownikiem systemu Windows Vista, czy starszym sterownikiem. Usługa WIA określi to, sprawdzając numer wersji zwracany przez sterownik z IStiUSD::GetCapabilities. Starszy sterownik zwraca STI_VERSION numer wersji, natomiast sterownik systemu Windows Vista musi zwrócić STI_VERSION_3. Ten numer wersji zostanie udostępniony serwerowi proxy WIA COM (i aplikacji WIA) w właściwości WIA_DIP_STI_DRIVER_VERSION systemu Windows Vista.

Następnym krokiem w ustaleniu, czy używać warstwy zgodności, jest ustalenie, czy aplikacja jest aplikacją WIA systemu Windows Vista, czy starszą aplikacją WIA. Jest to proste: jeśli aplikacja wywołuje IWiaDataTransfer::idtGetBandedData lub IWiaDataTransfer::idtGetData, jest to starsza aplikacja WIA; jeśli aplikacja wywołuje IWiaTransfer::Download, jest to aplikacja WIA systemu Windows Vista.

W przypadku nowego modelu transferu danych opartego na strumieniu usługa WIA nie będzie już rozróżniać TYMED_CALLBACK i TYMED_FILE (ani TYMED_MULTIPAGE_CALLBACK i TYMED_MULTIPAGE_FILE). Zamiast tego będą istnieć tylko TYMED_FILE i TYMED_MULTIPAGE_FILE. TYMED_MULTIPAGE_FILE jest konieczne, aby umożliwić sterownikom obsługę skanowania wielostronicowego formatu TIFF (lub PDF). Aby uzyskać więcej informacji na temat stałych TYMED, zobacz Understanding TYMED (Opis stałych TYMED).

WIA nie będzie obsługiwać formatu mapy bitowej pamięci WiaImgFmt_MEMORYBMP w sterownikach systemu Windows Vista.

Sterowniki systemu Windows Vista mogą wysyłać komunikaty aktualizacji w celu przesyłania danych w pasmach zamiast buforować cały obraz podczas transferu. Ta forma transferu jest przydatna do przesyłania danych podczas skanowania, gdy nie jest możliwe natychmiastowe określenie rozmiaru przesyłanego obrazu, na przykład skanowania za pomocą skanera ze strumieniem przewijania. Aby przesyłać dane obrazu w pasmach, sterownik musi wywołać metodę IStream::Seek na strumieniu przekazanym mu w IWiaTransferCallback::GetNextStream.

Aby uzyskać dodatkowe informacje na temat transferów opartych na TYMED i strumieniach, zobacz Transfery danych.

Interfejsy IWiaDataTransfer, IWiaTransfer i IStream zostały omówione w dokumentacji zestawu Microsoft Windows SDK.