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

IWMReaderAdvanced4

COM
IID945a76a2-12ae-4d48-bd3c-cd1d90399b85継承元IWMReaderAdvanced3自前メソッド開始 vtbl40

公式ドキュメント

IWMReaderAdvanced4 インターフェースは、リーダーに追加の機能を提供します。IWMReaderAdvanced4 インターフェースは、すべてのリーダーオブジェクトに存在します。

メソッド 9

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

vtbl 40 HRESULT GetLanguageCount(DWORD dwOutputNum, WORD* pwLanguageCount)

GetLanguageCount メソッドは、出力がサポートする言語の総数を取得します。複数のサポート言語を持つのは、言語によって相互排他的なストリームに関連付けられた出力のみです。

dwOutputNumDWORDin出力番号を格納した DWORD
pwLanguageCountWORD*out言語数を格納した WORD へのポインター。

戻り値

このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

このメソッドを IWMLanguageList::GetLanguageCount と混同しないでください。このメソッドは、特定の出力に対してサポートされる言語を取得します。IWMLanguageList インターフェースのメソッドは、ファイルレベルの言語リストを操作します。個々の出力は、言語リスト内のすべての言語をサポートしているとは限りません。

vtbl 41 HRESULT GetLanguage(DWORD dwOutputNum, WORD wLanguage, LPWSTR pwszLanguageString, WORD* pcchLanguageStringLength)

GetLanguage メソッドは、出力がサポートする言語に関する情報を取得します。出力番号と言語インデックスを指定する必要があり、このメソッドは RFC1766 準拠の言語文字列を返します。

dwOutputNumDWORDin言語を特定したい出力の出力番号を格納した DWORD
wLanguageWORDin詳細を取得したいサポート言語の言語インデックスを格納した WORD
pwszLanguageStringLPWSTRoutRFC1766 準拠の言語文字列を格納した、ワイド文字の null 終端文字列へのポインター。文字列のサイズを取得するには NULL を渡します。サイズは pcbLanguageStringLength で返されます。
pcchLanguageStringLengthWORD*inoutpwszLanguageString のサイズをワイド文字数で格納した WORD へのポインター。このサイズには終端の null 文字が含まれます。

戻り値

このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

出力に使用する言語を設定する際は、g_wszLanguage 設定の値を、このメソッドに wLanguage として渡した言語インデックスに設定する必要があります。言語リストによって割り当てられる言語インデックスは異なるため、使用しないでください。

vtbl 42 HRESULT GetMaxSpeedFactor(DOUBLE* pdblFactor)

GetMaxSpeedFactor メソッドは、ソースが配信できる最大再生レートを取得します。ネットワークコンテンツの場合、この値はコンテンツの最大ビットレートに対する利用可能な帯域幅を反映します。

pdblFactorDOUBLE*out最大再生レートを受け取る変数へのポインター。

戻り値

このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
NULL ポインター引数です。

解説(Remarks)

サーバーが Fast Cache ストリーミングを使用している場合、このメソッドは 1.0 を返します。キャッシュされたコンテンツを含むローカルファイルの場合、このメソッドは DBL_MAX を返します。ファイルが開かれていない場合、このメソッドは 0.0 を返します。

vtbl 43 HRESULT IsUsingFastCache(BOOL* pfUsingFastCache)

IsUsingFastCache メソッドは、リーダーが Fast Cache ストリーミングを使用しているかどうかを問い合わせます。

pfUsingFastCacheBOOL*outブール値を受け取る変数へのポインター。リーダーが現在 Fast Cache ストリーミングを使用している場合は True、そうでない場合は False になります。

戻り値

このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
NULL ポインター引数です。
vtbl 44 HRESULT AddLogParam(LPWSTR wszNameSpace, LPWSTR wszName, LPWSTR wszValue)

AddLogParam メソッドは、リーダーオブジェクトがサーバーに送信するログ情報に名前付きの値を追加します。

wszNameSpaceLPWSTRinログエントリの名前空間を格納する省略可能なワイド文字列。このパラメーターは NULL にできます。名前空間名は 1024 ワイド文字までに制限されます。
wszNameLPWSTRinログエントリの名前を格納するワイド文字列。ログエントリ名は 1024 ワイド文字までに制限されます。
wszValueLPWSTRinログエントリの値を格納するワイド文字列。ログエントリの値は 1024 ワイド文字までに制限されます。

戻り値

このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
パラメーターのいずれかが許容される文字列長を超えました。
E_OUTOFMEMORY
メモリが不足しています。

解説(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 準拠のログサマリーのみを書き込むため、カスタムログエントリはログに含まれません。

vtbl 45 HRESULT SendLogParams()

SendLogParams メソッドは、ログエントリを送信元のサーバーに送信します。AddLogParam を呼び出した後にこのメソッドを呼び出します。

戻り値

このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
S_FALSE
リーダーはリモートサーバーからコンテンツをストリーミングしていません。
vtbl 46 HRESULT CanSaveFileAs(BOOL* pfCanSave)

CanSaveFileAs メソッドは、リーダーが再生しているコンテンツを IWMReaderAdvanced2::SaveFileAs メソッドを使用して保存できるかどうかを確認します。

pfCanSaveBOOL*out読み取り中のコンテンツを保存できる場合に True に設定されるブール値へのポインター。

戻り値

このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
vtbl 47 HRESULT CancelSaveFileAs()

CancelSaveFileAs メソッドは、IWMReaderAdvanced2::SaveFileAs の呼び出しによって開始されたファイル保存をキャンセルします。

戻り値

このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
vtbl 48 HRESULT GetURL(LPWSTR pwszURL, DWORD* pcchURL)

GetURL メソッドは、読み取り中のファイルの URL を取得します。リーダーがリダイレクトされている可能性があるため、この URL は IWMReader::Open に渡された URL とは異なる場合があります。

pwszURLLPWSTRout[ out ] ファイルの URL を格納する、ワイド文字の null 終端文字列へのポインター。
pcchURLDWORD*inout[ in, out ] pwszURL のワイド文字数を格納する変数へのポインター。

戻り値

このメソッドは HRESULT を返します。指定可能な値には次の表の値が含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
NULL ポインター引数です。

解説(Remarks)

このメソッドを 2 回呼び出します。1 回目は、pwszURL の値として NULL を渡します。メソッドは文字列のサイズを pcchURL パラメーターで返します。文字列に必要な量のメモリを割り当ててから、メソッドを再度呼び出します。今度は、割り当てたバッファーへのポインターを pwszURL パラメーターに渡します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 方式にも切替可。