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

IWMProfile

COM
IID96406bdb-2b2b-11d3-b36b-00c04f6108ff継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IWMProfile インターフェースは、プロファイルオブジェクトの主要なインターフェースです。

メソッド 18

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

vtbl 3 HRESULT GetVersion(WMT_VERSION* pdwVersion)

GetVersion メソッドは、プロファイルの作成に使用された Windows Media Format SDK のバージョン番号を取得します。

pdwVersionWMT_VERSION*outWMT_VERSION 列挙型のメンバーの1つを格納する DWORD へのポインター。この値は、プロファイルの作成に使用された Windows Media Format SDK のバージョンを指定します。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pdwVersion パラメーターが NULL です。

解説(Remarks)

バージョン番号は、ファイル内のコンテンツのエンコードに使用された Windows Media コーデックのバージョンを示します。下位互換性が特に必要な場合を除き、常に最新のコーデックを使用してください。

vtbl 4 HRESULT GetName(LPWSTR pwszName, DWORD* pcchName)

GetName メソッドは、プロファイルの名前を取得します。

pwszNameLPWSTRout名前を格納するワイド文字の null 終端文字列へのポインター。名前の長さを取得するには NULL を渡します。
pcchNameDWORD*inout入力時には、pwszName バッファーの長さを指定します。出力時には、メソッドが成功した場合、終端の null 文字を含む名前の長さへのポインターを指定します。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pcchName パラメーターが NULL です。
ASF_E_BUFFERTOOSMALL
pwszName パラメーターが十分な大きさではありません。
E_UNEXPECTED
原因不明の理由でメソッドが失敗しました。

解説(Remarks)

GetName は2回呼び出す必要があります。1回目の呼び出しでは、pwszName として NULL を渡します。戻り時に、pcchName が指す値には、プロファイル名を保持するために必要なワイド文字数(終端の null 文字を含む)が設定されます。その後、文字列に必要な量のメモリを割り当て、2回目の呼び出しでそのポインターを pwszName として渡すことができます。

プロファイルには、プロファイルの一覧を表示する際に使用される名前と説明があります。

vtbl 5 HRESULT SetName(LPWSTR pwszName)

SetName メソッドは、プロファイルの名前を指定します。

pwszNameLPWSTRin名前を格納するワイド文字の null 終端文字列へのポインター。プロファイル名は256ワイド文字までに制限されます。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pwszName パラメーターが NULL です。

解説(Remarks)

プロファイルには、プロファイルの一覧を表示する際に使用される名前と説明があります。

vtbl 6 HRESULT GetDescription(LPWSTR pwszDescription, DWORD* pcchDescription)

GetDescription メソッドは、プロファイルの説明を取得します。説明は、プロファイルを何に使用すべきかを記述した文字列です。

pwszDescriptionLPWSTRout説明を格納するワイド文字の null 終端文字列へのポインター。説明に必要な長さを取得するには NULL を渡します。
pcchDescriptionDWORD*inout入力時には、pwszDescription 文字列の長さを指定します。出力時には、メソッドが成功した場合、終端の null 文字を含む名前の文字数へのポインターを指定します。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pcchName パラメーターが NULL です。
ASF_E_BUFFERTOOSMALL
pwszDescription パラメーターが指すバッファーが十分な大きさではありません。
E_UNEXPECTED
原因不明の理由でメソッドが失敗しました。

解説(Remarks)

GetDescription は2回呼び出す必要があります。1回目の呼び出しでは、pwszDescription として NULL を渡します。戻り時に、pcchDescription が指す値には、プロファイルの説明を保持するために必要なワイド文字数(終端の null 文字を含む)が設定されます。その後、文字列に必要な量のメモリを割り当て、2回目の呼び出しでそのポインターを pwszDescription として渡すことができます。

vtbl 7 HRESULT SetDescription(LPWSTR pwszDescription)

SetDescription メソッドは、プロファイルの説明を指定します。説明は、プロファイルを何に使用すべきかを記述した文字列です。

pwszDescriptionLPWSTRin説明を格納するワイド文字の null 終端文字列へのポインター。プロファイルの説明は1024ワイド文字までに制限されます。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pwszDescription パラメーターが NULL です。
vtbl 8 HRESULT GetStreamCount(DWORD* pcStreams)

GetStreamCount メソッドは、プロファイル内のストリーム数を取得します。

pcStreamsDWORD*outストリーム数へのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pcStreams パラメーターが NULL です。
vtbl 9 HRESULT GetStream(DWORD dwStreamIndex, IWMStreamConfig** ppConfig)

GetStream メソッドは、プロファイルからストリームを取得します。

dwStreamIndexDWORDinストリームのインデックスを格納する DWORD
ppConfigIWMStreamConfig**out指定したストリームを記述するストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインターへのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_FAIL
原因不明の理由でメソッドが失敗しました。
E_INVALIDARG
ppConfig または dwStreamIndex パラメーターが有効ではありません。

