IPhotoAcquireSource
COM公式ドキュメント
IPhotoAcquireSource インターフェースは、デバイスからアイテムを取得するために使用します。
メソッド 8
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetFriendlyName メソッドは、表示用に整形されたデバイスの名前を取得します。
| pbstrFriendlyName | LPWSTR* | out | フレンドリ名を格納する文字列へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 非 null が期待される箇所に null 値が渡されました。 |
GetDeviceIcons メソッドは、デバイスを表すために使用されるアイコンを取得します。
| nSize | DWORD | in | 取得するアイコンのサイズを表す整数値。 |
| phLargeIcon | HICON* | inoutoptional | デバイスに使用される大きいアイコンを指定します。 |
| phSmallIcon | HICON* | inoutoptional | デバイスに使用される小さいアイコンを指定します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 非 null が期待される箇所に null ポインターが渡されました。 |
InitializeItemList メソッドは、デバイス上の転送可能なアイテムを列挙し、省略可能な進行状況コールバックが指定されている場合は各アイテムをそのコールバックに渡します。
| fForceEnumeration | BOOL | in | TRUE に設定した場合、アイテムリストが既に初期化されていても列挙を繰り返すことを示すフラグです。FALSE に設定した場合、アイテムリストが既に初期化された後に InitializeItemList を繰り返し呼び出しても、アイテムを再度列挙しないことを示します。 |
| pPhotoAcquireProgressCB | IPhotoAcquireProgressCB* | inoptional | 省略可能。IPhotoAcquireProgressCB オブジェクトへのポインター。 |
| pnItemCount | DWORD* | inoutoptional | 見つかったアイテムの数を返します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 非 NULL ポインターが期待されていました。 |
解説(Remarks)
先に InitializeItemList を呼び出さずに IPhotoAcquire::Acquire を呼び出した場合、アイテムリストの初期化は暗黙的に行われます。
アイテムリストが初めて初期化されるとき(IPhotoAcquire::Acquire を通じて暗黙的に、または InitializeItemList を呼び出して明示的に行われます)、各アイテムが列挙されます。列挙中に IPhotoAcquireProgressCB オブジェクトが InitializeItemList に渡されている場合、その StartEnumeration、FoundItem、EndEnumeration の実装を使用して、転送対象のアイテムリストにさらにフィルタリングや制御を適用できます。
GetItemCount メソッドは、InitializeItemList メソッドによって見つかったアイテムの数を取得します。
| pnItemCount | DWORD* | out | アイテム数を格納する整数値へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 非 NULL ポインターが期待される箇所に NULL が渡されました。 |
解説(Remarks)
このメソッドを呼び出す前に、InitializeItemList を呼び出してアイテムリストを初期化してください。
GetItemAt メソッドは、アイテムリスト内の指定されたインデックスにある IPhotoAcquireItem オブジェクトを取得します。
| nIndex | DWORD | in | インデックスを表す整数値。 |
| ppPhotoAcquireItem | IPhotoAcquireItem** | out | IPhotoAcquireItem オブジェクトのアドレスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドを呼び出す前に、InitializeItemList を呼び出してアイテムリストを初期化してください。
GetPhotoAcquireSettings メソッドは、取得設定を操作するための IPhotoAcquireSettings オブジェクトを取得します。
| ppPhotoAcquireSettings | IPhotoAcquireSettings** | out | 写真取得設定オブジェクトのアドレスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 非 null が期待される箇所に null 値が渡されました。 |
GetDeviceId メソッドは、デバイスの識別子 (ID) を取得します。
| pbstrDeviceId | LPWSTR* | out | デバイス ID を格納する文字列へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
| riid | GUID* | in | バインドして取得するインターフェイスのIID。 |
| ppv | void** | out | 取得したインターフェイスポインタを受け取る出力先。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IPhotoAcquireSource "{00F2C703-8613-4282-A53B-6EC59C5883AC}" #usecom global IPhotoAcquireSource IID_IPhotoAcquireSource "{}" #comfunc global IPhotoAcquireSource_GetFriendlyName 3 var #comfunc global IPhotoAcquireSource_GetDeviceIcons 4 int,sptr,sptr #comfunc global IPhotoAcquireSource_InitializeItemList 5 int,sptr,var #comfunc global IPhotoAcquireSource_GetItemCount 6 var #comfunc global IPhotoAcquireSource_GetItemAt 7 int,sptr #comfunc global IPhotoAcquireSource_GetPhotoAcquireSettings 8 sptr #comfunc global IPhotoAcquireSource_GetDeviceId 9 var #comfunc global IPhotoAcquireSource_BindToObject 10 var,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IPhotoAcquireSource "{00F2C703-8613-4282-A53B-6EC59C5883AC}" #usecom global IPhotoAcquireSource IID_IPhotoAcquireSource "{}" #comfunc global IPhotoAcquireSource_GetFriendlyName 3 sptr #comfunc global IPhotoAcquireSource_GetDeviceIcons 4 int,sptr,sptr #comfunc global IPhotoAcquireSource_InitializeItemList 5 int,sptr,sptr #comfunc global IPhotoAcquireSource_GetItemCount 6 sptr #comfunc global IPhotoAcquireSource_GetItemAt 7 int,sptr #comfunc global IPhotoAcquireSource_GetPhotoAcquireSettings 8 sptr #comfunc global IPhotoAcquireSource_GetDeviceId 9 sptr #comfunc global IPhotoAcquireSource_BindToObject 10 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。