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

ITuningSpaceContainer

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

公式ドキュメント

ITuningSpaceContainer インターフェイスは、SystemTuningSpaces オブジェクトに実装されています。

解説(Remarks)

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

メソッド 13

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

vtbl 7 HRESULT get_Count(INT* Count)

get_Count メソッドは、現在ローカルシステムで利用可能なチューニングスペースの数を取得します。

CountINT*outチューニングスペースの数を受け取る変数へのポインター。

戻り値

成功した場合は S_OK を返します。メソッドが失敗した場合は、標準的な COM の IErrorInfo インターフェイスを使用してエラー情報を取得できます。

vtbl 8 HRESULT get__NewEnum(IEnumVARIANT** NewEnum)

get__NewEnum メソッドは、Automation クライアントでの For...Each ループをサポートします。

NewEnumIEnumVARIANT**outIEnumVARIANT インターフェイスポインターを受け取る変数へのポインター。呼び出し側がインターフェイスを解放する必要があります。

戻り値

成功した場合は S_OK を返します。メソッドが失敗した場合は、標準的な COM の IErrorInfo インターフェイスを使用してエラー情報を取得できます。

解説(Remarks)

このメソッドは、スクリプトや Visual Basic のアプリケーションが For...Each ループでコレクションを反復処理できるようにするために提供されています。C++ アプリケーションでは、ITuningSpaceContainer::get_EnumTuningSpaces メソッドを使用してください。

返される IEnumVARIANT インターフェイスは、主に Automation クライアントでの使用を目的としているため、スレッドセーフではありません。クライアントは、複数のスレッドからこのインターフェイスのメソッドを呼び出さないでください。

vtbl 9 HRESULT get_Item(VARIANT varIndex, ITuningSpace** TuningSpace)

get_Item メソッドは、指定した ID を持つチューニングスペースを取得します。

varIndexVARIANTinチューニングスペースの ID を指定する VARIANT
TuningSpaceITuningSpace**out返されるインターフェイスが設定される ITuningSpace インターフェイスポインターのアドレス。

戻り値

成功した場合は S_OK を返します。メソッドが失敗した場合は、標準的な COM の IErrorInfo インターフェイスを使用してエラー情報を取得できます。

解説(Remarks)

チューニングスペースは ID 番号で識別されます。ID 番号はコレクション内で一意です。有効な ID の範囲は連続しているとは限らず、チューニングスペースが追加された後に削除されると、欠番が生じる場合があります。


CComPtr <ITuningSpaceContainer>  pTuningSpaceContainer;
// SystemTuningSpaces オブジェクトを作成します (図示せず)。

long cCount = 0;
long ID = 1; // ゼロは有効な ID ではありません。
hr = pTuningSpaceContainer->get_Count(&cCount);
if (SUCCEEDED(hr))
{
    while (cCount)
    {
        CComPtr<ITuningSpace> pTuningSpace;
        CComVariant varIndex(ID);
        hr = pITuningSpaceContainer->get_Item(varIndex, &pTuningSpace);
        if (SUCCEEDED(hr))
        {
             // pTuningSpace はこの ID を持つチューニングスペースを指すようになります。
             --cCount;
        }
        ID++; // 次の ID のためにインクリメントします。
    }
}

vtbl 10 HRESULT put_Item(VARIANT varIndex, ITuningSpace* TuningSpace)

put_Item メソッドは、コレクション内の既存のチューニングスペースに対する変更を保存します。

varIndexVARIANTinチューニングスペースのインデックスを指定する VARIANT
TuningSpaceITuningSpace*inチューニングスペースの ITuningSpace インターフェイスへのポインター。

戻り値

HRESULT を返します。取り得る値には次の表のものが含まれます。

戻り値コード 説明
E_INVALIDARG
無効な引数です。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。

メソッドが失敗した場合は、標準的な COM の IErrorInfo インターフェイスを使用してエラー情報を取得できます。

解説(Remarks)

アプリケーションは、コレクションから既存のチューニングスペースを取得し、ITuningSpace のメソッドを呼び出してそのプロパティを変更した後、put_Item を呼び出して変更を保存できます。チューニングスペースの一意の名前プロパティは、コレクション内の指定したインデックスにあるチューニングスペースと一致している必要があります。一致しない場合、メソッドは E_INVALIDARG を返します。

