IMFSensorDevice
COM公式ドキュメント
センサーグループに属することができるセンサーデバイスを表します。センサーグループは IMFSensorGroup インターフェイスによって表されます。このコンテキストにおける「デバイス」という用語は、物理デバイス、カスタムメディアソース、またはフレームプロバイダーを指す場合があります。
メソッド 9
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
デバイスの一意の識別子を取得します。この値は現在使用されていません。
| pDeviceId | ULONGLONG* | out | デバイスの一意の識別子。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pDeviceId パラメーターが null です。 | |
| センサーグループが初期化されていません。 |
オブジェクトが表すセンサーデバイスの種類を指定する値を取得します。
| pType | MFSensorDeviceType* | out | オブジェクトが表すセンサーデバイスの種類を指定する値。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pType パラメーターが null です。 | |
| センサーグループが初期化されていません。 |
センサーデバイスに設定されたフラグを取得します。このメソッドは将来使用するために予約されています。
| pFlags | ULONGLONG* | out | センサーデバイスに設定されたフラグ。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pDeviceId パラメーターが null です。 | |
| センサーグループが初期化されていません。 |
解説(Remarks)
このメソッドは将来使用するために予約されており、呼び出すべきではありません。
センサーデバイスのシンボリックリンク名を取得します。
| SymbolicLink | LPWSTR | out | シンボリックリンク名が書き込まれる cchSymbolicLink 文字分のバッファー。バッファーは null 終端文字を格納できるだけの十分な大きさが必要です。 |
| cchSymbolicLink | INT | in | SymbolicLink バッファーで使用可能な文字数。 |
| pcchWritten | INT* | out | SymbolicLink に書き込まれた文字数を格納する出力パラメーター。これには null 終端文字が含まれます。SymbolicLink が null で cchSymbolicLink が 0 の場合、pcchWritten にはシンボリックリンク名を格納するために必要な文字数(null 終端文字を含む)が格納されます。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| SymbolicLink パラメーターで指定されたバッファーが、null 終端文字を含むシンボリックリンク名を格納するには十分な大きさではありません。 | |
| センサーデバイスが初期化されていません。 |
解説(Remarks)
デバイスの種類(MFSensorDeviceType 列挙型のメンバーによって定義され、GetDeviceType を呼び出すことで取得できます)に応じて、返されるシンボリック名は有効なデバイスのシンボリック名またはプロバイダー URL のいずれかになります。呼び出し元はこの名前を解析しようとせず、不透明なデータとして扱う必要があります。
センサーグループの IMFAttributes を取得します。
| ppAttributes | IMFAttributes** | out | センサーデバイスの内部属性ストアを表す IMFAttributes インターフェイス。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ppAttributes パラメーターが null です。 | |
| センサーデバイスが初期化されていません。 |
解説(Remarks)
返されるオブジェクトは内部属性ストアのコピーであるため、返された属性に加えた変更は IMFSensorDevice には影響しません。
センサーデバイスのストリーム属性ストアの数を取得します。すべての有効なストリームは、少なくともストリーム ID とストリームカテゴリを含む属性ストアを持つ必要があるため、この数値はデバイスで利用可能な総ストリーム数を表します。
| eType | MFSensorStreamType | in | 属性ストアの数を入力ストリームと出力ストリームのどちらに対して要求するかを指定する MFSensorStreamType 列挙型のメンバー。 |
| pdwCount | DWORD* | out | このセンサーデバイスで利用可能なストリーム属性の数。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pdwCount パラメーターが null です。 | |
| センサーグループが初期化されていません。 |
解説(Remarks)
呼び出し元は、ストリーム属性の数を使用してセンサーデバイスが提供するストリームの数を判断できます。
指定されたインデックスのストリーム属性ストアを取得します。
| eType | MFSensorStreamType | in | 属性ストアを入力ストリームと出力ストリームのどちらに対して要求するかを指定する MFSensorStreamType 列挙型のメンバー。 |
| dwIndex | DWORD | in | 取得するストリームの 0 から始まるインデックス。インデックスは 0 から GetStreamAttributesCount が返す値から 1 を引いた値までの範囲でなければなりません。 |
| ppAttributes | IMFAttributes** | out | ストリームの内部属性ストアのコピーを表す IMFAttributes インターフェイス。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pDeviceId パラメーターが null です。 | |
| センサーグループが初期化されていません。 |
解説(Remarks)
返されるオブジェクトは内部属性ストアのコピーであるため、返された属性に加えた変更は IMFSensorDevice には影響しません。
センサーデバイスの共有モードをコントローラーまたは共有のいずれかに指定する値を設定します。
| eMode | MFSensorDeviceMode | in | デバイスが共有モードとコントローラーモードのどちらであるかを指定する MFSensorDeviceMode 列挙型のメンバー。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| センサーグループが初期化されていません。 |
センサーデバイスの現在の共有モードを指定する値を取得します。この値はコントローラーまたは共有のいずれかです。
| peMode | MFSensorDeviceMode* | out | 呼び出しが成功した場合、センサーデバイスの現在のモードを指定する MFSensorDeviceMode のメンバーを受け取ります。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pDeviceId パラメーターが null です。 | |
| センサーグループが初期化されていません。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFSensorDevice "{FB9F48F2-2A18-4E28-9730-786F30F04DC4}" #usecom global IMFSensorDevice IID_IMFSensorDevice "{}" #comfunc global IMFSensorDevice_GetDeviceId 3 var #comfunc global IMFSensorDevice_GetDeviceType 4 var #comfunc global IMFSensorDevice_GetFlags 5 var #comfunc global IMFSensorDevice_GetSymbolicLink 6 var,int,var #comfunc global IMFSensorDevice_GetDeviceAttributes 7 sptr #comfunc global IMFSensorDevice_GetStreamAttributesCount 8 int,var #comfunc global IMFSensorDevice_GetStreamAttributes 9 int,int,sptr #comfunc global IMFSensorDevice_SetSensorDeviceMode 10 int #comfunc global IMFSensorDevice_GetSensorDeviceMode 11 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFSensorDevice "{FB9F48F2-2A18-4E28-9730-786F30F04DC4}" #usecom global IMFSensorDevice IID_IMFSensorDevice "{}" #comfunc global IMFSensorDevice_GetDeviceId 3 sptr #comfunc global IMFSensorDevice_GetDeviceType 4 sptr #comfunc global IMFSensorDevice_GetFlags 5 sptr #comfunc global IMFSensorDevice_GetSymbolicLink 6 sptr,int,sptr #comfunc global IMFSensorDevice_GetDeviceAttributes 7 sptr #comfunc global IMFSensorDevice_GetStreamAttributesCount 8 int,sptr #comfunc global IMFSensorDevice_GetStreamAttributes 9 int,int,sptr #comfunc global IMFSensorDevice_SetSensorDeviceMode 10 int #comfunc global IMFSensorDevice_GetSensorDeviceMode 11 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。