다음을 통해 공유


WIA 미니드라이버 초기화

IWiaMiniDrv 인터페이스를 구현하는 첫 번째 단계는 미니 드라이버를 초기화하고 드라이버 항목의 계층적 트리를 만드는 것입니다. 이를 위해 WIA 서비스는 클라이언트 애플리케이션이 디바이스를 사용하려고 할 때마다 IWiaMiniDrv::d rvInitializeWia 메서드를 호출합니다. 둘 이상의 애플리케이션이 동시에 디바이스를 사용하는 경우 WIA 서비스는 각 애플리케이션에 대해 이 메서드를 호출합니다. 이 메서드에서 미니 드라이버는 일반적으로 다음을 수행합니다.

  1. WIA 서비스에서 전달된 매개 변수를 초기화합니다.

  2. pStiDevice가 가리키는 STI 디바이스 인터페이스를 저장합니다. 이렇게 하면 IStiDevice::LockDeviceIStiDevice::UnLockDevice 메서드를 사용하여 WIA 디바이스를 잠그거나 잠금을 해제할 수 있습니다.

  3. 다른 메서드에서 사용할 수 있도록 bstrDeviceIDbstrRootFullItemName 을 멤버 변수에 캐시합니다.

  4. 디바이스에 대한 핸들을 엽니다. (이 단계는 USB, SCSI 및 1394와 같은 공유되지 않는 포트에 권장됩니다.)

  5. WIA 드라이버 항목 트리 만들기에 설명된 대로 항목 트리를 빌드합니다.

IWiaMiniDrv::d rvInitializeWia 메서드를 사용하여 드라이버에서 사용하는 동적 배열 및 구조를 만들고 초기화할 수도 있습니다. 예를 들어 드라이버에서 지원하는 명령 및 이벤트 배열은 나중에 IWiaMiniDrv::d rvGetCapabilities 메서드에서 사용할 수 있습니다.

참고IWiaMiniDrv::d rvGetCapabilities 메서드는 IWiaMiniDrv::d rvInitializeWia 가 호출되기 전에 호출될 수 있습니다. 이 문제는 디바이스를 사용하기 위해 애플리케이션이 존재하기 전에 WIA 서비스가 이벤트 정보를 쿼리해야 하는 경우에 발생할 수 있습니다. IWiaMiniDrv::d rvInitializeWia 메서드는 애플리케이션이 디바이스를 사용하려는 의도를 알리는 경우에만 호출됩니다.

애플리케이션 연결 추적

앞서 설명한 것처럼 애플리케이션이 WIA 디바이스와 통신하려는 경우 WIA 서비스는 적절한 드라이버의 IWiaMiniDrv::d rvInitializeWia 메서드를 호출합니다. 애플리케이션이 디바이스를 완료하고 모든 WIA 참조를 해제하면 WIA 서비스는 적절한 드라이버의 IWiaMiniDrv::d rvUnInitializeWia 메서드를 호출합니다. WIA는 여러 동시 애플리케이션 연결을 지원합니다. 즉, 둘 이상의 애플리케이션이 동일한 디바이스와 연결된 WIA 인터페이스를 요청할 수 있습니다. 하지만 드라이버가 동시 요청을 처리해야 한다는 의미는 아닙니다. WIA 서비스는 한 번에 하나의 요청만 드라이버에 전송되도록 합니다. 그러나 WIA 서비스는 IWiaMiniDrv::d rvUnInitializeWia 메서드를 호출하기 전에 IWiaMiniDrv::d rvInitializeWia 메서드를 여러 번 호출할 수 있습니다.

이 정보가 유용한 이유는 무엇인가요? WIA 드라이버 항목 트리, 이미지 필터링 라이브러리 등과 같이 애플리케이션에서 사용할 때 드라이버에 필요할 수 있는 리소스가 있는 경우가 많습니다. 이러한 리소스는 많은 양의 메모리를 차지할 수 있으므로 필요하지 않은 경우 언로드하는 것이 가장 좋습니다.

참고IWiaMiniDrv::d rvInitializeWiaIWiaMiniDrv::d rvUnInitializeWia 메서드는 드라이버에 애플리케이션 연결만 알리는 데 사용됩니다. WIA 서비스는 먼저 IWiaMiniDrv::d rvInitializeWia를 호출하지 않고 다른 드라이버 메서드를 호출할 수 있습니다. 즉, WIA 서비스가 완료되면 반드시 IWiaMiniDrv::d rvUnInitializeWia 를 호출하지 않습니다. 라는 메서드는 IWiaMiniDrv::d rvGetCapabilities 및 IWiaMiniDrv::drvGetWiaFormatInfo와 같은 WIA 항목이 필요하지 않은 정보 메서드입니다.

이 섹션에서는 다음 항목을 다룹니다.

Minidriver 함수에 대한 호출 순서

WIA 미니드라이버 로드 및 언로드

WIA 애플리케이션 연결 및 연결 끊기

WIA 미니드라이버 상태 보고