新しいチューニングスペースを追加するには、ITuningSpaceContainer::Add メソッドを使用してください。

vtbl 11 HRESULT TuningSpacesForCLSID(LPWSTR SpaceCLSID, ITuningSpaces** NewColl)

TuningSpacesForCLSID メソッドは、指定した CLSID に一致するチューニングスペースのコレクションを取得します。このメソッドは CLSID を BSTR として返すため、Automation クライアント向けです。

SpaceCLSIDLPWSTRinチューニングスペースの CLSID の文字列表現。
NewCollITuningSpaces**outITuningSpaces インターフェイスへのポインターを受け取ります。呼び出し側がインターフェイスを解放する必要があります。

戻り値

成功した場合は S_OK を返します。メソッドが失敗した場合は、標準的な COM の IErrorInfo インターフェイスを使用してエラー情報を取得できます。

vtbl 12 HRESULT _TuningSpacesForCLSID2(GUID* SpaceCLSID, ITuningSpaces** NewColl)
SpaceCLSIDGUID*in絞り込み対象のチューニングスペースCLSIDを示すGUIDへのポインタ。
NewCollITuningSpaces**out一致したチューニングスペースの新しいITuningSpacesコレクションを受け取る出力ポインタ。
vtbl 13 HRESULT TuningSpacesForName(LPWSTR Name, ITuningSpaces** NewColl)

TuningSpacesForName メソッドは、指定した名前に一致するチューニングスペースのコレクションを取得します。

NameLPWSTRinチューニングスペースのフレンドリ名または一意の名前と照合するための正規表現を含む文字列。
NewCollITuningSpaces**outITuningSpaces インターフェイスポインターを受け取る変数のアドレス。このインターフェイスを使用してコレクションを列挙します。呼び出し側がインターフェイスを解放する必要があります。

戻り値

成功した場合は S_OK を返します。メソッドが失敗した場合は、標準的な COM の IErrorInfo インターフェイスを使用してエラー情報を取得できます。

解説(Remarks)

名前に一致するチューニングスペースがない場合、返されるコレクションは空になることがあります。


CComPtr <ITuningSpaceContainer>  pTuningSpaceContainer;
// SystemTuningSpaces オブジェクトを作成します (図示せず)。

// "Local (something) Cable" という名前のチューニングスペースの照合を試みます。
CComPtr<ITuningSpaces> pTunes;
CComBSTR bstrName("Local.*Cable");
hr = pITuningSpaceContainer->TuningSpacesForName(bstrName, &pTunes);
if (SUCCEEDED(hr))
{
    // 返されたコレクションのサイズを取得します。
    long cCount = 0;
    hr = pTunes->get_Count(&cCount);
    if (SUCCEEDED(hr) && (cCount > 0))
    {
        // コレクションを列挙します。
        CComPtr<IEnumTuningSpaces> pTuneEnum;
        hr = pTunes->get_EnumTuningSpaces(&pTuneEnum);
        if (SUCCEEDED(hr))
        {
            // IEnumTuningSpaces を使用してコレクションを反復処理します。
        }
    }
}
vtbl 14 HRESULT FindID(ITuningSpace* TuningSpace, INT* ID)

FindID メソッドは、コレクション内の指定したチューニングスペースの ID を取得します。

TuningSpaceITuningSpace*inチューニングスペースの ITuningSpace インターフェイスへのポインター。
IDINT*outチューニングスペースの ID を受け取る変数へのポインター。返される値は、このコレクションオブジェクト (ローカルシステムを表す) に固有です。

戻り値

HRESULT を返します。取り得る値には次の表のものが含まれます。

戻り値コード 説明
E_INVALIDARG
指定したチューニングスペースは、このコレクションのメンバーではありません。
E_POINTER
NULL ポインター引数です。
S_OK
成功しました。
vtbl 15 HRESULT Add(ITuningSpace* TuningSpace, VARIANT* NewIndex)

Add メソッドは、新しい永続的なチューニングスペースをシステムに追加します。

