次の方法で共有


IWiaUIExtension COM インターフェイス

IWiaUIExtension インターフェイスを実装する場合、IWiaUIExtension メソッドの一部、またはすべてを実装、または一切実装しないことが可能です。

特定のメソッドが E_NOTIMPL を返し、システム提供の代替メソッドを使用できる場合、代わりに使用されます。

IWiaUIExtension インターフェイスには、次のメソッドが用意されています。

Method 説明
IWiaUIExtension::DeviceDialog 既定のシステム ユーザー インターフェイスを置き換えるカスタム ユーザー インターフェイスを提供します。
IWiaUIExtension::GetDeviceBitmapLogo デバイスのカスタム ビットマップ ロゴを取得します。
IWiaUIExtension::GetDeviceIcon カスタム デバイス アイコンを取得します。

IWiaUIExtension::DeviceDialog は、デバイス ダイアログ ボックスの実装に必要なすべてのデータを含む DEVICEDIALOGDATA 構造 (wiadevd.h で宣言) へのポインターを受け入れます。

デバイス ダイアログは、次の 4 つの制約に従い、モーダル Win32 ダイアログ ボックスとして実装する必要があります。

  1. pDeviceDialogData-->ppWiaItems で返される項目の配列は、CoTaskMemAlloc を使用して割り当てる必要があり、CoTaskMemFree を使用してアプリケーションによって解放されます (両方の関数については、Microsoft Windows SDK のドキュメントを参照してください)。

  2. pDeviceDialogData -->pIWiaItemRoot に格納されているルート項目を破棄または解放しないでください。 また、ルート項目が無効にならないようにする必要があります。 たとえば、WIA_CMD_SYNCHRONIZE デバイス コマンドを呼び出してはなりません。

  3. ユーザーがデータ転送を要求したことを示す S_OK、ユーザーが転送をキャンセルしたことを示す S_FAL Standard Edition を返します。

  4. メモリまたはリソース リークがアプリケーションでインプロセスで実行されるため、このコンポーネントに導入されないように注意してください。

IWiaUIExtension::GetDeviceIcon を使用すると、アプリケーションでドライバー指定のアイコンを使用できます。 リソース リークを回避するには、LR_SHARED フラグを使用し、このアイコンを LoadImage と共に読み込む必要があります (Windows SDK のドキュメントを参照)。

IWiaUIExtension::GetDeviceBitmapLogo を使用すると、アプリケーションは必要に応じてデバイスとベンダーのロゴを表示できます。 現時点では、このメソッドを使用するシステム コンポーネントはありません。 ビットマップは、CreateDIBSection を使用して DIB で割り当てられたビットマップであるか、LR_CREATEDIB Standard Edition CTION フラグで LoadImage を使用して読み込まれる必要があります (詳細については、Windows SDK のドキュメントを参照してください)。 これにより、アプリケーションは任意のパレット情報を抽出し、現在または変化する表示色の深さに適応することができます。

WIA スキャナー ドライバーでカスタム スキャン ダイアログ ボックスを実装するには、IWiaUIExtension::DeviceDialog メソッド (上記の 4 つの制約を含む) を使用して Win32 モーダル ダイアログ ボックスを作成し、DEVICEDIALOGDATA 構造を DialogBoxParam 関数の dwInitParam パラメーターに LPARAM として渡します。

デバイス ダイアログ ボックス自体がデータ転送を管理するものではないので、ご注意ください。 このダイアログ ボックスは、ドライバーからアプリケーションへの IWiaItem インターフェイス ポインターの配列へのポインターを返すだけです (プロパティが設定されています)。 転送メカニズムと形式のネゴシエートは、アプリケーションに拠ることになります。