デバイスドライバ

TWAIN対応ドライバの開発

TWAIN概要

TWAINはアプリケーションからスキャナー・デバイスを統一的に扱うためにメーカー団体TWAIN Working Group(http://www.twain.org/)が策定した規格です。

TWAINドライバは、ドライバ本体のData Source(DS)と、アプリケーションとDSとのデータのやりとりを管理するData Source Manager(DSM)から構成されます。

TWAIN規格に対応アプリケーションはメーカーを問わず、同じ手順でイメージ データを取り込むことができます。
TWAINドライバの実態は拡張子を.dsに変更したダイナミック リンク ライブラリ(DLL)であり、メモリ管理に指定があるものの、一般的なアプリケーション開発と変わりません。

従って、接続したスキャナー ハードウェアをパソコンに認識させる物理的なポート・ドライバは別途必要になります。
一般的に接続インターフェイスとしてはUSBを使用することが多いと思われますが、それ以外の特殊なI/Fを使用する場合は物理デバイス ドライバも作成する必要があります。

DSMはインストールされている.dsファイル(TWAINドライバ)を元にスキャナー デバイス一覧を作成します。
従って、同一モデルの複数台接続までは考慮されていません。通常は十分ですが、もし必要なら内部的に切り替える仕組みを用意しなければなりません。
少なくとも.dsファイルについては、同一の製品ファミリーで同じドライバ ファイルを使うといったことはできず、製品ごとに用意する必要があります。

TWAINドライバは設定/取り込み画面を実装することができ、アプリケーションはユーザーによるパラメーター調整からデータの取り込み処理までをドライバに任せることができます。
また、高度なアプリケーションでは、ドライバが用意した操作UIを使用せずに、アプリ自前のUIにTWAIN対応機器からの取り込み操作を融合することもできます。

TWAINでは1から7までのステートが定義されており、TWAINドライバに関連するのはステート3以降です。それまではアプリケーションがDSMをロード、DSドライバの一覧から選択するまでが定義されています。
ステートごとに実装すべき内容が異なりますので注意が必要です。OUK TWAINドライバではプロトタイプ クラスOUtwdProtCのGetState()関数で取得可能です。

TWAIN2

現在の最新規格Ver2.3に対応したDSMはTWAIN Working GroupのWebサイト(http://www.twain.org/)で公開されています。
対応アプリケーション、TWAINドライバ(DS)、DSMの3つソフトウェアがVer. 2系列に対応している場合のみ、Ver.2で定義された動作となります。

Ver1系ではメモリ管理等で16bit Windows世代の仕様の影響を受けてパフォーマンス上のネックが存在していましたが、Ver2系では旧世代の制限が一掃された格好です。

メモリ管理に関して、TWAIN Ver.1系列ではGlobalAlloc()、GlobalFree()等のAPIを使用しますが、TWAIN Ver.2系列ではDSMが指定するメモリ管理関数を使用します(DG_CONTROL/DAT_ENTRYPOINT/MSG_SETコマンド、 TW_ENTRYPOINT構造体で関数ポインタを通知)。
TWAINアプリケーションとのデータ交換ではTW_MEMORY構造体を使用し、そのサイズやオーナー情報(アプリケーションとDSのどちらが解放するか)を明示します。
通常、TWAINドライバ(DS)がレスポンスを返す際には、確保したメモリにアプリケーションのオーナーフラッグ(TWMF_APPOWNS)をセットします。
すると、レスポンスに含まれるメモリは、アプリケーションの責任で解放することになります。

他にもDSMへ通知方法(DSM_Entry()の呼び出し方法)、Capabilityコマンド レスポンスに使用される型などに違いがあり、実装する上で注意する必要があります。

TWAINドライバとユーザ・アプリケーションの関係

OUK TWAINドライバ・提供範囲

共通の制御コマンド(DG_CONTROL)、イメージ(DG_IMAGE)関係のコマンド処理機能が用意されています。オーディオ関連の機能(DG_AUDIO)は実装されていません。

対応OSは、基本はWindowsで、サンプルコードとして提供しているGUIやファイル アクセス部分がシステムに依存します。
TWAIN規格自体はWindowsだけでなくMac OS X、UNIX系OSで利用可能で、DSMソフトウェアも公開されています。
移植についてはご相談下さい。

TWAIN DSMからのコマンド処理、Capability処理を中心に実装されており、スキャナー デバイスの制御やデータ転送についてはサンプル実装に止まっています。

OS対応表

  • Windows 7に対応しています。
  • Windows 8に対応しています。
  • Windows 10に対応しています。
  • Windows Embeddedに対応しています。
  • Macに対応しています。
  • Linux/UNIXには対応していません。
  • X Windowには対応していません。
  • 組込には対応していません。

御社のご希望に基づきカスタマイズなども可能です。
まずはお気軽にお問い合わせください。

ページトップへ