Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › IMFSensorDevice

IMFSensorDevice

COM
IIDfb9f48f2-2a18-4e28-9730-786f30f04dc4継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

センサーグループに属することができるセンサーデバイスを表します。センサーグループは IMFSensorGroup インターフェイスによって表されます。このコンテキストにおける「デバイス」という用語は、物理デバイス、カスタムメディアソース、またはフレームプロバイダーを指す場合があります。

メソッド 9

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetDeviceId(ULONGLONG* pDeviceId)

デバイスの一意の識別子を取得します。この値は現在使用されていません。

pDeviceIdULONGLONG*outデバイスの一意の識別子。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
pDeviceId パラメーターが null です。
MF_E_NOT_INITIALIZED
センサーグループが初期化されていません。
vtbl 4 HRESULT GetDeviceType(MFSensorDeviceType* pType)

オブジェクトが表すセンサーデバイスの種類を指定する値を取得します。

pTypeMFSensorDeviceType*outオブジェクトが表すセンサーデバイスの種類を指定する値。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
pType パラメーターが null です。
MF_E_NOT_INITIALIZED
センサーグループが初期化されていません。
vtbl 5 HRESULT GetFlags(ULONGLONG* pFlags)

センサーデバイスに設定されたフラグを取得します。このメソッドは将来使用するために予約されています。

pFlagsULONGLONG*outセンサーデバイスに設定されたフラグ。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
pDeviceId パラメーターが null です。
MF_E_NOT_INITIALIZED
センサーグループが初期化されていません。

解説(Remarks)

このメソッドは将来使用するために予約されており、呼び出すべきではありません。

vtbl 6 HRESULT GetSymbolicLink(LPWSTR SymbolicLink, INT cchSymbolicLink, INT* pcchWritten)

センサーデバイスのシンボリックリンク名を取得します。

SymbolicLinkLPWSTRoutシンボリックリンク名が書き込まれる cchSymbolicLink 文字分のバッファー。バッファーは null 終端文字を格納できるだけの十分な大きさが必要です。
cchSymbolicLinkINTinSymbolicLink バッファーで使用可能な文字数。
pcchWrittenINT*outSymbolicLink に書き込まれた文字数を格納する出力パラメーター。これには null 終端文字が含まれます。SymbolicLink が null で cchSymbolicLink が 0 の場合、pcchWritten にはシンボリックリンク名を格納するために必要な文字数(null 終端文字を含む)が格納されます。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
ERROR_INSUFFICIENT_BUFFER
SymbolicLink パラメーターで指定されたバッファーが、null 終端文字を含むシンボリックリンク名を格納するには十分な大きさではありません。
MF_E_NOT_INITIALIZED
センサーデバイスが初期化されていません。

解説(Remarks)

デバイスの種類(MFSensorDeviceType 列挙型のメンバーによって定義され、GetDeviceType を呼び出すことで取得できます)に応じて、返されるシンボリック名は有効なデバイスのシンボリック名またはプロバイダー URL のいずれかになります。呼び出し元はこの名前を解析しようとせず、不透明なデータとして扱う必要があります。

vtbl 7 HRESULT GetDeviceAttributes(IMFAttributes** ppAttributes)

センサーグループの IMFAttributes を取得します。

ppAttributesIMFAttributes**outセンサーデバイスの内部属性ストアを表す IMFAttributes インターフェイス。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
ppAttributes パラメーターが null です。
MF_E_NOT_INITIALIZED
センサーデバイスが初期化されていません。

解説(Remarks)

返されるオブジェクトは内部属性ストアのコピーであるため、返された属性に加えた変更は IMFSensorDevice には影響しません。

vtbl 8 HRESULT GetStreamAttributesCount(MFSensorStreamType eType, DWORD* pdwCount)

センサーデバイスのストリーム属性ストアの数を取得します。すべての有効なストリームは、少なくともストリーム ID とストリームカテゴリを含む属性ストアを持つ必要があるため、この数値はデバイスで利用可能な総ストリーム数を表します。

eTypeMFSensorStreamTypein属性ストアの数を入力ストリームと出力ストリームのどちらに対して要求するかを指定する MFSensorStreamType 列挙型のメンバー。
pdwCountDWORD*outこのセンサーデバイスで利用可能なストリーム属性の数。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
pdwCount パラメーターが null です。
MF_E_NOT_INITIALIZED
センサーグループが初期化されていません。

解説(Remarks)

呼び出し元は、ストリーム属性の数を使用してセンサーデバイスが提供するストリームの数を判断できます。

注意 センサーデバイスがアクティブ化された共有モードに応じて、実行時にすべてのストリームが存在するとは限りません。共有としてマークされたストリーム(すなわち MF_DEVICESTREAM_FRAMESERVER_SHARED 属性が 0 以外の値に設定されているもの)、およびカテゴリ PINNAME_VIDEO_PREVIEW のピンを持つストリームは、共有モードで使用するように設定されたデバイスに存在します。MFSensorDeviceMode_SharedSetSensorDeviceMode に渡すことで、デバイスを共有モードにします。 共有としてマークされたストリームがなく、プレビューストリームも利用できない場合は、カテゴリ PINNAME_VIDEO_CAPTURE の最初のキャプチャストリームが共有されます。
vtbl 9 HRESULT GetStreamAttributes(MFSensorStreamType eType, DWORD dwIndex, IMFAttributes** ppAttributes)

指定されたインデックスのストリーム属性ストアを取得します。

eTypeMFSensorStreamTypein属性ストアを入力ストリームと出力ストリームのどちらに対して要求するかを指定する MFSensorStreamType 列挙型のメンバー。
dwIndexDWORDin取得するストリームの 0 から始まるインデックス。インデックスは 0 から GetStreamAttributesCount が返す値から 1 を引いた値までの範囲でなければなりません。
ppAttributesIMFAttributes**outストリームの内部属性ストアのコピーを表す IMFAttributes インターフェイス。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
pDeviceId パラメーターが null です。
MF_E_NOT_INITIALIZED
センサーグループが初期化されていません。

解説(Remarks)

返されるオブジェクトは内部属性ストアのコピーであるため、返された属性に加えた変更は IMFSensorDevice には影響しません。

vtbl 10 HRESULT SetSensorDeviceMode(MFSensorDeviceMode eMode)

センサーデバイスの共有モードをコントローラーまたは共有のいずれかに指定する値を設定します。

eModeMFSensorDeviceModeinデバイスが共有モードとコントローラーモードのどちらであるかを指定する MFSensorDeviceMode 列挙型のメンバー。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
MF_E_NOT_INITIALIZED
センサーグループが初期化されていません。
vtbl 11 HRESULT GetSensorDeviceMode(MFSensorDeviceMode* peMode)

センサーデバイスの現在の共有モードを指定する値を取得します。この値はコントローラーまたは共有のいずれかです。

peModeMFSensorDeviceMode*out呼び出しが成功した場合、センサーデバイスの現在のモードを指定する MFSensorDeviceMode のメンバーを受け取ります。

戻り値

このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
pDeviceId パラメーターが null です。
MF_E_NOT_INITIALIZED
センサーグループが初期化されていません。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。