イメージ取得 API の Device-Specific コンポーネントの作成
TWAIN などのイメージ取得 API には、通常、TWAIN データ ソースなどのデバイス固有のコンポーネントが必要です。 これらのデバイス固有のコンポーネントでは、IStillImage COM インターフェイス と IStiDevice COM インターフェイス を使用して、ユーザー モードの静止画像デバイス ドライバーおよびイベント モニターと通信する必要があります。
イメージ取得 API は、IStillImage::GetDeviceValue および IStillImage::SetDeviceValue を呼び出して、静止イメージ デバイス のレジストリ エントリを読み書きできます。 たとえば、各静止イメージ デバイスの TWAIN データ ソースの名前はレジストリに格納されます。
TWAIN API では、データ ソースを呼び出すときにアプリケーションでアクティブなデバイスを指定できないため、通常、データ ソースは IStillImage::GetDeviceList呼び出してすべての静止画像デバイスの一覧を取得し、リストを検索して、通常は製造元とモデル名に基づいて適切なデバイスを検索します。 製造元とモデルのテキスト名は、セットアップ情報 (INF) ファイルから取得されます。 TWAIN にはデータ ソース名に 32 文字の制限があり、WIA は互換性のある名前を構築するために文字列に "WIA-" を追加するため、INF ファイル内のテキストは 28 文字以下にする必要があります。 それ以外の場合、最初の 32 文字だけでなく、文字列全体で比較を実行する TWAIN 互換アプリケーションは、アプリケーションの起動の原因となったデバイスを自動的に見つけることができない可能性があります。
デバイスにアクセスするには、イメージ取得ソフトウェア IStillImage::CreateDevice を呼び出して、IStiDevice インターフェイスを定義する COM オブジェクトのインスタンスを作成します。 IStiDevice インターフェイスには、デバイス I/O 操作を実行するためのメソッドがいくつか用意されています。 オブジェクト インスタンスを作成する場合、イメージ取得ソフトウェアは、転送モード "データ" を指定する必要があります。
イメージ取得ソフトウェアは、IStiDevice::Subscribe を呼び出して、Still Image Device Eventsの通知を配信するようにイベント モニターに要求できます。 通知を受信すると、IStiDevice::GetLastNotificationData を呼び出して、イベントの種類を決定できます。 IStiDevice::UnSubscribe は、通知が不要になったときに呼び出す必要があります。
イメージ取得ソフトウェアが IStiDevice インターフェイスの使用を終了したら、IStiDevice::Releaseを呼び出す必要があります。