IWiaUIExtension COM 인터페이스

IWiaUIExtension 인터페이스를 구현하는 경우 모든 IWiaUIExtension 메서드를 구현할 수 없습니다. 특정 메서드가 E_NOTIMPL 반환하고 시스템 제공 대안을 사용할 수 있는 경우 대신 사용됩니다.

IWiaUIExtension 인터페이스는 다음 메서드를 제공합니다.

메서드 Description

IWiaUIExtension::D eviceDialog

기본 시스템 사용자 인터페이스를 대체하는 사용자 지정 사용자 인터페이스를 제공합니다.

IWiaUIExtension::GetDeviceBitmapLogo

디바이스에 대한 사용자 지정 비트맵 로고를 가져옵니다.

IWiaUIExtension::GetDeviceIcon

사용자 지정 디바이스 아이콘을 가져옵니다.

IWiaUIExtension::D eviceDialog 는 디바이스 대화 상자를 구현하는 데 필요한 모든 데이터를 포함하는 DEVICEDIALOGDATA 구조체( wiadevd.h로 선언됨)에 대한 포인터를 허용합니다.

디바이스 대화 상자는 다음 네 가지 제약 조건에 따라 모달 Win32 대화 상자로 구현되어야 합니다.

  1. pDeviceDialogData-->ppWiaItems에서 반환된 항목의 배열은 CoTaskMemAlloc를 사용하여 할당되어야 하며, CoTaskMemFree를 사용하여 애플리케이션에서 해제됩니다(두 함수에 대한 Microsoft Windows SDK 설명서 참조).

  2. pDeviceDialogData -->pIWiaItemRoot에 저장된 루트 항목을 삭제하거나 해제해서는 안 됩니다. 또한 루트 항목이 유효하지 않도록 해서는 안 됩니다. 예를 들어 WIA_CMD_SYNCHRONIZE 디바이스 명령을 호출해서는 안 됩니다.

  3. S_OK 반환하여 사용자가 데이터 전송을 요청했음을 나타내고 사용자가 전송을 취소했음을 나타내는 S_FALSE.

  4. 메모리 또는 리소스 누수는 애플리케이션에서 In Process로 실행되므로 이 구성 요소에 도입되지 않도록 주의해야 합니다.

IWiaUIExtension::GetDeviceIcon 을 사용하면 애플리케이션에서 드라이버 지정 아이콘을 사용할 수 있습니다. 리소스 누출을 방지하려면 LR_SHARED 플래그를 사용하여 LoadImage와 함께 이 아이콘을 로드해야 합니다(Windows SDK 설명서 참조).

IWiaUIExtension::GetDeviceBitmapLogo 를 사용하면 애플리케이션에서 디바이스 및 공급업체 로고를 적절하게 표시할 수 있습니다. 현재 이 메서드를 사용하는 시스템 구성 요소는 없습니다. 비트맵은 CreateDIBSection을 사용하여 DIB 할당 비트맵이거나 LR_CREATEDIBSECTION 플래그와 함께 LoadImage를 사용하여 로드되어야 합니다(자세한 내용은 Windows SDK 설명서 참조). 이렇게 하면 애플리케이션에서 색상표 정보를 추출하고 현재 또는 변경되는 디스플레이 색 깊이에 맞게 조정할 수 있습니다.

WIA 스캐너 드라이버에서 사용자 지정 검색 대화 상자를 구현하려면 IWiaUIExtension::D eviceDialog 메서드(위에 나열된 네 가지 제약 조건 포함)를 사용하여 Win32 모달 대화 상자를 만들고 DEVICEDIALOGDATA 구조를 DialogBoxParam 함수의 dwInitParam 매개 변수에 LPARAM으로 전달합니다.

디바이스 대화 상자 자체가 데이터 전송을 관리하지 않는다는 점을 기억해야 합니다. 이 대화 상자는 드라이버에서 애플리케이션으로 의 IWiaItem 인터페이스 포인터 배열(속성 집합 포함)에 대한 포인터만 반환합니다. 그런 다음 전송 메커니즘 및 형식을 협상하는 것은 애플리케이션에 달려 있습니다.