IEnumWIA_DEV_CAPS
COM公式ドキュメント
IEnumWIA_DEV_CAPS インターフェイスは、現在利用可能な Windows Image Acquisition (WIA) ハードウェアデバイスの機能を列挙します。デバイスの機能には、デバイスがサポートするコマンドとイベントが含まれます。
解説(Remarks)
IEnumWIA_DEV_CAPS インターフェイスは、標準的な OLE 列挙インターフェイスを WIA 向けに実装したものです。詳細については、IEnumXXXX を参照してください。
アプリケーションは、IWiaItem::EnumDeviceCapabilities メソッドを呼び出すことで IEnumWIA_DEV_CAPS インターフェイスへのポインターを取得します。
IEnumWIA_DEV_CAPS インターフェイスは、すべての Component Object Model (COM) インターフェイスと同様に、IUnknown インターフェイスのメソッドを継承します。
| IUnknown のメソッド | 説明 |
|---|---|
| IUnknown::QueryInterface | サポートされているインターフェイスへのポインターを返します。 |
| IUnknown::AddRef | 参照カウントをインクリメントします。 |
| IUnknown::Release | 参照カウントをデクリメントします。 |
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IEnumWIA_DEV_CAPS::Next メソッドは、WIA_DEV_CAP 構造体へのポインターの配列を設定します。
| celt | DWORD | in | rgelt パラメーターで示される配列の要素数を指定します。 |
| rgelt | WIA_DEV_CAP* | inout | WIA_DEV_CAP 構造体の配列へのポインターです。IEnumWIA_DEV_CAPS::Next はこの構造体の配列に値を設定します。 |
| pceltFetched | DWORD* | inout | 出力時、このパラメーターには rgelt パラメーターで示される配列に実際に格納された構造体ポインターの数が格納されます。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
アプリケーションは、このメソッドを使用して利用可能な各 Windows Image Acquisition (WIA) ハードウェアデバイスの機能を照会します。そのために、アプリケーションは自身で割り当てた WIA_DEV_CAP 構造体の配列へのポインターを渡します。また、celt パラメーターで配列の要素数を渡します。IEnumWIA_DEV_CAPS::Next メソッドは、この配列に構造体を設定します。アプリケーションはこれらの構造体を使用して WIA ハードウェアデバイスの機能を列挙します。
WIA デバイスの機能は、そのデバイスがサポートするイベントおよびコマンドとして定義されます。IEnumWIA_DEV_CAPS::Next は、rgelt 配列を通じて、デバイスがサポートするイベントおよびコマンドごとに 1 つの構造体をアプリケーションに渡します。
IEnumWIA_DEV_CAPS::Next は、アプリケーションに提供する WIA_DEV_CAP 構造体を動的に割り当てる点に注意してください。したがって、アプリケーションは rgelt パラメーターを通じて受け取った WIA_DEV_CAP 構造体を削除する必要があります。アプリケーションは、すべての WIA_DEV_CAP 構造体の bstrName、bstrDescription、bstrIcon の各フィールドを解放するために SysFreeString を使用してください。
IEnumWIA_DEV_CAPS::Skip メソッドは、利用可能なデバイス機能の列挙中に、指定した数のハードウェアデバイス機能をスキップします。
| celt | DWORD | in | スキップする項目の数を指定します。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。指定した数のデバイス機能をスキップできなかった場合は S_FALSE を返します。メソッドが失敗した場合は、標準の COM エラーコードを返します。
IEnumWIA_DEV_CAPS::Reset メソッドは、デバイス機能の列挙を最初からやり直すためにアプリケーションが使用します。
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IEnumWIA_DEV_CAPS::Clone メソッドは、IEnumWIA_DEV_CAPS インターフェイスのインスタンスをもう 1 つ作成し、そのポインターを返します。
| ppIEnum | IEnumWIA_DEV_CAPS** | out | IEnumWIA_DEV_CAPS::Clone が作成した IEnumWIA_DEV_CAPS のインスタンスへのポインターのアドレスを格納します。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
アプリケーションは、ppIEnum パラメーターを通じて受け取ったポインターに対して IUnknown::Release メソッドを呼び出す必要があります。
IEnumWIA_DEV_CAPS::GetCount メソッドは、この列挙子が保持している要素の数を返します。
| pcelt | DWORD* | out | 列挙内の要素数を受け取る ULONG へのポインターです。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IEnumWIA_DEV_CAPS "{1FCC4287-ACA6-11D2-A093-00C04F72DC3C}" #usecom global IEnumWIA_DEV_CAPS IID_IEnumWIA_DEV_CAPS "{}" #comfunc global IEnumWIA_DEV_CAPS_Next 3 int,var,var #comfunc global IEnumWIA_DEV_CAPS_Skip 4 int #comfunc global IEnumWIA_DEV_CAPS_Reset 5 #comfunc global IEnumWIA_DEV_CAPS_Clone 6 sptr #comfunc global IEnumWIA_DEV_CAPS_GetCount 7 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IEnumWIA_DEV_CAPS "{1FCC4287-ACA6-11D2-A093-00C04F72DC3C}" #usecom global IEnumWIA_DEV_CAPS IID_IEnumWIA_DEV_CAPS "{}" #comfunc global IEnumWIA_DEV_CAPS_Next 3 int,sptr,sptr #comfunc global IEnumWIA_DEV_CAPS_Skip 4 int #comfunc global IEnumWIA_DEV_CAPS_Reset 5 #comfunc global IEnumWIA_DEV_CAPS_Clone 6 sptr #comfunc global IEnumWIA_DEV_CAPS_GetCount 7 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。