IStream 데이터 전송 드라이버 변경 내용
Windows Vista 이전에 개발된 드라이버의 변경을 최소화하기 위해 드라이버는 IStream 데이터 전송을 지원하기 위해 새 인터페이스를 구현할 필요가 없습니다. 대신 IWiaMiniDrvCallBack 인터페이스를 통해 새 인터페이스가 노출되었습니다. 드라이버는 새 IWiaTransfer 콜백 함수에 대해 IWiaMiniDrvCallBack::QueryInterface를 호출하여 데이터 스트림 및 상태 알림에 대한 액세스 권한을 부여할 수 있습니다. IWiaTransfer 인터페이스는 Microsoft Windows SDK 설명서에 설명되어 있습니다.
이제 드라이버 내의 데이터 전송 코드는 파일 또는 메모리 전송 분기 논리 없이 모든 전송이 동일한 방식으로 처리되기 때문에 더 간단합니다.
IStream 전송 모델을 지원하지 않는 드라이버는 일반적으로 다음 단계를 수행합니다.
플래그를 확인하여 요청이 업로드 또는 다운로드에 대한 것인지 확인합니다.
IWiaMiniDrvCallBack 인터페이스를 가져옵니다.
콜백 함수에서 대상 스트림을 수신합니다.
데이터 전송 루프를 수행합니다.
- 디바이스에서 데이터를 받습니다.
- 스트림에 데이터를 씁니다.
그러나 새 IStream 전송 모델을 구현하는 드라이버의 경우 폴더 획득이 지원되므로 WIA 서비스는 IWiaMiniDrv::d rvWriteItemProperties를 호출하지 않습니다.
폴더 획득에서 단일 전송 요청은 부모 항목에 있지만 실제 항목 속성은 전송되는 각 자식 항목에 있습니다. IWiaMiniDrv::d rvWriteItemProperties 메서드는 각 자식 항목에 대해 호출되지 않으므로 이 메서드를 사용하여 디바이스 설정을 프로그래밍할 수 없습니다. IStream 데이터 전송을 지원하는 드라이버의 경우 WIA 서비스는 IWiaMiniDrv::d rvAcquireItemData를 대신 호출합니다.
참고 이 변경 내용은 새 데이터 전송을 지원하는 드라이버에만 영향을 줍니다. IStream 데이터 전송을 지원하지 않는 레거시 드라이버는 영향을 받지 않습니다. WIA 서비스는 계속해서 IWiaMiniDrv::d rvWriteItemProperties 메서드를 호출합니다.
드라이버가 IWiaTransferCallback::GetNextStream(Microsoft Windows SDK 설명서에 설명되어 있음)을 여러 번 호출하는 폴더 획득에서 드라이버는 한 번에 하나의 활성 스트림만 가질 수 있습니다.
드라이버는 다운로드 작업 중에 스트림의 IStream::Write, IStream::Seek 및 IStream::SetSize 메서드(Windows SDK 설명서에 설명됨)만 호출해야 합니다. 이 제한을 사용하면 필터를 더 쉽게 작성할 수 있습니다. 드라이버는 대상 스트림이 다른 메서드를 구현할 것으로 예상해서는 안 됩니다.
WIA_DPS_PAGE_SIZE 속성이 WIA_PAGE_AUTO 설정되면(즉, 자동 페이지 크기 검색이 사용됨) 드라이버는 이미지 데이터 전송을 완료한 후에만 이미지에 대한 정확한 차원 정보를 제공해야 합니다. 스트림 기반 전송의 경우 드라이버는 전송이 끝날 때 이미지 헤더의 이미지 차원을 업데이트해야 합니다. 새 세션이 시작될 때 WIA_DPS_PAGE_SIZE 속성의 값은 항상 WIA_PAGE_AUTO 이외의 값으로 설정되어야 합니다.