IWMProfile
COM公式ドキュメント
IWMProfile インターフェースは、プロファイルオブジェクトの主要なインターフェースです。
メソッド 18
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetVersion メソッドは、プロファイルの作成に使用された Windows Media Format SDK のバージョン番号を取得します。
| pdwVersion | WMT_VERSION* | out | WMT_VERSION 列挙型のメンバーの1つを格納する DWORD へのポインター。この値は、プロファイルの作成に使用された Windows Media Format SDK のバージョンを指定します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pdwVersion パラメーターが NULL です。 |
解説(Remarks)
バージョン番号は、ファイル内のコンテンツのエンコードに使用された Windows Media コーデックのバージョンを示します。下位互換性が特に必要な場合を除き、常に最新のコーデックを使用してください。
GetName メソッドは、プロファイルの名前を取得します。
| pwszName | LPWSTR | out | 名前を格納するワイド文字の null 終端文字列へのポインター。名前の長さを取得するには NULL を渡します。 |
| pcchName | DWORD* | inout | 入力時には、pwszName バッファーの長さを指定します。出力時には、メソッドが成功した場合、終端の null 文字を含む名前の長さへのポインターを指定します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pcchName パラメーターが NULL です。 | |
|
pwszName パラメーターが十分な大きさではありません。 |
| 原因不明の理由でメソッドが失敗しました。 |
解説(Remarks)
GetName は2回呼び出す必要があります。1回目の呼び出しでは、pwszName として NULL を渡します。戻り時に、pcchName が指す値には、プロファイル名を保持するために必要なワイド文字数(終端の null 文字を含む)が設定されます。その後、文字列に必要な量のメモリを割り当て、2回目の呼び出しでそのポインターを pwszName として渡すことができます。
プロファイルには、プロファイルの一覧を表示する際に使用される名前と説明があります。
SetName メソッドは、プロファイルの名前を指定します。
| pwszName | LPWSTR | in | 名前を格納するワイド文字の null 終端文字列へのポインター。プロファイル名は256ワイド文字までに制限されます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pwszName パラメーターが NULL です。 |
解説(Remarks)
プロファイルには、プロファイルの一覧を表示する際に使用される名前と説明があります。
GetDescription メソッドは、プロファイルの説明を取得します。説明は、プロファイルを何に使用すべきかを記述した文字列です。
| pwszDescription | LPWSTR | out | 説明を格納するワイド文字の null 終端文字列へのポインター。説明に必要な長さを取得するには NULL を渡します。 |
| pcchDescription | DWORD* | inout | 入力時には、pwszDescription 文字列の長さを指定します。出力時には、メソッドが成功した場合、終端の null 文字を含む名前の文字数へのポインターを指定します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pcchName パラメーターが NULL です。 | |
|
pwszDescription パラメーターが指すバッファーが十分な大きさではありません。 |
| 原因不明の理由でメソッドが失敗しました。 |
解説(Remarks)
GetDescription は2回呼び出す必要があります。1回目の呼び出しでは、pwszDescription として NULL を渡します。戻り時に、pcchDescription が指す値には、プロファイルの説明を保持するために必要なワイド文字数(終端の null 文字を含む)が設定されます。その後、文字列に必要な量のメモリを割り当て、2回目の呼び出しでそのポインターを pwszDescription として渡すことができます。
SetDescription メソッドは、プロファイルの説明を指定します。説明は、プロファイルを何に使用すべきかを記述した文字列です。
| pwszDescription | LPWSTR | in | 説明を格納するワイド文字の null 終端文字列へのポインター。プロファイルの説明は1024ワイド文字までに制限されます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pwszDescription パラメーターが NULL です。 |
GetStreamCount メソッドは、プロファイル内のストリーム数を取得します。
| pcStreams | DWORD* | out | ストリーム数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pcStreams パラメーターが NULL です。 |
GetStream メソッドは、プロファイルからストリームを取得します。
| dwStreamIndex | DWORD | in | ストリームのインデックスを格納する DWORD。 |
| ppConfig | IWMStreamConfig** | out | 指定したストリームを記述するストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 原因不明の理由でメソッドが失敗しました。 | |
| ppConfig または dwStreamIndex パラメーターが有効ではありません。 |
解説(Remarks)
このメソッドを GetStreamCount と組み合わせて使用すると、プロファイル内のすべてのストリームを順に処理できます。
GetStreamByNumber メソッドは、プロファイルからストリームを取得します。
| wStreamNum | WORD | in | ストリーム番号を格納する WORD。 |
| ppConfig | IWMStreamConfig** | out | 指定したストリームを記述するストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ppConfig パラメーターが NULL です。 | |
| wStreamNum パラメーターが有効ではありません。 | |
| 原因不明の理由でメソッドが失敗しました。 |
解説(Remarks)
ストリーム番号は1から63の範囲です。
RemoveStream メソッドは、プロファイルからストリームを削除します。
| pConfig | IWMStreamConfig* | in | 削除するストリームを記述するストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 原因不明の理由でメソッドが失敗しました。 | |
| pConfig パラメーターが NULL であるか、有効ではありません。 |
RemoveStreamByNumber メソッドは、プロファイルからストリームを削除します。
| wStreamNum | WORD | in | ストリーム番号を格納する WORD。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 原因不明の理由でメソッドが失敗しました。 | |
| wStreamNum の値に一致するストリームが見つかりませんでした。 |
解説(Remarks)
ストリームは、相互排他オブジェクトなど、プロファイル内の他のオブジェクトに含まれている場合があります。このメソッドは、プロファイル内のすべてのオブジェクトから、指定したストリームへのすべての参照を削除します。
ストリーム番号は1から63の範囲です。
AddStream メソッドは、ストリーム構成の詳細をプロファイルにコピーすることで、プロファイルにストリームを追加します。
| pConfig | IWMStreamConfig* | in | プロファイルに追加するストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインター。このメソッドでストリームをプロファイルに追加する前に、IWMStreamConfig インターフェースのメソッドを使用してストリームを構成しておく必要があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pConfig パラメーターが NULL です。 | |
| 使用可能なメモリが不足しています。 | |
| 原因不明の理由でメソッドが失敗しました。 | |
| ストリームが有効ではありません。有効なストリーム番号を持っていないことが原因の可能性があります。 |
解説(Remarks)
ストリームを追加すると、その構成がプロファイルにコピーされます。プロファイルには最大63個のストリームを含めることができます。
ReconfigStream メソッドは、ストリーム構成に加えた変更をプロファイルに反映できるようにします。すでにプロファイルに含まれているストリームに変更を加えた場合に、このメソッドを使用します。
| pConfig | IWMStreamConfig* | in | 再構成するストリームのストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 原因不明の理由でメソッドが失敗しました。 | |
| メソッドが処理しているストリームが NULL であるか、有効ではありません。 |
解説(Remarks)
すでにプロファイルに追加されているストリームを取得するには、IWMProfile::GetStream または IWMProfile::GetStreamByNumber のいずれかを呼び出すことができます。
IWMProfile::CreateNewStream を呼び出して新しいストリームを作成した場合は、それをプロファイルに含めるために IWMProfile::AddStream を呼び出す必要があります。新しいストリームに対して ReconfigStream を呼び出すと、エラーになります。
ストリーム構成オブジェクトを更新しても、アプリケーションが ReconfigStream を呼び出すまではプロファイルに影響しません。
CreateNewStream メソッドは、ストリーム構成オブジェクトを作成します。ストリーム構成オブジェクトを使用して、メディアストリームの特性を定義できます。
| guidStreamType | GUID* | in | 作成するストリームのメジャーメディアタイプを指定する GUID オブジェクト(例: WMMEDIATYPE_Video)。サポートされているメジャータイプは Media Types に記載されています。 |
| ppConfig | IWMStreamConfig** | out | 作成されたストリーム構成オブジェクトの IWMStreamConfig インターフェースへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ppConfig パラメーターが NULL です。 | |
| 使用可能なメモリが不足しています。 |
解説(Remarks)
ストリーム構成オブジェクトは、プロファイルの要素としてのみ存在でき、それ以外の形では存在できません。ストリームを構成した後、このオブジェクトは AddStream メソッドを使用してプロファイルに追加する必要があります。
CreateNewStream を呼び出すと、新しいストリームに有効なストリーム番号が指定されます。ストリーム番号は1から63の範囲です。
GetMutualExclusionCount メソッドは、プロファイル内の相互排他オブジェクトの数を取得します。
| pcME | DWORD* | out | 相互排他の数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pcME パラメーターが NULL です。 |
GetMutualExclusion メソッドは、プロファイルから相互排他オブジェクトを取得します。
| dwMEIndex | DWORD | in | 相互排他オブジェクトのインデックスを格納する DWORD。 |
| ppME | IWMMutualExclusion** | out | dwMEIndex として渡されたインデックスで指定される相互排他オブジェクトの IWMMutualExclusion インターフェースへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| この操作に必要なメモリが不足しています。 | |
| ppME が NULL であるか、dwMEIndex が利用可能なインデックスの範囲外です。 |
解説(Remarks)
このメソッドを GetMutualExclusionCount と組み合わせて使用すると、プロファイル内のすべての相互排他オブジェクトを順に処理できます。
RemoveMutualExclusion メソッドは、プロファイルから相互排他オブジェクトを削除します。
| pME | IWMMutualExclusion* | in | 削除する相互排他オブジェクトの IWMMutualExclusion インターフェースへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pcME パラメーターが NULL です。 |
AddMutualExclusion メソッドは、プロファイルに相互排他オブジェクトを追加します。相互排他オブジェクトは、一度に1つだけ出力できるストリームのセットを指定するために使用されます。
| pME | IWMMutualExclusion* | in | プロファイルに含める相互排他オブジェクトの IWMMutualExclusion インターフェースへのポインター。このメソッドで相互排他オブジェクトをプロファイルに追加する前に、IWMMutualExclusion インターフェースのメソッドを使用して相互排他オブジェクトを構成しておく必要があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| パラメーター pME が NULL であるか、相互排他タイプが CLSID_WMMUTEX_Bitrate ではありません。 | |
| この操作を完了するために使用可能なメモリが不足しています。 | |
| 追加しようとしている相互排他オブジェクト内のストリーム番号が、プロファイルに含まれていません。 |
CreateNewMutualExclusion メソッドは、相互排他オブジェクトを作成します。相互排他オブジェクトは、一度に1つだけ出力できるストリームのセットを指定するために使用されます。
| ppME | IWMMutualExclusion** | out | 新しい相互排他オブジェクトの IWMMutualExclusion インターフェースへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ppME パラメーターが NULL です。 |
解説(Remarks)
この作成メソッドは、独立した関数ではなく、このインターフェースのメソッドとして含まれています。明確にしておくと、相互排他オブジェクトは、プロファイルの要素としてのみ存在でき、それ以外の形では存在できません。
アプリケーションが相互排他オブジェクトを作成した後、それを構成し、続いて AddMutualExclusion を呼び出して相互排他をプロファイルに追加する必要があります。
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 指定が可能。#define global IID_IWMProfile "{96406BDB-2B2B-11D3-B36B-00C04F6108FF}" #usecom global IWMProfile IID_IWMProfile "{}" #comfunc global IWMProfile_GetVersion 3 sptr #comfunc global IWMProfile_GetName 4 sptr,sptr #comfunc global IWMProfile_SetName 5 wstr #comfunc global IWMProfile_GetDescription 6 sptr,sptr #comfunc global IWMProfile_SetDescription 7 wstr #comfunc global IWMProfile_GetStreamCount 8 sptr #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 sptr,sptr #comfunc global IWMProfile_GetMutualExclusionCount 16 sptr #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が無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。