WIAはカメラやスキャナデバイス制御のための統一されたインターフェースを提供するために、Windows上の機能のひとつです。 WIAはTWAINやPTP等のプロトコルを抽象化し、これらのプロトコルに依存しないアプリケーションを作ることができるようにします。
WIAの概要WIAはカメラやスキャナデバイス制御のための統一されたインターフェースを提供するために、Windows上の機能のひとつです。 WIAはTWAINやPTP等のプロトコルを抽象化し、これらのプロトコルに依存しないアプリケーションを作ることができるようにします。 WIAはAPIとDDI(デバイスドライバーインターフェース)の両方の役割を担います。 WIA APIを使うアプリケーションはWindows XP以降が必要です。 WIAはVisual C++、Visual Basic、VBScript等さまざまな環境で利用することができます。
WIAを使って制御できるデバイス | WIAは以下のような(WIA対応)のデバイスを制御することができます |
デジタルスチルカメラ | カメラ内の画像オブジェクトにアクセスすることができます |
USBカメラ | USBカメラ内の画像オブジェクトにアクセスしたり、ライブビューを表示することができます。※この機能はWindows XPまでサポートされ、Windows Vista以降はサポートされなくなりました |
スキャナ | スキャン動作条件を設定して、スキャンを実行し、画像を取得することができます |
WIAはクライアントアプリケーションの堅牢なオペレーションを確保するために、COM out-of-processサーバーとして実装されます。 多くのアウトオブプロセスサーバーのアプリケーションと異なり、WIAは自分自身の転送メカニズムIWiaDataTransferを提供することで、 データ転送時のパフォーマンス低下を回避します。WIAは3つのメインコンポーネント、デバイスマネージャ、ミニドライバーサービスライブラリ、デバイスミニドライバーを持ちます。
デバイスマネージャ | イメージングデバイスを列挙、デバイスプロパティを取得、デバイスのイベントをセットアップ、デバイスオブジェクトを生成します |
ミニドライバーサービスライブラリ | デバイスに依存するすべてのサービスを実装します |
デバイスミニドライバー | WIAプロパティとコマンドを特定のデバイスにマップします |
HKEY_LOCAL_MACHINE/ SYSTEM/ CurrntControlSet/ Control/< Class/ {6BDD1FC6-810F-11D0-08002BE2092F}
このレジストリはデバイスごとの情報を保持しているようです。{6BDD1FC6-810F-11D0-08002BE2092F}の下にはデバイスを表現するアイテムとすべてのWIAデバイスに共通のプロパティが置かれます。次に{6BDD1FC6-810F-11D0-08002BE2092F}とその直下のアイテムの例を示します。
{6BDD1FC6-810F-11D0-08002BE2092F}/(既定) /Class /Icon /Installer32 /TroubleShooter-0 /0000/ /0001/ /0002/ /0003/ .. /0009/ /0010/ ..
それぞれのデバイスは4桁の10進数で表現されています。それぞれのデバイスを表現するアイテムにはデバイスのプロパティを表現するアイテムが置かれます。次にiPhoneの例を示します(この例でiPhoneはデバイスを表現するアイテム0000によって表現されています)。
0000/(既定) /Capabilities /CreateFileName /DeviceID /DeviceSubType /DeviceType /DriverDate /DriverDateData /DriverDesc /DriverVersion /FriendlyName /HardwareConfig /ICMProfiles /InfPath /InfSection /IsPnP /Label /MatchingDeviceId /ProviderName /SubClass /USDClass /Vendor
(既定) | REG_SZ | イメージングデバイス |
Class | REG_SZ | Image |
Icon | REG_SZ | 0 |
Installer32 | REG_SZ | sti_ci.dll,ClassInstall |
TroubleShooter-0 | REG_SZ | hcp://help/tshoot/tsInputDev.htm |
以下はiPhoneの例です。
(既定) | REG_SZ | - |
Capabilities | REG_DWORD | 0x35 |
CreateFilName | REG_SZ | - |
DeviceID | REG_SZ | {6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0000 |
DeviceSubType | REG_DWORD | 0x0 |
DeviceType | REG_DWORD | 0x2 |
DriverDate | REG_SZ | 7-1-2001 |
DriverDateData | REG_BINARY | 00 80 62 c5 c0 01 c1 01 |
DriverDesc | REG_SZ | Apple iPhone |
DriverVersion | REG_SZ | 5.1.2600.0 |
FriendlyName | REG_SZ | iPhone |
HardwareConfig | REG_BINARY | 04 |
ICMProfiles | REG_SZ | sRGB Color Space Profile.icm |
InfPath | REG_SZ | ptpusb.inf |
InfSection | REG_SZ | PTP |
IsPnP | REG_BINARY | 0x1 |
Label | REG_SZ | iPhone |
MatchingDeviceId | REG_SZ | usb\class_06&subclass_01&prot_01 |
ProviderName | REG_SZ | Microsoft |
SubClass | REG_SZ | StillImage |
USDClass | REG_SZ | {B5EE90B0-D5C5-11D2-82D5-00C04F8EC183} |
Vendor | REG_SZ | 汎用 |
Events/(既定) | REG_SZ | - |
Events/Connected/(既定) | REG_SZ | デジタルカメラ接続中 |
Events/Connected/DefaultHandler | REG_SZ | {5F4BAAD0-4D59-4FCD-B213-783CE7A92F22} |
Events/Connected/GUID | REG_SZ | {A28BBADF-64B6-11d2-A231-00C04FA31809} |
Events/Connected/LaunchApplictions | REG_SZ | * |
Events/Connected/{5A233F84-4555-4EE1-8A8E-A18A5BBAD190}/(既定) | REG_SZ | - |
Events/Connected/{5A233F84-4555-4EE1-8A8E-A18A5BBAD190}/Cmdline | REG_SZ | "\"C:\_プログラム開発\MyProgram_new\画像処理\ImageAnalyzer\ImageAnalyzer\debug\" __ |
Events/Connected/{5A233F84-4555-4EE1-8A8E-A18A5BBAD190}/Desc | REG_SZ | DESCRIPTION |
Events/Connected/{5A233F84-4555-4EE1-8A8E-A18A5BBAD190}/Icon | REG_SZ | - |
Events/Connected/{5A233F84-4555-4EE1-8A8E-A18A5BBAD190}/Name | REG_SZ | NAME2 |
Events/Connected/{5F4BAAD0-4D59-4FCD-B213-783CE7A92F22}/(既定) | REG_SZ | - |
Events/Connected/{5F4BAAD0-4D59-4FCD-B213-783CE7A92F22}/Desc | REG_SZ | Internal |
Events/Connected/{5F4BAAD0-4D59-4FCD-B213-783CE7A92F22}/Icon | REG_SZ | Internal |
Events/Connected/{5F4BAAD0-4D59-4FCD-B213-783CE7A92F22}/Name | REG_SZ | Internal |
Events/Disconnected/(既定) | REG_SZ | デジタル カメラ切断 |
Events/Disconnected/GUID | REG_SZ | {143E4E83-6497-11d2-A231-00C04FA31809} |
Events/Disconnected/LaunchApplications | REG_SZ | * |
HKEY_LOCAL_MACHINE/ SYSTEM/ CurrntControlSet/ Control/Class/ StillImage
このレジストリはStillImageクラス(STIデバイス)の情報が置かれるようです。以下で示すレジストリの項目や値は環境によって異なるかもしれません。
HKEY_LOCAL_MACHINE/../StillImage以下は、次の階層構造でレジストリが配置されます。
StillImage/Debug/ StillImage/DeviceNameStore/ StillImage/Events/ StillImage/Logging/ StillImage/Trace/ StillImage/WiaVideo/
StillImage/直下には、次のレジストリが置かれます。
(既定) | REG_SZ |
StillImage/Debug以下には、次のレジストリが置かれます。これらはStill Image関連のDLLのデバッグ用のレジストリと思われますが詳細は不明です。
(既定) | REG_SZ | - |
DebugFileSizeLimit | REG_DWORD | 0x80000 |
ptpusd.dll/(既定) | REG_SZ | - |
ptpusd.dll/DebugFlags | REG_DWORD | 0x60000000 |
sti_ci.dll/(既定) | REG_SZ | - |
sti_ci.dll/DebugFlags | REG_DWORD | 0x00000001 |
wiadss.dll/(既定) | REG_SZ | - |
wiadss.dll/DebugFlags | REG_DWORD | 0x00000001 |
wiaservc.dll/(既定) | REG_SZ | - |
wiaservc.dll/DebugFlags | REG_DWORD | 0x00000001 |
wiafax.dll/(既定) | REG_SZ | - |
wiafax.dll/DebugFlags | REG_DWORD | 0x00000001 |
wiavideo.dll/(既定) | REG_SZ | - |
wiavideo.dll/DebugFlags | REG_DWORD | 0x00000001 |
wiavusd.dll/(既定) | REG_SZ | - |
wiavusd.dll/DebugFlags | REG_DWORD | 0x00000001 |
StillImage/DeviceNameStore以下には、次のレジストリが置かれます。
(既定) | REG_SZ |
{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}/(既定) | REG_SZ |
StillImage/Events以下には、次のレジストリが置かれます。
(既定) | REG_SZ | - |
Connected/(既定) | REG_SZ | - |
Connected/GUID | REG_SZ | {A28BBADE-64B6-11D2-A231-00C04FA31809} |
Connected/LaunchApplications | REG_SZ | * |
Connected/{5A233F84-4555-4EE1-8A8E-A18A5BBAD190}/{既定} | REG_SZ | - |
Connected/{5A233F84-4555-4EE1-8A8E-A18A5BBAD190}/Cmdline | REG_SZ | "\"C:\_プログラム開発\MyProgram_new\画像処理\ImageAnalyzer\ImageAnalyzer\debug\" __ |
Connected/{5A233F84-4555-4EE1-8A8E-A18A5BBAD190}/Desc | REG_SZ | DESCRIPTION |
Connected/{5A233F84-4555-4EE1-8A8E-A18A5BBAD190}/Icon | REG_SZ | - |
Connected/{5A233F84-4555-4EE1-8A8E-A18A5BBAD190}/Name | REG_SZ | NAME2 |
Connected/{7CF3BA90-7F78-481B-8011-7EA81760A44A}/{既定} | REG_SZ | - |
Connected/{7CF3BA90-7F78-481B-8011-7EA81760A44A}/Cmdline | REG_SZ | "\"C:\tmp\WIARegisterEventCallbackProgram.exe\" reg |
Connected/{7CF3BA90-7F78-481B-8011-7EA81760A44A}/Desc | REG_SZ | DESCRIPTION |
Connected/{7CF3BA90-7F78-481B-8011-7EA81760A44A}/Icon | REG_SZ | - |
Connected/{7CF3BA90-7F78-481B-8011-7EA81760A44A}/Name | REG_SZ | NAME |
Connected/{D13E3F25-1688-45A0-9743-759EB35CDF9A}/{既定} | REG_SZ | - |
Connected/{D13E3F25-1688-45A0-9743-759EB35CDF9A}/Desc | REG_SZ | 画像をカメラまたはスキャナからダウンロードします |
Connected/{D13E3F25-1688-45A0-9743-759EB35CDF9A}/Icon | REG_SZ | wiaacmgr.exe,-2 |
Connected/(既定) | REG_SZ | - |
Connected/GUID | REG_SZ | {143E4E83-6497-11D2-A231-00C04FA31809} |
Connected/LaunchApplications | REG_SZ | * |
Disconnected/{D13E3F25-1688-45A0-9743-759EB35CDF9A}/Name | REG_SZ | Microsoft スキャナとカメラのウィザード |
StillImage/ScanButton以下には、次のレジストリが置かれます。
(既定) | REG_SZ | - |
GUID | REG_SZ | {A6C5A715-8C6E-11D2-977A-0000F87A926F} |
LaunchApplications | REG_SZ | * |
{D13ED25-1688-45A0-9743-759EB35CDF9A}/(既定) | REG_SZ | - |
{D13ED25-1688-45A0-9743-759EB35CDF9A}/Desc | REG_SZ | 画像をカメラまたはスキャナからダウンロードします |
{D13ED25-1688-45A0-9743-759EB35CDF9A}/Icon | REG_SZ | wiaacmgr.exe,-2 |
Name | REG_SZ | Microsoft スキャナとカメラのウィザード |
StillImage/Logging以下には、次のレジストリが置かれます。
(既定) | REG_SZ | - |
STICLI/(既定) | REG_SZ | 静止画像クライアント アプリケーション |
STICLI/Level | REG_SZ | 4 |
STIMON/(既定) | REG_SZ | Still Image Monitoring Process |
STICLI/Level | REG_SZ | 4 |
StillImage/Trace以下には、次のレジストリが置かれます。
(既定) | REG_SZ | - |
DefaultEnableObjectTracking | REG_DWORD | 0x00000001 |
DefaultMaxTraceArraySize | REG_DWORD | 0x0000000a |
DefaultTraceFlags | REG_DWORD | 0x00000401 |
DefaultTraceLevel | REG_DWORD | 0x00000000 |
DefaultTraceMask | REG_DWORD | 0x00000000 |
HeapOptions | REG_DWORD | 0x00000018 |
MaxFileSize | REG_DWORD | 0x00100000 |
wpdconns.dll/(既定) | REG_SZ | - |
wpdconns.dll/EnableObjectTracking | REG_DWORD | 0x00000001 |
wpdconns.dll/HeapOptions | REG_DWORD | 0x00000018 |
wpdconns.dll/MaxTraceArraySize | REG_DWORD | 0x0000000a |
wpdconns.dll/TraceFlags | REG_DWORD | 0x00000401 |
wpdconns.dll/TraceLevel | REG_DWORD | 0x00000000 |
wpdconns.dll/TraceMask | REG_DWORD | 0x00000000 |
WpdMtp.dll/(既定) | REG_SZ | - |
WpdMtp.dll/EnableObjectTracking | REG_DWORD | 0x00000001 |
WpdMtp.dll/HeapOptions | REG_DWORD | 0x00000018 |
WpdMtp.dll/MaxTraceArraySize | REG_DWORD | 0x0000000a |
WpdMtp.dll/TraceFlags | REG_DWORD | 0x00000401 |
WpdMtp.dll/TraceLevel | REG_DWORD | 0x00000000 |
WpdMtp.dll/TraceMask | REG_DWORD | 0x00000000 |
WpdMtpUS.dll/(既定) | REG_SZ | - |
WpdMtpUS.dll/EnableObjectTracking | REG_DWORD | 0x00000001 |
WpdMtp.dll/HeapOptions | REG_DWORD | 0x00000018 |
WpdMtpUS.dll/MaxTraceArraySize | REG_DWORD | 0x0000000a |
WpdMtpUS.dll/TraceFlags | REG_DWORD | 0x00000401 |
WpdMtpUS.dll/TraceLevel | REG_DWORD | 0x00000000 |
WpdMtpUS.dll/TraceMask | REG_DWORD | 0x00000000 |
wpdsp.dll/(既定) | REG_SZ | - |
wpdsp.dll/EnableObjectTracking | REG_DWORD | 0x00000001 |
wpdsp.dll/HeapOptions | REG_DWORD | 0x00000018 |
wpdsp.dll/MaxTraceArraySize | REG_DWORD | 0x0000000a |
wpdsp.dll/TraceFlags | REG_DWORD | 0x00000401 |
wpdsp.dll/TraceLevel | REG_DWORD | 0x00000000 |
wpdsp.dll/TraceMask | REG_DWORD | 0x00000000 |
StillImage/WiaVideo以下には、次のレジストリが置かれます。
(既定) | REG_SZ | - |
UseVMR | REG_DWORD | 0x00000000 |
WIAデバイスの発生するイベントをアプリケーションが捕捉するには「アプリケーションを特定のイベントに登録する」必要があります。 アプリケーションに通知されるイベントは全てのWIAデバイスを対象とすることもできるし、特定のWIAデバイスだけを対象とすることもできます。また、アプリケーションが起動していないとき、アプリケーションがあらかじめ登録しておいたイベントが発生した場合、WIAのランタイムシステムは登録されたアプリケーションを起動することもできます。イベントの補足の方法(イベントハンドラの実装方法)はWIA Automation Layerを使ったアプリケーションでことなります。