다음을 통해 공유


WIA 호환성 계층 데이터 전송 개요

전송 호환성 계층이 없으면 Windows Vista WIA 드라이버는 레거시 및 Windows Vista 애플리케이션에서 데이터 전송을 수행할 수 있도록 TYMED 및 스트림 기반 데이터 전송 스타일을 모두 구현해야 했습니다. 마찬가지로 Windows Vista WIA 애플리케이션은 레거시 및 Windows Vista 드라이버에서 데이터 전송을 수행할 수 있도록 두 가지 유형의 전송(콜백 구현이 서로 다른)을 구현해야 했습니다. WIA 호환성 계층을 사용하면 드라이버 유형이 WIA 애플리케이션에 투명하며 Windows Vista WIA 드라이버는 레거시 전송 코드를 처리할 필요가 없습니다.

호환성 계층이 필요한 두 가지 전송 사례가 있으며, 각각은 두 개의 하위 범주로 더 세분화될 수 있습니다.

  1. Windows Vista 드라이버에서 데이터를 전송하는 레거시 애플리케이션:

    1. 파일 전송: 애플리케이션에서 IWiaDataTransfer::idtGetBandedData를 호출합니다.
    2. 콜백 전송: 애플리케이션은 IWiaDataTransfer::idtGetData를 호출합니다.
  2. 레거시 드라이버에서 데이터를 전송하는 Windows Vista 애플리케이션:

    1. 파일 전송: 호환성 계층은 레거시 드라이버로 파일 전송을 시작합니다.
    2. 콜백 전송: 호환성 계층은 레거시 드라이버와 콜백 전송을 시작합니다.

호환성 계층을 사용할지 여부를 결정하는 첫 번째 단계는 WIA 드라이버가 Windows Vista 드라이버인지 또는 레거시 드라이버인지 확인하는 것입니다. WIA 서비스는 드라이버가 IStiUSD::GetCapabilities에서 반환하는 버전 번호를 확인하여 이를 결정합니다. 레거시 드라이버는 버전 번호에 대한 STI_VERSION 반환하는 반면 Windows Vista 드라이버는 STI_VERSION_3 반환해야 합니다. 이 버전 번호는 windows Vista 속성 WIA_DIP_STI_DRIVER_VERSION WIA COM 프록시(및 WIA 애플리케이션)에 노출됩니다.

호환성 계층을 사용할지 여부를 결정하는 다음 단계는 애플리케이션이 Windows Vista WIA 애플리케이션인지 또는 레거시 WIA 애플리케이션인지 확인하는 것입니다. 애플리케이션이 IWiaDataTransfer::idtGetBandedData 또는 IWiaDataTransfer::idtGetData를 호출하는 경우 레거시 WIA 애플리케이션입니다. 애플리케이션이 IWiaTransfer::D ownload를 호출하면 Windows Vista WIA 애플리케이션입니다.

새 스트림 기반 데이터 전송 모델을 사용하면 WIA 서비스가 더 이상 TYMED_CALLBACK 및 TYMED_FILE(또는 TYMED_MULTIPAGE_CALLBACK 및 TYMED_MULTIPAGE_FILE)를 구분하지 않습니다. 대신 TYMED_FILE TYMED_MULTIPAGE_FILE 있습니다. 드라이버가 다중 페이지 TIFF(또는 PDF) 검사를 지원할 수 있도록 하려면 TYMED_MULTIPAGE_FILE 필요합니다. TYMED 상수에 대한 자세한 내용은 TYMED 이해를 참조하세요.

WIA는 Windows Vista 드라이버에서 WiaImgFmt_MEMORYBMP 메모리 비트맵 형식을 지원하지 않습니다.

Windows Vista 드라이버는 전송 중에 드라이버가 전체 이미지를 캐시하지 않고 대역에서 데이터를 전송하기 위해 업데이트 메시지를 보낼 수 있습니다. 이러한 형식의 전송은 전송되는 이미지의 크기(예: 스크롤 피드 스캐너를 사용한 스캔)를 즉시 확인할 수 없는 스캔 중에 데이터를 전송하는 데 유용합니다. 대역에서 이미지 데이터를 전송하려면 드라이버는 IWiaTransferCallback::GetNextStream에 전달된 스트림에서 IStream::Seek를 호출해야 합니다.

TYMED 및 스트림 기반 전송에 대한 자세한 내용은 데이터 전송을 참조 하세요.

IWiaDataTransfer, IWiaTransferIStream 인터페이스는 Microsoft Windows SDK 설명서에서 설명합니다.