解説(Remarks)

このメソッドを GetStreamCount と組み合わせて使用すると、プロファイル内のすべてのストリームを順に処理できます。

vtbl 10 HRESULT GetStreamByNumber(WORD wStreamNum, IWMStreamConfig** ppConfig)

GetStreamByNumber メソッドは、プロファイルからストリームを取得します。

wStreamNumWORDinストリーム番号を格納する WORD
ppConfigIWMStreamConfig**out指定したストリームを記述するストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインターへのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
ppConfig パラメーターが NULL です。
NS_E_NO_STREAM
wStreamNum パラメーターが有効ではありません。
E_FAIL
原因不明の理由でメソッドが失敗しました。

解説(Remarks)

ストリーム番号は1から63の範囲です。

vtbl 11 HRESULT RemoveStream(IWMStreamConfig* pConfig)

RemoveStream メソッドは、プロファイルからストリームを削除します。

pConfigIWMStreamConfig*in削除するストリームを記述するストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_UNEXPECTED
原因不明の理由でメソッドが失敗しました。
E_INVALIDARG
pConfig パラメーターが NULL であるか、有効ではありません。
vtbl 12 HRESULT RemoveStreamByNumber(WORD wStreamNum)

RemoveStreamByNumber メソッドは、プロファイルからストリームを削除します。

wStreamNumWORDinストリーム番号を格納する WORD

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_FAIL
原因不明の理由でメソッドが失敗しました。
NS_E_NO_STREAM
wStreamNum の値に一致するストリームが見つかりませんでした。

解説(Remarks)

ストリームは、相互排他オブジェクトなど、プロファイル内の他のオブジェクトに含まれている場合があります。このメソッドは、プロファイル内のすべてのオブジェクトから、指定したストリームへのすべての参照を削除します。

ストリーム番号は1から63の範囲です。

vtbl 13 HRESULT AddStream(IWMStreamConfig* pConfig)

AddStream メソッドは、ストリーム構成の詳細をプロファイルにコピーすることで、プロファイルにストリームを追加します。

pConfigIWMStreamConfig*inプロファイルに追加するストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインター。このメソッドでストリームをプロファイルに追加する前に、IWMStreamConfig インターフェースのメソッドを使用してストリームを構成しておく必要があります。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pConfig パラメーターが NULL です。
E_OUTOFMEMORY
使用可能なメモリが不足しています。
E_FAIL
原因不明の理由でメソッドが失敗しました。
NS_E_INVALID_STREAM
ストリームが有効ではありません。有効なストリーム番号を持っていないことが原因の可能性があります。

解説(Remarks)

ストリームを追加すると、その構成がプロファイルにコピーされます。プロファイルには最大63個のストリームを含めることができます。

vtbl 14 HRESULT ReconfigStream(IWMStreamConfig* pConfig)

ReconfigStream メソッドは、ストリーム構成に加えた変更をプロファイルに反映できるようにします。すでにプロファイルに含まれているストリームに変更を加えた場合に、このメソッドを使用します。

pConfigIWMStreamConfig*in再構成するストリームのストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_UNEXPECTED
原因不明の理由でメソッドが失敗しました。
NS_E_INVALID_STREAM
メソッドが処理しているストリームが NULL であるか、有効ではありません。

解説(Remarks)

すでにプロファイルに追加されているストリームを取得するには、IWMProfile::GetStream または IWMProfile::GetStreamByNumber のいずれかを呼び出すことができます。

IWMProfile::CreateNewStream を呼び出して新しいストリームを作成した場合は、それをプロファイルに含めるために IWMProfile::AddStream を呼び出す必要があります。新しいストリームに対して ReconfigStream を呼び出すと、エラーになります。

ストリーム構成オブジェクトを更新しても、アプリケーションが ReconfigStream を呼び出すまではプロファイルに影響しません。

vtbl 15 HRESULT CreateNewStream(GUID* guidStreamType, IWMStreamConfig** ppConfig)

CreateNewStream メソッドは、ストリーム構成オブジェクトを作成します。ストリーム構成オブジェクトを使用して、メディアストリームの特性を定義できます。

guidStreamTypeGUID*in作成するストリームのメジャーメディアタイプを指定する GUID オブジェクト(例: WMMEDIATYPE_Video)。サポートされているメジャータイプは Media Types に記載されています。
ppConfigIWMStreamConfig**out作成されたストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインターへのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
ppConfig パラメーターが NULL です。
E_OUTOFMEMORY
使用可能なメモリが不足しています。

解説(Remarks)

ストリーム構成オブジェクトは、プロファイルの要素としてのみ存在でき、それ以外の形では存在できません。ストリームを構成した後、このオブジェクトは AddStream メソッドを使用してプロファイルに追加する必要があります。

