IMFAttributes
COM公式ドキュメント
オブジェクトにキー/値のペアを格納するための汎用的な手段を提供します。
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
メソッド 30
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
キーに関連付けられた値を取得します。
| guidKey | GUID* | in | 取得する値を識別する GUID。 |
| pValue | PROPVARIANT* | inoutoptional | 値を受け取る PROPVARIANT へのポインター。値が見つかった場合、このメソッドは格納されている値のコピーを PROPVARIANT に設定します。このメソッドが割り当てたメモリを解放するには PropVariantClear を呼び出します。このパラメーターは NULL にできます。NULL の場合、メソッドはキーを検索し、キーが見つかれば S_OK を返しますが、値のコピーは行いません。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたキーが見つかりませんでした。 |
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
例
次の例は、ある属性ストアから別の属性ストアへ属性をコピーします。
HRESULT CopyAttribute(IMFAttributes *pFrom, IMFAttributes *pTo, REFGUID guidKey)
{
PROPVARIANT val;
HRESULT hr = pFrom->GetItem(guidKey, &val);
if (SUCCEEDED(hr))
{
hr = pTo->SetItem(guidKey, val);
PropVariantClear(&val);
}
else if (hr == MF_E_ATTRIBUTENOTFOUND)
{
hr = S_OK;
}
return hr;
}
キーに関連付けられた値のデータ型を取得します。
| guidKey | GUID* | in | 照会する値を識別する GUID。 |
| pType | MF_ATTRIBUTE_TYPE* | out | MF_ATTRIBUTE_TYPE 列挙体のメンバーを受け取ります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたキーはこのオブジェクトに格納されていません。 |
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
格納されている属性値が指定された PROPVARIANT と等しいかどうかを照会します。
| guidKey | GUID* | in | 照会する値を識別する GUID。 |
| Value | PROPVARIANT* | in | 比較する値を格納した PROPVARIANT。 |
| pbResult | BOOL* | out | 属性が Value で指定された値と一致するかどうかを示すブール値を受け取ります。「解説」を参照してください。このパラメーターは NULL にできません。NULL の場合、アクセス違反が発生します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、以下のいずれかの理由により pbResult を FALSE に設定します。
- guidKey で指定されたキーに一致する属性が見つからない。
- 属性の PROPVARIANT 型が Value で指定された型と一致しない。
- 属性値が Value で指定された値と一致しない。
- メソッドが失敗した。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
このオブジェクトの属性を別のオブジェクトの属性と比較します。
| pTheirs | IMFAttributes* | inoptional | このオブジェクトと比較する対象オブジェクトの IMFAttributes インターフェイスへのポインター。 |
| MatchType | MF_ATTRIBUTES_MATCH_TYPE | in | 実行する比較の種類を指定する MF_ATTRIBUTES_MATCH_TYPE 列挙体のメンバー。 |
| pbResult | BOOL* | out | ブール値を受け取ります。2 つの属性セットが MatchType パラメーターで指定された方法で一致する場合、値は TRUE になります。それ以外の場合、値は FALSE になります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
pThis を Compare メソッドが呼び出されるオブジェクト、pTheirs を pTheirs パラメーターとして渡されるオブジェクトとすると、MatchType によって以下の比較が定義されます。
| 一致の種類 | TRUE を返す条件 |
|---|---|
| MF_ATTRIBUTES_MATCH_OUR_ITEMS | pThis 内のすべての属性について、同じキーと値を持つ属性が pTheirs に存在する場合。 |
| MF_ATTRIBUTES_MATCH_THEIR_ITEMS | pTheirs 内のすべての属性について、同じキーと値を持つ属性が pThis に存在する場合。 |
| MF_ATTRIBUTES_MATCH_ALL_ITEMS | 両方のオブジェクトのキー/値のペアが同一である場合。 |
| MF_ATTRIBUTES_MATCH_INTERSECTION | pThis のキーと pTheirs のキーの共通部分を取ります。それらのキーに関連付けられた値が pThis と pTheirs の両方で同一である場合。 |
| MF_ATTRIBUTES_MATCH_SMALLER | 属性の数が少ない方のオブジェクトを取ります。そのオブジェクト内のすべての属性について、同じキーと値を持つ属性がもう一方のオブジェクトに存在する場合。 |
pTheirs および pbResult パラメーターは NULL にできません。いずれかのパラメーターが NULL の場合、アクセス違反が発生します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
キーに関連付けられた UINT32 値を取得します。
| guidKey | GUID* | in | 取得する値を識別する GUID。属性の型は MF_ATTRIBUTE_UINT32 でなければなりません。 |
| punValue | DWORD* | out | UINT32 値を受け取ります。キーが見つかり、データ型が UINT32 の場合、このメソッドは値をこのパラメーターにコピーします。それ以外の場合、このパラメーターの元の値は変更されません。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたキーが見つかりませんでした。 | |
| 属性値が UINT32 ではありません。 |
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
キーに関連付けられた UINT64 値を取得します。
| guidKey | GUID* | in | 取得する値を識別する GUID。属性の型は MF_ATTRIBUTE_UINT64 でなければなりません。 |
| punValue | ULONGLONG* | out | UINT64 値を受け取ります。キーが見つかり、データ型が UINT64 の場合、このメソッドは値をこのパラメーターにコピーします。それ以外の場合、このパラメーターの元の値は変更されません。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたキーが見つかりませんでした。 | |
| 属性値が UINT64 ではありません。 |
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
キーに関連付けられた double 値を取得します。
| guidKey | GUID* | in | 取得する値を識別する GUID。属性の型は MF_ATTRIBUTE_DOUBLE でなければなりません。 |
| pfValue | DOUBLE* | out | double 値を受け取ります。キーが見つかり、データ型が double の場合、このメソッドは値をこのパラメーターにコピーします。それ以外の場合、このパラメーターの元の値は変更されません。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたキーが見つかりませんでした。 | |
| 属性値が double ではありません。 |
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
キーに関連付けられた GUID 値を取得します。
| guidKey | GUID* | in | 取得する値を識別する GUID。属性の型は MF_ATTRIBUTE_GUID でなければなりません。 |
| pguidValue | GUID* | out | GUID 値を受け取ります。キーが見つかり、データ型が GUID の場合、このメソッドは値をこのパラメーターにコピーします。それ以外の場合、このパラメーターの元の値は変更されません。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたキーが見つかりませんでした。 | |
| 属性値が GUID ではありません。 |
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
キーに関連付けられた文字列値の長さを取得します。
| guidKey | GUID* | in | 取得する値を識別する GUID。属性の型は MF_ATTRIBUTE_STRING でなければなりません。 |
| pcchLength | DWORD* | out | キーが見つかり、値が文字列型の場合、このパラメーターは終端の NULL 文字を含まない文字列の文字数を受け取ります。文字列値を取得するには IMFAttributes::GetString を呼び出します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたキーが見つかりませんでした。 | |
| 属性値が文字列ではありません。 |
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
キーに関連付けられたワイド文字列を取得します。
| guidKey | GUID* | in | 取得する値を識別する GUID。属性の型は MF_ATTRIBUTE_STRING でなければなりません。 |
| pwszValue | LPWSTR | out | 呼び出し側が割り当てたワイド文字配列へのポインター。この配列は、終端の NULL 文字を含めて文字列を格納できる大きさでなければなりません。キーが見つかり、値が文字列型の場合、このメソッドは文字列をこのバッファーにコピーします。文字列の長さを調べるには IMFAttributes::GetStringLength を呼び出します。 |
| cchBufSize | DWORD | in | pwszValue 配列のサイズ (文字数)。この値には終端の NULL 文字が含まれます。 |
| pcchLength | DWORD* | inoutoptional | 終端の NULL 文字を除いた文字列の文字数を受け取ります。このパラメーターは NULL にできます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 文字列の長さが大きすぎて UINT32 値に収まりません。 | |
|
バッファーが文字列を格納するのに十分な大きさではありません。 |
| 指定されたキーが見つかりませんでした。 | |
| 属性値が文字列ではありません。 |
解説(Remarks)
バッファーを割り当てて文字列を格納する IMFAttributes::GetAllocatedString メソッドを使用することもできます。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
例
次のコード例は、値が文字列である属性を取得する方法を示します。
HRESULT AttributeGetString(IMFAttributes *pAttributes)
{
HRESULT hr = S_OK;
UINT32 cchLength = 0;
WCHAR *pString = NULL;
hr = pAttributes->GetStringLength(MY_ATTRIBUTE, &cchLength);
if (SUCCEEDED(hr))
{
pString = new WCHAR[cchLength + 1];
if (pString == NULL)
{
hr = E_OUTOFMEMORY;
}
}
if (SUCCEEDED(hr))
{
hr = pAttributes->GetString(
MY_ATTRIBUTE, pString, cchLength + 1, &cchLength);
}
if (pString)
{
delete [] pString;
}
return hr;
}
キーに関連付けられたワイド文字列を取得します。このメソッドは文字列用のメモリを割り当てます。
| guidKey | GUID* | in | 取得する値を識別する GUID。属性の型は MF_ATTRIBUTE_STRING でなければなりません。 |
| ppwszValue | LPWSTR* | out | キーが見つかり、値が文字列型の場合、このパラメーターは文字列のコピーを受け取ります。呼び出し側は CoTaskMemFree を呼び出して文字列のメモリを解放する必要があります。 |
| pcchLength | DWORD* | out | 終端の NULL 文字を除いた文字列の文字数を受け取ります。このパラメーターは NULL にできません。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたキーが見つかりませんでした。 | |
| 属性値が文字列ではありません。 |
解説(Remarks)
文字列値を呼び出し側が割り当てたバッファーにコピーするには、IMFAttributes::GetString メソッドを使用します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
キーに関連付けられたバイト配列の長さを取得します。
| guidKey | GUID* | in | 取得する値を識別する GUID。属性の型は MF_ATTRIBUTE_BLOB でなければなりません。 |
| pcbBlobSize | DWORD* | out | キーが見つかり、値がバイト配列の場合、このパラメーターは配列のサイズ (バイト単位) を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたキーが見つかりませんでした。 | |
| 属性値がバイト配列ではありません。 |
解説(Remarks)
バイト配列を取得するには IMFAttributes::GetBlob を呼び出します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
キーに関連付けられたバイト配列を取得します。このメソッドは、呼び出し側が割り当てたバッファーに配列をコピーします。
| guidKey | GUID* | in | 取得する値を識別する GUID。属性の型は MF_ATTRIBUTE_BLOB でなければなりません。 |
| pBuf | BYTE* | out | 呼び出し側が割り当てたバッファーへのポインター。キーが見つかり、値がバイト配列の場合、このメソッドは配列をこのバッファーにコピーします。必要なバッファーのサイズを調べるには IMFAttributes::GetBlobSize を呼び出します。 |
| cbBufSize | DWORD | in | pBuf バッファーのサイズ (バイト単位)。 |
| pcbBlobSize | DWORD* | inoutoptional | バイト配列のサイズを受け取ります。このパラメーターは NULL にできます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
|
バッファーが配列を格納するのに十分な大きさではありません。 |
| 指定されたキーが見つかりませんでした。 | |
| 属性値がバイト配列ではありません。 |
解説(Remarks)
バッファーを割り当ててバイト配列を格納する IMFAttributes::GetAllocatedBlob メソッドを使用することもできます。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
例
次のコード例は、値がバイト配列である属性を取得する方法を示します。
HRESULT AttributeGetBlob(IMFAttributes *pAttributes)
{
HRESULT hr = S_OK;
UINT32 cbBlob = 0;
BYTE *pBlob = NULL;
hr = pAttributes->GetBlobSize(MY_ATTRIBUTE, &cbBlob);
if (SUCCEEDED(hr))
{
pBlob = new BYTE[cbBlob];
if (pBlob == NULL)
{
hr = E_OUTOFMEMORY;
}
}
if (SUCCEEDED(hr))
{
hr = pAttributes->GetBlob(MY_ATTRIBUTE, pBlob, cbBlob, &cbBlob);
}
if (pBlob)
{
delete [] pBlob;
}
return hr;
}
キーに関連付けられたバイト配列を取得します。このメソッドは配列用のメモリを割り当てます。
| guidKey | GUID* | in | 取得する値を識別する GUID。属性の型は MF_ATTRIBUTE_BLOB でなければなりません。 |
| ppBuf | BYTE** | out | キーが見つかり、値がバイト配列の場合、このパラメーターは配列のコピーを受け取ります。呼び出し側は CoTaskMemFree を呼び出して配列のメモリを解放する必要があります。 |
| pcbSize | DWORD* | out | 配列のサイズ (バイト単位) を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたキーが見つかりませんでした。 | |
| 属性値がバイト配列ではありません。 |
解説(Remarks)
バイト配列値を呼び出し側が割り当てたバッファーにコピーするには、IMFAttributes::GetBlob メソッドを使用します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
キーに関連付けられたインターフェイスポインターを取得します。
| guidKey | GUID* | in | 取得する値を識別する GUID。属性の型は MF_ATTRIBUTE_IUNKNOWN でなければなりません。 |
| riid | GUID* | in | 取得するインターフェイスのインターフェイス識別子 (IID)。 |
| ppv | void** | out | 要求されたインターフェイスへのポインターを受け取ります。呼び出し側はインターフェイスを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 属性値は IUnknown ポインターですが、要求されたインターフェイスをサポートしていません。 | |
| 指定されたキーが見つかりませんでした。 | |
| 属性値が IUnknown ポインターではありません。 |
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
指定したキーで属性値を追加します。
| guidKey | GUID* | in | 設定する値を識別する GUID。このキーが既に存在する場合、このメソッドは古い値を上書きします。 |
| Value | PROPVARIANT* | in | 属性値を格納した PROPVARIANT。このメソッドは値をコピーします。PROPVARIANT の型は、MF_ATTRIBUTE_TYPE 列挙体に列挙されている型のいずれかでなければなりません。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| メモリが不足しています。 | |
| 属性の型が無効です。 |
解説(Remarks)
このメソッドは、PROPVARIANT の型が MF_ATTRIBUTE_TYPE で定義された属性型のいずれかであるかどうかを確認し、サポートされていない型が使用された場合は失敗します。ただし、このメソッドは PROPVARIANT が指定された属性 GUID に対して正しい型であるかどうかは確認しません。(属性 GUID とプロパティ型をプログラム的に関連付ける方法はありません。) Media Foundation の属性とそのデータ型の一覧については、Media Foundation Attributes を参照してください。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
オブジェクトの属性リストからキー/値のペアを削除します。
| guidKey | GUID* | in | 削除する値を識別する GUID。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
指定されたキーが存在しない場合、このメソッドは S_OK を返します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
オブジェクトの属性リストからすべてのキー/値のペアを削除します。
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
UINT32 値をキーに関連付けます。
| guidKey | GUID* | in | 設定する値を識別する GUID。このキーが既に存在する場合、このメソッドは古い値を上書きします。 |
| unValue | DWORD | in | このキーの新しい値。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
UINT32 値を取得するには IMFAttributes::GetUINT32 を呼び出します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
UINT64 値をキーに関連付けます。
| guidKey | GUID* | in | 設定する値を識別する GUID。このキーが既に存在する場合、このメソッドは古い値を上書きします。 |
| unValue | ULONGLONG | in | このキーの新しい値。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
UINT64 値を取得するには IMFAttributes::GetUINT64 を呼び出します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
double 値をキーに関連付けます。
| guidKey | GUID* | in | 設定する値を識別する GUID。このキーが既に存在する場合、このメソッドは古い値を上書きします。 |
| fValue | DOUBLE | in | このキーの新しい値。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
double 値を取得するには IMFAttributes::GetDouble を呼び出します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
GUID 値をキーに関連付けます。
| guidKey | GUID* | in | 設定する値を識別する GUID。このキーが既に存在する場合、このメソッドは古い値を上書きします。 |
| guidValue | GUID* | in | このキーの新しい値。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| メモリが不足しています。 |
解説(Remarks)
GUID 値を取得するには IMFAttributes::GetGUID を呼び出します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
ワイド文字列をキーに関連付けます。
| guidKey | GUID* | in | 設定する値を識別する GUID。このキーが既に存在する場合、このメソッドは古い値を上書きします。 |
| wszValue | LPWSTR | in | このキーに関連付ける NULL 終端のワイド文字列。このメソッドは文字列のコピーを格納します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
文字列を取得するには IMFAttributes::GetString または IMFAttributes::GetAllocatedString を呼び出します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
バイト配列をキーに関連付けます。
| guidKey | GUID* | in | 設定する値を識別する GUID。このキーが既に存在する場合、このメソッドは古い値を上書きします。 |
| pBuf | BYTE* | in | このキーに関連付けるバイト配列へのポインター。このメソッドは配列のコピーを格納します。 |
| cbBufSize | DWORD | in | 配列のサイズ (バイト単位)。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
バイト配列を取得するには IMFAttributes::GetBlob または IMFAttributes::GetAllocatedBlob を呼び出します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
IUnknown ポインターをキーに関連付けます。
| guidKey | GUID* | in | 設定する値を識別する GUID。このキーが既に存在する場合、このメソッドは古い値を上書きします。 |
| pUnknown | IUnknown* | in | このキーに関連付ける IUnknown ポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
IUnknown ポインターを取得するには IMFAttributes::GetUnknown を呼び出します。
pUnknown を NULL にして SetUnknown を呼び出してもエラーにはなりません。ただし、その場合 GetUnknown は MF_E_INVALIDTYPE を返します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
他のスレッドがアクセスできないように属性ストアをロックします。
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
LockStore を呼び出したスレッドが、同じオブジェクトに対して他の IMFAttributes メソッドを呼び出すスレッドを待機する場合、このメソッドはデッドロックを引き起こす可能性があります。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
IMFAttributes::LockStore メソッドの呼び出し後に属性ストアのロックを解除します。オブジェクトのロックが解除されている間は、複数のスレッドがオブジェクトの属性にアクセスできます。
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
このオブジェクトに設定されている属性の数を取得します。
| pcItems | DWORD* | out | 属性の数を受け取ります。このパラメーターは NULL にできません。NULL の場合、アクセス違反が発生します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
すべての属性を列挙するには、各インデックス値に対して IMFAttributes::GetItemByIndex を呼び出します。
このインターフェイスは、Windows Media Format 11 SDK の再頒布可能コンポーネントがインストールされている場合、以下のプラットフォームで利用できます。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
指定したインデックスの属性を取得します。
| unIndex | DWORD | in | 取得する属性のインデックス。属性の数を取得するには IMFAttributes::GetCount を呼び出します。 |
| pguidKey | GUID* | out | この属性を識別する GUID を受け取ります。 |
| pValue | PROPVARIANT* | inoutoptional | 値を受け取る PROPVARIANT へのポインター。このパラメーターは NULL にできます。NULL でない場合、このメソッドは属性値のコピーを PROPVARIANT に設定します。このメソッドが割り当てたメモリを解放するには PropVariantClear を呼び出します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| インデックスが無効です。 |
解説(Remarks)
オブジェクトのすべての属性をスレッドセーフに列挙するには、以下の手順を実行します。
- 他のスレッドが属性を追加または削除しないように IMFAttributes::LockStore を呼び出します。
- 属性の数を調べるために IMFAttributes::GetCount を呼び出します。
- 各属性をインデックスで取得するために GetItemByIndex を呼び出します。
- 属性ストアのロックを解除するために IMFAttributes::UnlockStore を呼び出します。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
このオブジェクトのすべての属性を別の属性ストアにコピーします。
| pDest | IMFAttributes* | in | コピーを受け取る属性ストアの IMFAttributes インターフェイスへのポインター。 |
戻り値
このメソッドが成功した場合、S_OK を返します。それ以外の場合、HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、pDest に元々格納されていたすべての属性を削除します。
このメソッドを継承する IMFSample に対して CopyAllItems を呼び出した場合、サンプルの時刻、期間、およびフラグはコピー先のサンプルにコピーされません。これらの値は手動で新しいサンプルにコピーする必要があります。
- Windows XP with Service Pack 2 (SP2) 以降。
- Windows XP Media Center Edition 2005 に KB900325 (Windows XP Media Center Edition 2005) および KB925766 (October 2006 Update Rollup for Windows XP Media Center Edition) がインストールされている環境。
例
すべての属性ではなく単一の属性をコピーするには、次のコードを使用できます。
HRESULT CopyAttribute(IMFAttributes *pFrom, IMFAttributes *pTo, REFGUID guidKey)
{
PROPVARIANT val;
HRESULT hr = pFrom->GetItem(guidKey, &val);
if (SUCCEEDED(hr))
{
hr = pTo->SetItem(guidKey, val);
PropVariantClear(&val);
}
else if (hr == MF_E_ATTRIBUTENOTFOUND)
{
hr = S_OK;
}
return hr;
}
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFAttributes "{2CD2D921-C447-44A7-A13C-4ADABFC247E3}" #usecom global IMFAttributes IID_IMFAttributes "{}" #comfunc global IMFAttributes_GetItem 3 var,var #comfunc global IMFAttributes_GetItemType 4 var,var #comfunc global IMFAttributes_CompareItem 5 var,var,var #comfunc global IMFAttributes_Compare 6 sptr,int,var #comfunc global IMFAttributes_GetUINT32 7 var,var #comfunc global IMFAttributes_GetUINT64 8 var,var #comfunc global IMFAttributes_GetDouble 9 var,var #comfunc global IMFAttributes_GetGUID 10 var,var #comfunc global IMFAttributes_GetStringLength 11 var,var #comfunc global IMFAttributes_GetString 12 var,var,int,var #comfunc global IMFAttributes_GetAllocatedString 13 var,var,var #comfunc global IMFAttributes_GetBlobSize 14 var,var #comfunc global IMFAttributes_GetBlob 15 var,var,int,var #comfunc global IMFAttributes_GetAllocatedBlob 16 var,var,var #comfunc global IMFAttributes_GetUnknown 17 var,var,sptr #comfunc global IMFAttributes_SetItem 18 var,var #comfunc global IMFAttributes_DeleteItem 19 var #comfunc global IMFAttributes_DeleteAllItems 20 #comfunc global IMFAttributes_SetUINT32 21 var,int #comfunc global IMFAttributes_SetUINT64 22 var,int64 #comfunc global IMFAttributes_SetDouble 23 var,double #comfunc global IMFAttributes_SetGUID 24 var,var #comfunc global IMFAttributes_SetString 25 var,wstr #comfunc global IMFAttributes_SetBlob 26 var,var,int #comfunc global IMFAttributes_SetUnknown 27 var,sptr #comfunc global IMFAttributes_LockStore 28 #comfunc global IMFAttributes_UnlockStore 29 #comfunc global IMFAttributes_GetCount 30 var #comfunc global IMFAttributes_GetItemByIndex 31 int,var,var #comfunc global IMFAttributes_CopyAllItems 32 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFAttributes "{2CD2D921-C447-44A7-A13C-4ADABFC247E3}" #usecom global IMFAttributes IID_IMFAttributes "{}" #comfunc global IMFAttributes_GetItem 3 sptr,sptr #comfunc global IMFAttributes_GetItemType 4 sptr,sptr #comfunc global IMFAttributes_CompareItem 5 sptr,sptr,sptr #comfunc global IMFAttributes_Compare 6 sptr,int,sptr #comfunc global IMFAttributes_GetUINT32 7 sptr,sptr #comfunc global IMFAttributes_GetUINT64 8 sptr,sptr #comfunc global IMFAttributes_GetDouble 9 sptr,sptr #comfunc global IMFAttributes_GetGUID 10 sptr,sptr #comfunc global IMFAttributes_GetStringLength 11 sptr,sptr #comfunc global IMFAttributes_GetString 12 sptr,sptr,int,sptr #comfunc global IMFAttributes_GetAllocatedString 13 sptr,sptr,sptr #comfunc global IMFAttributes_GetBlobSize 14 sptr,sptr #comfunc global IMFAttributes_GetBlob 15 sptr,sptr,int,sptr #comfunc global IMFAttributes_GetAllocatedBlob 16 sptr,sptr,sptr #comfunc global IMFAttributes_GetUnknown 17 sptr,sptr,sptr #comfunc global IMFAttributes_SetItem 18 sptr,sptr #comfunc global IMFAttributes_DeleteItem 19 sptr #comfunc global IMFAttributes_DeleteAllItems 20 #comfunc global IMFAttributes_SetUINT32 21 sptr,int #comfunc global IMFAttributes_SetUINT64 22 sptr,int64 #comfunc global IMFAttributes_SetDouble 23 sptr,double #comfunc global IMFAttributes_SetGUID 24 sptr,sptr #comfunc global IMFAttributes_SetString 25 sptr,wstr #comfunc global IMFAttributes_SetBlob 26 sptr,sptr,int #comfunc global IMFAttributes_SetUnknown 27 sptr,sptr #comfunc global IMFAttributes_LockStore 28 #comfunc global IMFAttributes_UnlockStore 29 #comfunc global IMFAttributes_GetCount 30 sptr #comfunc global IMFAttributes_GetItemByIndex 31 int,sptr,sptr #comfunc global IMFAttributes_CopyAllItems 32 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。