WIA 미니드라이버
애플리케이션에서는 WIA(Windows Image Acquisition) 디바이스를 디바이스 자체를 나타내는 루트 항목이 있는 IWiaItem 또는 IWiaItem2 개체의 계층 트리로 봅니다. WIA 디바이스는 둘 이상의 애플리케이션에서 동시에 사용할 수 있습니다. 따라서 각 애플리케이션의 IWiaItem 또는 IWiaItem2 개체 보기는 다른 애플리케이션의 뷰와 독립적이어야 합니다. 이 작업은 두 개의 서로 다른 항목 개체를 사용하여 수행됩니다. 드라이버는 WIA 드라이버 서비스 메서드를 사용하여 드라이버 항목이라고도 하는 IWiaDrvItem 인터페이스 개체의 드라이버 항목 트리를 만듭니다. 이러한 개체는 드라이버가 각 드라이버의 내부 항목을 나타내는 데 사용하는 전역 개체입니다. 애플리케이션이 IWiaItem 또는 IWiaItem2 개체(애플리케이션 항목이라고도 함)를 만들 때 이 개체는 드라이버 항목 트리에서 드라이버의 해당 IWiaDrvItem 인터페이스 에 연결됩니다. 참조 수는 다음 규칙에 따라 IWiaDrvItem 인터페이스 개체에서 유지 관리됩니다.
- 드라이버가 IWiaDrvItem Interface 개체를 드라이버 항목 트리에 추가하면 IWiaDrvItem Interface 개체의 참조 수가 증가합니다. 이 작업은 일반적으로 IWiaMiniDrv::d rvInitializeWia 중에 발생하거나 WIA_CMD_SYNCHRONIZE 명령이 처리될 때 발생합니다.
- 드라이버가 드라이버 항목 트리에서 IWiaDrvItem Interface 개체를 제거하면 IWiaDrvItem Interface 개체의 참조 수가 감소하고 IWiaDrvItem 인터페이스 개체가 표시되어 디바이스에 다시 액세스할 수 없습니다. 일반적으로 디바이스 연결이 끊어지거나 항목이 삭제될 때 발생합니다. 애플리케이션은 드라이버 항목 트리에서 해당 IWiaDrvItem Interface 개체가 제거된 경우에도 IWiaItem 또는 IWiaItem2 개체에서 속성을 읽을 수 있습니다.
- IWiaItem 또는 IWiaItem2 개체를 만들면 해당 IWiaDrvItem Interface 개체에 연결됩니다. IWiaDrvItem 인터페이스 개체의 참조 수가 증가합니다.
- IWiaItem 또는 IWiaItem2 개체가 해제되면 해당 IWiaDrvItem Interface 개체에 대한 링크가 끊어지고 IWiaDrvItem Interface 개체의 참조 수가 감소합니다.
- IWiaDrvItem Interface 개체의 참조 수가 0으로 이동하면 IWiaDrvItem Interface 개체가 삭제됩니다. 루트 항목을 포함한 모든 IWiaDrvItem 인터페이스 개체에 적용됩니다. IWiaDrvItem 인터페이스 개체의 참조 수는 애플리케이션 항목이 참조하지 않고 드라이버 항목 트리에 더 이상 연결되지 않는 경우에만 0으로 이동합니다.
이 참조 계산 체계를 사용하면 많은 IWiaItem 또는 IWiaItem2 개체가 간섭 없이 하나의 IWiaDrvItem 인터페이스 에 연결할 수 있습니다. 각 IWiaItem 또는 IWiaItem2 에는 자체 속성 스토리지가 포함되어 있으므로 항목이 삭제된 후에도 애플리케이션에서 항목 속성을 계속 읽을 수 있지만 디바이스에 액세스해야 하는 작업은 성공하지 못합니다. 항목 속성은 IWiaItem 또는 IWiaItem2 개체에 저장되므로 드라이버는 데이터 전송 전에 IWiaItem 또는 IWiaItem2 개체의 속성을 디바이스로 설정해야 합니다.