Win32 API 日本語リファレンス
ホームMedia.DirectShow.Tv › IMSVidDevice

IMSVidDevice

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID1c15d47c-911d-11d2-b632-00c04f79498e継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

IMSVidDevice インターフェイスは、Video Control がサポートするすべてのデバイスおよび機能の基底インターフェイスです。

解説(Remarks)

このインターフェイスのインターフェイス識別子 (IID) を宣言するには、__uuidof 演算子を使用します: __uuidof(IMSVidDevice)

メソッド 9

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT get_Name(LPWSTR* Name)

get_Name メソッドは、デバイスのフレンドリ名を取得します。

NameLPWSTR*outフレンドリ名を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。可能な値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_POINTER
NULL ポインター引数です。

解説(Remarks)

呼び出し元は、返された文字列を SysFreeString 関数を使用して解放する必要があります。

vtbl 8 HRESULT get_Status(INT* Status)

get_Status メソッドは、デバイスのステータス情報を取得します。

StatusINT*out現在のステータスを受け取る変数へのポインター。

戻り値

HRESULT 値を返します。可能な値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_NOTIMPL
実装されていません。
E_POINTER
NULL ポインター引数です。

解説(Remarks)

すべてのデバイスタイプがこのメソッドを実装しているわけではありません。

vtbl 9 HRESULT put_Power(VARIANT_BOOL Power)

put_Power メソッドは、デバイスの電源をオンまたはオフにします。

PowerVARIANT_BOOLin

電源をオンにするかオフにするかを指定します。次のいずれかの値を使用します。

説明
VARIANT_TRUE デバイスの電源をオンにします。
VARIANT_FALSE デバイスの電源をオフにします。

戻り値

HRESULT 値を返します。可能な値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_NOTIMPL
実装されていません。

解説(Remarks)

すべてのデバイスタイプがこのメソッドを実装しているわけではありません。

vtbl 10 HRESULT get_Power(VARIANT_BOOL* Power)

get_Power メソッドは、デバイスの電源がオフかオンかを問い合わせます。

PowerVARIANT_BOOL*out

次のいずれかの値を受け取る変数へのポインター。

説明
VARIANT_TRUE デバイスの電源がオンです。
VARIANT_FALSE デバイスの電源がオフです。

戻り値

HRESULT 値を返します。可能な値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_NOTIMPL
実装されていません。
E_POINTER
NULL ポインター引数です。

解説(Remarks)

すべてのデバイスタイプがこのメソッドを実装しているわけではありません。

vtbl 11 HRESULT get_Category(LPWSTR* Guid)

get_Category メソッドは、デバイスのカテゴリを BSTR として取得します。

GuidLPWSTR*outデバイスカテゴリを受け取る BSTR

戻り値

HRESULT 値を返します。可能な値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_POINTER
NULL ポインター引数です。

解説(Remarks)

デバイスカテゴリは GUID によって識別されます。このメソッドは、GUID の文字列表現を返します。

このメソッドは Automation クライアント向けに提供されています。C++ アプリケーションでは、BSTR ではなく GUID を返す IMSVidDevice::get__Category メソッドを使用できます。

呼び出し元は、返された文字列を SysFreeString 関数を使用して解放する必要があります。

vtbl 12 HRESULT get_ClassID(LPWSTR* Clsid)

get_ClassID メソッドは、デバイスのクラス識別子 (CLSID) を BSTR として取得します。

ClsidLPWSTR*outCLSID の文字列表現を受け取る変数へのポインター。

戻り値

HRESULT 値を返します。可能な値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_POINTER
NULL ポインター引数です。

解説(Remarks)

このメソッドは Automation クライアント向けに提供されています。C++ アプリケーションでは、BSTR ではなく GUID を返す IMSVidDevice::get__ClassID メソッドを使用できます。

呼び出し元は、返された文字列を SysFreeString 関数を使用して解放する必要があります。

vtbl 13 HRESULT get__Category(GUID* Guid)

get__Category メソッドは、デバイスのカテゴリを GUID として取得します。

GuidGUID*outデバイスカテゴリを受け取る GUID 型の変数へのポインター。

戻り値

HRESULT 値を返します。可能な値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_POINTER
NULL ポインター引数です。
vtbl 14 HRESULT get__ClassID(GUID* Clsid)

get__ClassID メソッドは、デバイスのクラス識別子 (CLSID) を GUID として取得します。

ClsidGUID*outCLSID を受け取る GUID 型の変数へのポインター。

戻り値

HRESULT 値を返します。可能な値には次のものがあります。

リターンコード 説明
S_OK
成功しました。
E_POINTER
NULL ポインター引数です。
vtbl 15 HRESULT IsEqualDevice(IMSVidDevice* Device, VARIANT_BOOL* IsEqual)

IsEqualDevice メソッドは、このデバイスと別のデバイスが同一の物理ハードウェアを表しているかどうかを問い合わせます。

DeviceIMSVidDevice*inもう一方のデバイスの IMSVidDevice インターフェイスへのポインター。
IsEqualVARIANT_BOOL*out

次のいずれかの値を受け取る変数へのポインター。

説明
VARIANT_TRUE 2 つのデバイスは同一の物理ハードウェアを表しています。
VARIANT_FALSE 2 つのデバイスは同一のハードウェアを表していません。

戻り値

HRESULT 値を返します。可能な値には次のものがあります。

リターンコード 説明
S_OK
成功しました。VARIANT_TRUE を返しました。
S_FALSE
成功しました。VARIANT_FALSE を返しました。
E_POINTER
NULL ポインター引数です。
E_UNEXPECTED
予期しないエラーが発生しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMSVidDevice "{1C15D47C-911D-11D2-B632-00C04F79498E}"
#usecom global IMSVidDevice IID_IMSVidDevice "{6E40476F-9C49-4C3E-8BB9-8587958EFF74}"
#comfunc global IMSVidDevice_get_Name       7 var
#comfunc global IMSVidDevice_get_Status     8 var
#comfunc global IMSVidDevice_put_Power      9 int
#comfunc global IMSVidDevice_get_Power      10 var
#comfunc global IMSVidDevice_get_Category   11 var
#comfunc global IMSVidDevice_get_ClassID    12 var
#comfunc global IMSVidDevice_get__Category  13 var
#comfunc global IMSVidDevice_get__ClassID   14 var
#comfunc global IMSVidDevice_IsEqualDevice  15 sptr,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。