IWMReaderAdvanced4
COM公式ドキュメント
IWMReaderAdvanced4 インターフェースは、リーダーに追加の機能を提供します。IWMReaderAdvanced4 インターフェースは、すべてのリーダーオブジェクトに存在します。
メソッド 9
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetLanguageCount メソッドは、出力がサポートする言語の総数を取得します。複数のサポート言語を持つのは、言語によって相互排他的なストリームに関連付けられた出力のみです。
| dwOutputNum | DWORD | in | 出力番号を格納した DWORD。 |
| pwLanguageCount | WORD* | out | 言語数を格納した WORD へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドを IWMLanguageList::GetLanguageCount と混同しないでください。このメソッドは、特定の出力に対してサポートされる言語を取得します。IWMLanguageList インターフェースのメソッドは、ファイルレベルの言語リストを操作します。個々の出力は、言語リスト内のすべての言語をサポートしているとは限りません。
GetLanguage メソッドは、出力がサポートする言語に関する情報を取得します。出力番号と言語インデックスを指定する必要があり、このメソッドは RFC1766 準拠の言語文字列を返します。
| dwOutputNum | DWORD | in | 言語を特定したい出力の出力番号を格納した DWORD。 |
| wLanguage | WORD | in | 詳細を取得したいサポート言語の言語インデックスを格納した WORD。 |
| pwszLanguageString | LPWSTR | out | RFC1766 準拠の言語文字列を格納した、ワイド文字の null 終端文字列へのポインター。文字列のサイズを取得するには NULL を渡します。サイズは pcbLanguageStringLength で返されます。 |
| pcchLanguageStringLength | WORD* | inout | pwszLanguageString のサイズをワイド文字数で格納した WORD へのポインター。このサイズには終端の null 文字が含まれます。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
出力に使用する言語を設定する際は、g_wszLanguage 設定の値を、このメソッドに wLanguage として渡した言語インデックスに設定する必要があります。言語リストによって割り当てられる言語インデックスは異なるため、使用しないでください。
GetMaxSpeedFactor メソッドは、ソースが配信できる最大再生レートを取得します。ネットワークコンテンツの場合、この値はコンテンツの最大ビットレートに対する利用可能な帯域幅を反映します。
| pdblFactor | DOUBLE* | out | 最大再生レートを受け取る変数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL ポインター引数です。 |
解説(Remarks)
サーバーが Fast Cache ストリーミングを使用している場合、このメソッドは 1.0 を返します。キャッシュされたコンテンツを含むローカルファイルの場合、このメソッドは DBL_MAX を返します。ファイルが開かれていない場合、このメソッドは 0.0 を返します。
IsUsingFastCache メソッドは、リーダーが Fast Cache ストリーミングを使用しているかどうかを問い合わせます。
| pfUsingFastCache | BOOL* | out | ブール値を受け取る変数へのポインター。リーダーが現在 Fast Cache ストリーミングを使用している場合は True、そうでない場合は False になります。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL ポインター引数です。 |
AddLogParam メソッドは、リーダーオブジェクトがサーバーに送信するログ情報に名前付きの値を追加します。
| wszNameSpace | LPWSTR | in | ログエントリの名前空間を格納する省略可能なワイド文字列。このパラメーターは NULL にできます。名前空間名は 1024 ワイド文字までに制限されます。 |
| wszName | LPWSTR | in | ログエントリの名前を格納するワイド文字列。ログエントリ名は 1024 ワイド文字までに制限されます。 |
| wszValue | LPWSTR | in | ログエントリの値を格納するワイド文字列。ログエントリの値は 1024 ワイド文字までに制限されます。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| パラメーターのいずれかが許容される文字列長を超えました。 | |
| メモリが不足しています。 |
解説(Remarks)
リーダーオブジェクトは、XML ストリームの形式でログデータをサーバーに送信します。AddLogParam メソッドを使用すると、クライアントは追加のログエントリを指定できます。wszNameSpace パラメーターを使用して、新しいエントリの XML 名前空間を指定できます。名前空間を指定しない場合は、既定の名前空間が使用されます。ただし、リーダーはサーバーによって既に定義されているログエントリを上書きしませんが、次の例外があります。サーバーが cs-media-role または cs-media-name エントリに空文字列 ("") を指定している場合、これらのエントリを上書きできます。既定では、Windows Media Services 9 Series を実行しているサーバーは、cs-media-role には空文字列を、cs-media-name にはファイル名を送信します。
ログ情報をサーバーに送信するには、SendLogParams メソッドを呼び出します。サーバー上のログエントリを取得するには、Windows Media Services 9 Series SDK を使用してカスタムログプラグインを用意する必要があります。既定のログプラグインは W3C 準拠のログサマリーのみを書き込むため、カスタムログエントリはログに含まれません。
SendLogParams メソッドは、ログエントリを送信元のサーバーに送信します。AddLogParam を呼び出した後にこのメソッドを呼び出します。
戻り値
このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| リーダーはリモートサーバーからコンテンツをストリーミングしていません。 |
CanSaveFileAs メソッドは、リーダーが再生しているコンテンツを IWMReaderAdvanced2::SaveFileAs メソッドを使用して保存できるかどうかを確認します。
| pfCanSave | BOOL* | out | 読み取り中のコンテンツを保存できる場合に True に設定されるブール値へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
CancelSaveFileAs メソッドは、IWMReaderAdvanced2::SaveFileAs の呼び出しによって開始されたファイル保存をキャンセルします。
戻り値
このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 |
GetURL メソッドは、読み取り中のファイルの URL を取得します。リーダーがリダイレクトされている可能性があるため、この URL は IWMReader::Open に渡された URL とは異なる場合があります。
| pwszURL | LPWSTR | out | [ out ] ファイルの URL を格納する、ワイド文字の null 終端文字列へのポインター。 |
| pcchURL | DWORD* | inout | [ in, out ] pwszURL のワイド文字数を格納する変数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL ポインター引数です。 |
解説(Remarks)
このメソッドを 2 回呼び出します。1 回目は、pwszURL の値として NULL を渡します。メソッドは文字列のサイズを pcchURL パラメーターで返します。文字列に必要な量のメモリを割り当ててから、メソッドを再度呼び出します。今度は、割り当てたバッファーへのポインターを pwszURL パラメーターに渡します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMReaderAdvanced4 "{945A76A2-12AE-4D48-BD3C-CD1D90399B85}" #usecom global IWMReaderAdvanced4 IID_IWMReaderAdvanced4 "{}" #comfunc global IWMReaderAdvanced4_GetLanguageCount 40 int,var #comfunc global IWMReaderAdvanced4_GetLanguage 41 int,int,var,var #comfunc global IWMReaderAdvanced4_GetMaxSpeedFactor 42 var #comfunc global IWMReaderAdvanced4_IsUsingFastCache 43 var #comfunc global IWMReaderAdvanced4_AddLogParam 44 wstr,wstr,wstr #comfunc global IWMReaderAdvanced4_SendLogParams 45 #comfunc global IWMReaderAdvanced4_CanSaveFileAs 46 var #comfunc global IWMReaderAdvanced4_CancelSaveFileAs 47 #comfunc global IWMReaderAdvanced4_GetURL 48 var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWMReaderAdvanced4 "{945A76A2-12AE-4D48-BD3C-CD1D90399B85}" #usecom global IWMReaderAdvanced4 IID_IWMReaderAdvanced4 "{}" #comfunc global IWMReaderAdvanced4_GetLanguageCount 40 int,sptr #comfunc global IWMReaderAdvanced4_GetLanguage 41 int,int,sptr,sptr #comfunc global IWMReaderAdvanced4_GetMaxSpeedFactor 42 sptr #comfunc global IWMReaderAdvanced4_IsUsingFastCache 43 sptr #comfunc global IWMReaderAdvanced4_AddLogParam 44 wstr,wstr,wstr #comfunc global IWMReaderAdvanced4_SendLogParams 45 #comfunc global IWMReaderAdvanced4_CanSaveFileAs 46 sptr #comfunc global IWMReaderAdvanced4_CancelSaveFileAs 47 #comfunc global IWMReaderAdvanced4_GetURL 48 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。