イメージ取得 API 用のデバイス固有のコンポーネントの作成
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 を呼び出して、静止画像デバイス イベントの通知を配信するイベント モニターを要求できます。 通知を受信すると、IStiDevice::GetLastNotificationData を呼び出してイベントの種類を決定することができます。 通知が不要になったら、IStiDevice::UnSubscribe を呼び出す必要があります。
イメージ取得ソフトウェアが IStiDevice インターフェイスの使用を完了したら、IStiDevice::Release を呼び出す必要があります。