IWMLanguageList
COM公式ドキュメント
IWMLanguageList インターフェイスは、ASF ファイルがサポートする言語のリストを管理します。
解説(Remarks)
このインターフェイスは、RFC 1766 (Tags for the Identification of Languages) に準拠した文字列で言語を参照する機能を提供します。この SDK の他のインターフェイスは、ASF ファイルでサポートされる言語を言語インデックスで参照します。言語リストに追加されたすべての言語には、言語インデックスが割り当てられます。
このインターフェイスは、ファイルでサポートされる言語のリストを管理します。ファイルの個々の機能が、リスト内のすべての言語をサポートしているとは限りません。言語によって相互排他となるストリームのセットに関連付けられた出力の再生用に言語を選択する場合は、その相互排他オブジェクトでサポートされている言語を取得する必要があります。特定の出力でサポートされる言語は、IWMReaderAdvanced4 インターフェイスのメソッドを使用して取得できます。
このインターフェイスを使用して複数言語のメタデータを MP3 ファイルに追加する場合、言語文字列の前半部分のみが有効です。たとえば、RFC 1766 識別子 "en-us" は、米国地域における英語を示します。MP3 ファイルに書き込む際、識別子は地域指定のない "en" になります。
RFC 1766 準拠の一般的な言語識別子の一覧については、Language Strings を参照してください。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetLanguageCount メソッドは、言語リスト内でサポートされている言語の総数を取得します。
| pwCount | WORD* | out | 言語リストに存在する言語の総数を格納する WORD へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
RFC 1766 準拠の一般的な言語識別子の一覧については、Language Strings を参照してください。
GetLanguageDetails メソッドは、サポートされている言語のリスト内のエントリについて、RFC 1766 準拠の言語タグを取得します。
| wIndex | WORD | in | 言語リスト内のインデックスを格納する WORD。 |
| pwszLanguageString | LPWSTR | out | wIndex で指定された言語リストエントリの RFC 1766 準拠の言語タグへのポインター。文字列の長さを取得するには NULL を渡します。長さは pcbLanguageStringLength に返されます。 |
| pcchLanguageStringLength | WORD* | inout | 言語文字列の長さ (ワイド文字単位) を格納する WORD へのポインター。この長さには終端の null 文字が含まれます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
RFC 1766 準拠の一般的な言語識別子の一覧については、Language Strings を参照してください。
AddLanguageByRFC1766String メソッドは、RFC 1766 準拠の言語タグに基づいて、ファイルでサポートされる言語のリストにエントリを追加します。
| pwszLanguageString | LPWSTR | in | RFC 1766 準拠の言語タグを格納した、ワイド文字の null 終端文字列へのポインター。 |
| pwIndex | WORD* | out | WORD へのポインター。出力時に、追加された言語エントリに割り当てられたインデックスが設定されます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
RFC 1766 準拠の一般的な言語識別子の一覧については、Language Strings を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMLanguageList "{DF683F00-2D49-4D8E-92B7-FB19F6A0DC57}" #usecom global IWMLanguageList IID_IWMLanguageList "{}" #comfunc global IWMLanguageList_GetLanguageCount 3 var #comfunc global IWMLanguageList_GetLanguageDetails 4 int,var,var #comfunc global IWMLanguageList_AddLanguageByRFC1766String 5 wstr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWMLanguageList "{DF683F00-2D49-4D8E-92B7-FB19F6A0DC57}" #usecom global IWMLanguageList IID_IWMLanguageList "{}" #comfunc global IWMLanguageList_GetLanguageCount 3 sptr #comfunc global IWMLanguageList_GetLanguageDetails 4 int,sptr,sptr #comfunc global IWMLanguageList_AddLanguageByRFC1766String 5 wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。