CreateNewStream を呼び出すと、新しいストリームに有効なストリーム番号が指定されます。ストリーム番号は1から63の範囲です。

vtbl 16 HRESULT GetMutualExclusionCount(DWORD* pcME)

GetMutualExclusionCount メソッドは、プロファイル内の相互排他オブジェクトの数を取得します。

pcMEDWORD*out相互排他の数へのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pcME パラメーターが NULL です。
vtbl 17 HRESULT GetMutualExclusion(DWORD dwMEIndex, IWMMutualExclusion** ppME)

GetMutualExclusion メソッドは、プロファイルから相互排他オブジェクトを取得します。

dwMEIndexDWORDin相互排他オブジェクトのインデックスを格納する DWORD
ppMEIWMMutualExclusion**outdwMEIndex として渡されたインデックスで指定される相互排他オブジェクトの IWMMutualExclusion インターフェースへのポインターへのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
この操作に必要なメモリが不足しています。
E_INVALIDARG
ppMENULL であるか、dwMEIndex が利用可能なインデックスの範囲外です。

解説(Remarks)

このメソッドを GetMutualExclusionCount と組み合わせて使用すると、プロファイル内のすべての相互排他オブジェクトを順に処理できます。

vtbl 18 HRESULT RemoveMutualExclusion(IWMMutualExclusion* pME)

RemoveMutualExclusion メソッドは、プロファイルから相互排他オブジェクトを削除します。

pMEIWMMutualExclusion*in削除する相互排他オブジェクトの IWMMutualExclusion インターフェースへのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pcME パラメーターが NULL です。
vtbl 19 HRESULT AddMutualExclusion(IWMMutualExclusion* pME)

AddMutualExclusion メソッドは、プロファイルに相互排他オブジェクトを追加します。相互排他オブジェクトは、一度に1つだけ出力できるストリームのセットを指定するために使用されます。

pMEIWMMutualExclusion*inプロファイルに含める相互排他オブジェクトの IWMMutualExclusion インターフェースへのポインター。このメソッドで相互排他オブジェクトをプロファイルに追加する前に、IWMMutualExclusion インターフェースのメソッドを使用して相互排他オブジェクトを構成しておく必要があります。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
パラメーター pMENULL であるか、相互排他タイプが CLSID_WMMUTEX_Bitrate ではありません。
E_OUTOFMEMORY
この操作を完了するために使用可能なメモリが不足しています。
NS_E_INVALID_STREAM
追加しようとしている相互排他オブジェクト内のストリーム番号が、プロファイルに含まれていません。
vtbl 20 HRESULT CreateNewMutualExclusion(IWMMutualExclusion** ppME)

CreateNewMutualExclusion メソッドは、相互排他オブジェクトを作成します。相互排他オブジェクトは、一度に1つだけ出力できるストリームのセットを指定するために使用されます。

ppMEIWMMutualExclusion**out新しい相互排他オブジェクトの IWMMutualExclusion インターフェースへのポインターへのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
ppME パラメーターが NULL です。

解説(Remarks)

この作成メソッドは、独立した関数ではなく、このインターフェースのメソッドとして含まれています。明確にしておくと、相互排他オブジェクトは、プロファイルの要素としてのみ存在でき、それ以外の形では存在できません。

アプリケーションが相互排他オブジェクトを作成した後、それを構成し、続いて AddMutualExclusion を呼び出して相互排他をプロファイルに追加する必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IWMProfile "{96406BDB-2B2B-11D3-B36B-00C04F6108FF}"
#usecom global IWMProfile IID_IWMProfile "{}"
#comfunc global IWMProfile_GetVersion                3 var
#comfunc global IWMProfile_GetName                   4 var,var
#comfunc global IWMProfile_SetName                   5 wstr
#comfunc global IWMProfile_GetDescription            6 var,var
#comfunc global IWMProfile_SetDescription            7 wstr
#comfunc global IWMProfile_GetStreamCount            8 var
#comfunc global IWMProfile_GetStream                 9 int,sptr
#comfunc global IWMProfile_GetStreamByNumber         10 int,sptr
#comfunc global IWMProfile_RemoveStream              11 sptr
#comfunc global IWMProfile_RemoveStreamByNumber      12 int
#comfunc global IWMProfile_AddStream                 13 sptr
#comfunc global IWMProfile_ReconfigStream            14 sptr
#comfunc global IWMProfile_CreateNewStream           15 var,sptr
#comfunc global IWMProfile_GetMutualExclusionCount   16 var
#comfunc global IWMProfile_GetMutualExclusion        17 int,sptr
#comfunc global IWMProfile_RemoveMutualExclusion     18 sptr
#comfunc global IWMProfile_AddMutualExclusion        19 sptr
#comfunc global IWMProfile_CreateNewMutualExclusion  20 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。