TuningSpaceITuningSpace*in新しいチューニングスペースの ITuningSpace インターフェイスへのポインター。
NewIndexVARIANT*out現在のコレクション内での新しいチューニングスペースの ID を受け取る VARIANT 型の変数へのポインター。

戻り値

成功した場合は S_OK を返します。メソッドが失敗した場合は、標準的な COM の IErrorInfo インターフェイスを使用してエラー情報を取得できます。

解説(Remarks)

このメソッドは、新しいチューニングスペースをコレクションに追加します。コレクションオブジェクトは、チューニングスペースの情報を自動的に永続化します。

チューニングスペースには、コレクションに既に存在するどのチューニングスペースとも競合しない一意の名前が必要です。既存のチューニングスペースを上書きするには、ITuningSpaceContainer::put_Item メソッドを使用してください。

vtbl 16 HRESULT get_EnumTuningSpaces(IEnumTuningSpaces** ppEnum)

get_EnumTuningSpaces メソッドは、ローカルシステムで利用可能なすべてのチューニングスペースのコレクションを取得します。

ppEnumIEnumTuningSpaces**outIEnumTuningSpaces インターフェイスポインターを受け取る変数へのポインター。このインターフェイスを使用してコレクションを列挙します。呼び出し側がインターフェイスを解放する必要があります。

戻り値

成功した場合は S_OK を返します。メソッドが失敗した場合は、標準的な COM の IErrorInfo インターフェイスを使用してエラー情報を取得できます。

解説(Remarks)

C++ アプリケーションでは、このメソッドを使用して、ローカルシステムで定義されているチューニングスペースの初期リストを取得します。

vtbl 17 HRESULT Remove(VARIANT Index)

Remove メソッドは、チューニングスペースをシステムから完全に削除します。

IndexVARIANTin削除するチューニングスペースの ID を指定する VARIANT 型の変数。

戻り値

成功した場合は S_OK を返します。指定したチューニングスペースがレジストリ内で無効または破損していた場合、このメソッドはそこにある情報をすべて削除し、S_FALSE を返します。

vtbl 18 HRESULT get_MaxCount(INT* MaxCount)

get_MaxCount メソッドは、システムで許可されるチューニングスペースの最大数を取得します。

MaxCountINT*outチューニングスペースの最大数を受け取る変数へのポインター。

戻り値

成功した場合は S_OK を返します。メソッドが失敗した場合は、標準的な COM の IErrorInfo インターフェイスを使用してエラー情報を取得できます。

vtbl 19 HRESULT put_MaxCount(INT MaxCount)

put_MaxCount メソッドは、システムで許可されるチューニングスペースの最大数を設定します。

MaxCountINTinチューニングスペースの最大数を指定します。

戻り値

成功した場合は S_OK を返します。メソッドが失敗した場合は、標準的な COM の IErrorInfo インターフェイスを使用してエラー情報を取得できます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ITuningSpaceContainer "{5B692E84-E2F1-11D2-9493-00C04F72D980}"
#usecom global ITuningSpaceContainer IID_ITuningSpaceContainer "{}"
#comfunc global ITuningSpaceContainer_get_Count               7 var
#comfunc global ITuningSpaceContainer_get__NewEnum            8 sptr
#comfunc global ITuningSpaceContainer_get_Item                9 int,sptr
#comfunc global ITuningSpaceContainer_put_Item                10 int,sptr
#comfunc global ITuningSpaceContainer_TuningSpacesForCLSID    11 wstr,sptr
#comfunc global ITuningSpaceContainer__TuningSpacesForCLSID2  12 var,sptr
#comfunc global ITuningSpaceContainer_TuningSpacesForName     13 wstr,sptr
#comfunc global ITuningSpaceContainer_FindID                  14 sptr,var
#comfunc global ITuningSpaceContainer_Add                     15 sptr,var
#comfunc global ITuningSpaceContainer_get_EnumTuningSpaces    16 sptr
#comfunc global ITuningSpaceContainer_Remove                  17 int
#comfunc global ITuningSpaceContainer_get_MaxCount            18 var
#comfunc global ITuningSpaceContainer_put_MaxCount            19 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。