IWMProfileManager
COM公式ドキュメント
IWMProfileManager インターフェイスは、プロファイルの作成、既存プロファイルの読み込み、およびプロファイルの保存に使用します。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
CreateEmptyProfile メソッドは、空のプロファイルオブジェクトを作成します。プロファイルオブジェクトのインターフェイスを使用して、プロファイルを構成できます。プロファイルの構成が完了したら、IWMProfileManager::SaveProfile を使用して文字列に保存できます。
| dwVersion | WMT_VERSION | in | WMT_VERSION 列挙型のメンバーを 1 つ格納する DWORD。 |
| ppProfile | IWMProfile** | out | IWMProfile インターフェイスへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 使用可能なメモリが不足しています。 | |
| ppProfile パラメーターが NULL です。 |
解説(Remarks)
Windows Media® Audio and Video 9 Series コーデックを使用するプロファイルを作成するには、このメソッドを使用します。詳細については、ストリーム構成の再利用を参照してください。
LoadProfileByID メソッドは、グローバル一意識別子で識別されるシステムプロファイルを読み込みます。カスタムプロファイルを読み込むには、IWMProfileManager::LoadProfileByData を使用します。
| guidProfile | GUID* | in | プロファイルを識別する GUID。詳細については、システムプロファイルの使用にある定義済み定数の表を参照してください。 |
| ppProfile | IWMProfile** | out | IWMProfile インターフェイスへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 使用可能なメモリが不足しています。 | |
| ppProfile パラメーターが NULL です。 |
解説(Remarks)
ID を持つのはシステムプロファイルのみです。Windows Media 9 Series コーデック用のシステムプロファイルは存在しないため、このメソッドは主に、Windows Media 9 Series コーデックを使用してカスタムプロファイルに変換するためのバージョン 8 のシステムプロファイルを取得する用途で役立ちます。詳細については、ストリーム構成の再利用を参照してください。
LoadProfileByData メソッドは、プロファイルオブジェクトを作成し、保存された文字列のデータをそこに設定します。カスタムプロファイルを操作するには、このメソッドを使用する必要があります。システムプロファイルには、LoadProfileByID または LoadSystemProfile のいずれかを使用してアクセスしてください。
| pwszProfile | LPWSTR | in | プロファイルを格納するワイド文字の null 終端文字列へのポインター。プロファイル文字列は 153600 ワイド文字までに制限されます。 |
| ppProfile | IWMProfile** | out | IWMProfile インターフェイスへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 使用可能なメモリが不足しています。 | |
| ppProfile または pwszProfile パラメーターが NULL です。 |
解説(Remarks)
この文字列は、IWMProfileManager::SaveProfile によって作成された XML 形式の文字列と一致する必要があります。慣例として、このような文字列をディスクに保存するときは「.prx」拡張子が付けられます。
SaveProfile メソッドは、プロファイルを XML 形式の文字列に保存します。
| pIWMProfile | IWMProfile* | in | 保存するプロファイルデータを格納するオブジェクトの IWMProfile インターフェイスへのポインター。 |
| pwszProfile | LPWSTR | in | プロファイルを格納するワイド文字の null 終端文字列へのポインター。必要な文字列の長さを取得するには、これを NULL に設定します。 |
| pdwLength | DWORD* | inout | 入力時には、pwszProfile 文字列の長さを指定します。出力時には、メソッドが成功した場合、終端の null 文字を含めてプロファイルの保持に必要な文字数を格納する DWORD へのポインターを指定します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 使用可能なメモリが不足しています。 | |
| pIWMProfile または pdwLength パラメーターが NULL です。 |
解説(Remarks)
SaveProfile は 2 回呼び出す必要があります。1 回目の呼び出しでは、pwszProfile に NULL を渡します。戻り時に、pdwLength の値がプロファイルを文字列形式で保持するために必要な長さに設定されます。その後、バッファーに必要な量のメモリを割り当て、2 回目の呼び出しでそのポインターを pwszProfile として渡すことができます。
この文字列にはプロファイルのすべての情報が含まれています。ユーザーに表示してはならず、変更してもいけません。保存済みプロファイルの設定を変更するには、プロファイルマネージャーを使用して読み込み、プロファイルオブジェクトおよび関連オブジェクトを使用して設定を変更してください。
カスタムプロファイルを後で使用するために保存するには、返された文字列の内容を .prx ファイルに保存する必要があります。.prx ファイルの詳細については、プロファイルを参照してください。
保存済みのカスタムプロファイルを読み込むには、.prx ファイルからプロファイルの内容を文字列にコピーし、IWMProfileManager::LoadProfileByData を使用します。
GetSystemProfileCount メソッドは、システムプロファイルの数を取得します。
| pcProfiles | DWORD* | out | システムプロファイルの数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 使用可能なメモリが不足しています。 | |
| pcProfiles パラメーターが NULL です。 | |
| システムプロファイルが見つかりませんでした。 |
解説(Remarks)
Windows Media 9 Series コーデック用のシステムプロファイルは存在しないため、このメソッドは主に、Windows Media 9 Series コーデックを使用してカスタムプロファイルに変換するためのバージョン 8 のシステムプロファイルを取得する用途で役立ちます。詳細については、ストリーム構成の再利用を参照してください。
このメソッドは、LoadSystemProfile と組み合わせてシステムプロファイルを反復処理するために使用できます。
どのシステムファイルが列挙されるかは、IWMProfileManager2::SetSystemProfileVersion メソッドによって決まります。ほとんどのアプリケーションでは、バージョンを WMT_VER_8_0 に設定する必要があります。バージョンを WMT_VER_9_0 に設定すると、返されるプロファイルは 0 になります。
LoadSystemProfile メソッドは、インデックスで識別されるシステムプロファイルを読み込みます。目的のシステムプロファイルのインデックスがわからない場合は、IWMProfileManager::LoadProfileByID を使用する必要があります。カスタムプロファイルを読み込むには、IWMProfileManager::LoadProfileByData を使用します。
| dwProfileIndex | DWORD | in | プロファイルのインデックスを格納する DWORD。 |
| ppProfile | IWMProfile** | out | IWMProfile インターフェイスへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 使用可能なメモリが不足しています。 | |
| ppProfile パラメーターが NULL です。 |
解説(Remarks)
Windows Media 9 Series コーデック用のシステムプロファイルは存在しないため、このメソッドは主に、Windows Media 9 Series コーデックを使用してカスタムプロファイルに変換するためのバージョン 8 のシステムプロファイルを取得する用途で役立ちます。詳細については、ストリーム構成の再利用を参照してください。
このメソッドは、GetSystemProfileCount と組み合わせてシステムプロファイルを反復処理するために使用できます。
アプリケーションは、(この呼び出しや SDK の他の箇所で使用される)プロファイルのインデックスが一定であることに依存してはなりません。Windows Media Format コンポーネントのアップグレードにより、これらのインデックスが変わることがあります。アプリケーションが固定のプロファイルを維持する必要がある場合は、IWMProfile2::GetProfileID と IWMProfileManager::LoadProfileByID を呼び出す必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMProfileManager "{D16679F2-6CA0-472D-8D31-2F5D55AEE155}" #usecom global IWMProfileManager IID_IWMProfileManager "{}" #comfunc global IWMProfileManager_CreateEmptyProfile 3 int,sptr #comfunc global IWMProfileManager_LoadProfileByID 4 var,sptr #comfunc global IWMProfileManager_LoadProfileByData 5 wstr,sptr #comfunc global IWMProfileManager_SaveProfile 6 sptr,wstr,var #comfunc global IWMProfileManager_GetSystemProfileCount 7 var #comfunc global IWMProfileManager_LoadSystemProfile 8 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWMProfileManager "{D16679F2-6CA0-472D-8D31-2F5D55AEE155}" #usecom global IWMProfileManager IID_IWMProfileManager "{}" #comfunc global IWMProfileManager_CreateEmptyProfile 3 int,sptr #comfunc global IWMProfileManager_LoadProfileByID 4 sptr,sptr #comfunc global IWMProfileManager_LoadProfileByData 5 wstr,sptr #comfunc global IWMProfileManager_SaveProfile 6 sptr,wstr,sptr #comfunc global IWMProfileManager_GetSystemProfileCount 7 sptr #comfunc global IWMProfileManager_LoadSystemProfile 8 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。