이미지 획득 API에 대한 Device-Specific 구성 요소 만들기

TWAIN과 같은 이미지 획득 API에는 일반적으로 TWAIN 데이터 원본과 같은 디바이스별 구성 요소가 필요합니다. 이러한 디바이스별 구성 요소는 IStillImage COM 인터페이스IStiDevice COM 인터페이스 를 사용하여 사용자 모드 스틸 이미지 디바이스 드라이버 및 이벤트 모니터와 통신해야 합니다.

이미지 획득 API는 IStillImage::GetDeviceValueIStillImage::SetDeviceValue 를 호출하여 스틸 이미지 디바이스에 대한 레지스트리 항목을 읽고 쓸 수 있습니다. 예를 들어, 각 스틸 이미지 디바이스의 TWAIN 데이터 원본의 이름은 레지스트리에 저장됩니다.

TWAIN API는 애플리케이션이 데이터 원본을 호출할 때 활성 디바이스를 지정할 수 없으므로 데이터 원본은 일반적으로 IStillImage::GetDeviceList 를 호출하여 모든 스틸 이미지 디바이스 목록을 가져온 다음, 목록을 검색하여 일반적으로 제조업체 및 모델 이름을 기반으로 올바른 디바이스를 찾습니다. 제조업체 및 모델 텍스트 이름은 INF(설치 정보) 파일에서 가져옵니다. TWAIN에는 데이터 원본 이름에 대한 32자 제한이 있고 WIA가 문자열에 "WIA-"를 추가하여 호환되는 이름을 생성하기 때문에 INF 파일의 텍스트는 28자를 초과하지 않아야 합니다. 그렇지 않으면 처음 32자뿐만 아니라 전체 문자열에서 비교를 수행하는 TWAIN 호환 애플리케이션은 애플리케이션이 시작된 디바이스를 자동으로 찾지 못할 수 있습니다.

디바이스에 액세스하기 위해 이미지 획득 소프트웨어는 IStillImage::CreateDevice를 호출하여 IStiDevice 인터페이스를 정의하는 COM 개체의 instance 만듭니다. IStiDevice 인터페이스는 디바이스 I/O 작업을 수행하기 위한 여러 가지 방법을 제공합니다. 개체 instance 만들 때 이미지 획득 소프트웨어는 "데이터" 전송 모드를 지정해야 합니다.

이미지 획득 소프트웨어는 IStiDevice::Subscribe 를 호출하여 이벤트 모니터에 스틸 이미지 디바이스 이벤트에 대한 알림을 제공하도록 요청할 수 있습니다. 알림이 수신되면 IStiDevice::GetLastNotificationData 를 호출하여 이벤트 유형을 확인할 수 있습니다. 알림이 더 이상 필요하지 않은 경우 IStiDevice::UnSubscribe를 호출해야 합니다.

IStiDevice 인터페이스를 사용하여 이미지 획득 소프트웨어가 완료되면 IStiDevice::Release를 호출해야 합니다.