IWMPContentPartnerCallback
COM公式ドキュメント
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。
メソッド 13
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。
| type | WMPCallbackNotification | in | 行われる通知の種類。WMPCallbackNotification 列挙体のメンバーとして指定します。 |
| pContext | VARIANT* | in | 通知に対するコンテキスト固有のデータ。「解説」を参照してください。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
type パラメーターに指定できる値と、それに対応する pContext パラメーターの値を次の一覧に示します。
wmpcnLoginStateChange
pContext パラメーターの意味は、その型によって異なります。型は呼び出し元が pContext の vt メンバーで指定します。
pContext パラメーターの型が VT_BOOL の場合、この呼び出しはログインまたはログアウトの試行が成功したことを Windows Media Player に通知します。pContext の boolVal メンバーには、試行が成功した後のユーザーのログイン状態を指定します。VARIANT_TRUE はログインの試行が成功し、ユーザーがログインしていることを示します。VARIANT_FALSE はログアウトの試行が成功し、ユーザーがログアウトしていることを示します。
pContext パラメーターの型が VT_UI4 の場合、この呼び出しはログインの試行が失敗したことを Windows Media Player に通知します。pContext の ulVal メンバーには、その失敗を処理する Web ページのインデックス(オンラインストアが提供)を指定します。Player は、このインデックスをオンラインストアのプラグインが実装する IWMPContentPartner::GetItemInfo に渡すことで、Web ページの URL を取得します。この Web ページのインデックスは Windows Media Player では解釈されず、オンラインストアにとってのみ意味を持つことに注意してください。
ログインおよびログアウトの詳細については、ログインの管理を参照してください。
wmpcnAuthResult
pContext パラメーターの型は VT_BOOL です。この呼び出しは、ユーザーの認証の試行が成功したか失敗したかを Windows Media Player に通知します。VARIANT_TRUE は認証の試行が成功したことを示します。VARIANT_FALSE は認証の試行が失敗したことを示します。
Windows Media Player は、事前に IWMPContentPartner::Authenticate を呼び出して認証の試行を要求しています。
wmpcnNewCatalogAvailable
pContext パラメーターの型は VT_EMPTY です。この呼び出しは、オンラインストアで新しいカタログが利用可能になったことを Windows Media Player に通知します。
wmpcnNewPluginAvailable
pContext パラメーターの型は VT_BOOL です。この呼び出しは、オンラインストアで新しいプラグインが利用可能になったことを Windows Media Player に通知します。pContext の boolVal メンバーには、新しいプラグインが必須かどうかを指定します。VARIANT_TRUE は新しいプラグインが必須であることを示します。VARIANT_FALSE は新しいプラグインが省略可能であることを示します。
wmpcnDisableRadioSkipping
pContext パラメーターの型は VT_EMPTY です。この呼び出しは、現在再生中のメタファイルプレイリスト(ASX ファイル)のスキップを無効にするよう Windows Media Player に通知します。
Windows Media Player は、タイプ 1 のオンラインストアから取得した ASX ファイルを再生する際、トラックがスキップされるたびにオンラインストアに通知します。スキップされたトラック数が許可される最大数に達すると、オンラインストアは wmpcnDisableRadioSkipping を渡して IWMPContentPartnerCallback::Notify を呼び出し、現在再生中の ASX ファイルでこれ以上トラックをスキップしてはならないことを Player に指示します。ASX ファイルに対して許可されるスキップの最大数は、オンラインストアによって決定されます。
Windows Media Player は、bstrStationEventType パラメーターに g_szStationEvent_Skipped を渡して IWMPContentPartner::StationEvent を呼び出すことで、トラックがスキップされたことをオンラインストアに通知します。
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。
| hrResult | HRESULT | in | トランザクションの成功または失敗を示す HRESULT の戻り値コード。 |
| dwBuyCookie | DWORD | in | 購入トランザクションを表すクッキー。この値は、Player が IWMPContentPartner::Buy を呼び出したときに提供されたものです。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
IWMPContentPartner::Buy の呼び出しごとに、BuyComplete を必ず 1 回だけ呼び出す必要があります。何らかの理由で失敗した場合でも、トランザクションが完了したときに BuyComplete を呼び出してください。
購入に関連するすべてのライセンスが配信された後にのみ、成功コードを返してください。
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。
| cookie | DWORD | in | ダウンロードセッションを識別するクッキー。Windows Media Player は、事前に IWMPContentPartner::Download を呼び出して、このクッキーをコンテンツパートナープラグインに提供しています。 |
| bstrTrackURL | LPWSTR | in | ダウンロードするトラックの URL。 |
| dwServiceTrackID | DWORD | in | 対象となるトラックの ID。 |
| bstrDownloadParams | LPWSTR | in | オンラインストアが対象のトラックに関連付けたいデータ。Windows Media Player はこのデータを解釈せず、オンラインストアにとってのみ意味を持ちます。Windows Media Player は、IWMPContentPartner::DownloadTrackComplete を呼び出すときに、このデータをオンラインストアに返します。 |
| hrDownload | HRESULT | in | トラックをダウンロードするかどうかを指定する HRESULT。成功コードは Player がトラックをダウンロードすべきであることを、失敗コードは Player がトラックをダウンロードすべきでないことを示します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
Player とプラグインが連携して一連のトラックをダウンロードする仕組みについては、メディアコンテンツのダウンロードを参照してください。
このメソッドは、ファイルのライセンスが事前に配信された後にのみ呼び出す必要があります。ダウンロードが完了すると、ファイルはユーザーの [ミュージック] フォルダーに配置され、自動的にライブラリに追加されます。
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。
| pdwVersion | DWORD* | out | カタログのバージョンを受け取る DWORD のアドレス。 |
| pdwSchemaVersion | DWORD* | out | スキーマのバージョンを受け取る DWORD のアドレス。 |
| plcid | DWORD* | out | カタログのロケール ID を受け取る LCID のアドレス。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。
| bstrDeviceName | LPWSTR | in | デバイス名を格納した文字列。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、デバイスの更新が完了した後、UpdateDevice への応答として呼び出す必要があります。
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。オンラインストアのコンテキスト以外でこの機能を使用することはサポートされていません。ChangeView メソッドは、Windows Media Player のビューを変更します。
| bstrType | LPWSTR | in | 新しいライブラリビューの種類を指定する ライブラリの場所の定数。たとえば、定数 g_szGenreID は、新しいビューに特定のジャンルを表示することを指定します。 |
| bstrID | LPWSTR | in | 新しいビューに表示する特定の項目の ID。たとえば、bstrType が g_szGenreID の場合、このパラメーターは新しいビューに表示する特定のジャンルの ID を指定します。 |
| bstrFilter | LPWSTR | in | 新しいビューのフィルター。ユーザーが Player のワードホイールコントロールにこのテキストを入力した場合と同じようにビューがフィルター処理されます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、ユーザーがコンテキストメニュー項目をクリックしてコマンドを実行した場合など、ユーザーの要求に応答する場合にのみ呼び出す必要があります。
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。オンラインストアのコンテキスト以外でこの機能を使用することはサポートされていません。AddListContents メソッドは、一連のメディア項目をリストに追加します。
| dwListCookie | DWORD | in | リスト取得セッションを識別するクッキー。Windows Media Player は、事前に IWMPContentPartner::GetListContents を呼び出して、このクッキーをコンテンツパートナープラグインに提供しています。 |
| cItems | DWORD | in | リストに追加する項目の数。これは prgItems 配列の要素数です。 |
| prgItems | DWORD* | in | メディア項目 ID の配列へのポインター。これらは、リストに追加されるメディア項目の ID です。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。
| dwListCookie | DWORD | in | リスト取得セッションを識別するクッキー。Windows Media Player は、事前に IWMPContentPartner::GetListContents を呼び出して、このクッキーをコンテンツパートナープラグインに提供しています。 |
| hrSuccess | HRESULT | in | リストコンテンツ全体の転送が成功したかどうかを示す HRESULT。成功コードは転送が成功したことを、エラーコードは転送が失敗したことを示します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
Windows Media Player は、IWMPContentPartner::GetListContents を呼び出してリストコンテンツの取得を開始します。これにより非同期操作が開始され、オンラインストアのプラグインは IWMPContentPartnerCallback::AddListContents を 1 回以上呼び出して、要求されたデータを Player に渡す必要があります。最後にプラグインは ListContentsComplete を呼び出して、すべてのデータが提供されたことを Player に通知する必要があります。
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。
| bstrMsg | LPWSTR | in | メッセージを格納した BSTR。「解説」を参照してください。 |
| bstrParam | LPWSTR | in | メッセージのパラメーターを格納した BSTR。 |
| bstrResult | LPWSTR | in | 結果を格納した BSTR。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
SendMessageComplete メソッドは、ディスカバリーページからコンテンツパートナープラグインへメッセージを渡すために呼び出される一連のメソッドの一部です。呼び出しの連鎖を次の一覧に示します。
- ディスカバリーページは、2 つの文字列パラメーター Msg と Param を持つ External.sendMessage を呼び出します。これら 2 つの文字列はオンラインストアにとってのみ意味を持ち、Windows Media Player では解釈されません。
- Windows Media Player は、IWMPContentPartner::SendMessage を呼び出して、2 つの文字列(Msg と Param)をプラグインに渡します。
- オンラインストアがメッセージの処理を終えると、同じ 2 つの文字列を IWMPContentPartnerCallback::SendMessageComplete を呼び出して Windows Media Player に返します。また、メッセージ処理の試行結果を示す 3 つ目の文字列も SendMessageComplete に渡します。
- Windows Media Player は、External.OnSendMessageComplete イベントを発生させて、3 つの文字列すべてをディスカバリーページに返します。
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。
| pcContentIDs | DWORD* | out | pprgIDs 配列の要素数を受け取ります。 |
| pprgIDs | DWORD** | out | コンテンツ ID の配列へのポインターを受け取ります。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは ULONG の配列を割り当て、その配列にコンテンツ ID を格納し、配列のアドレスを出力パラメーター pprgIDs に返します。呼び出し元は、配列の使用が終わったら、CoTaskMemFree を呼び出して配列を解放する必要があります。
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。
| dwCookie | DWORD | in | メディアファイルのライセンスを更新する要求を表すクッキー。Windows Media Player は、事前に IWMPContentPartner::RefreshLicense を呼び出して、このクッキーをオンラインストアのプラグインに提供しています。 |
| contentID | DWORD | in | ライセンスの更新が要求されたメディアファイルのコンテンツ ID。 |
| hrRefresh | HRESULT | in | ライセンスの更新が成功したかどうかを示す HRESULT。成功コードは更新が成功したことを、失敗コードは更新が失敗したことを示します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
Windows Media Player は、プラグインの RefreshLicense メソッドを呼び出してライセンスの更新を要求します。このメソッドは更新を開始し、すぐに制御を返します。オンラインストアが更新要求の処理を終えると、プラグインは RefreshLicenseComplete を呼び出します。
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。
| lIndex | INT | in | ダイアログボックスに表示する Web ページのインデックス。オンラインストアにとってのみ意味を持ちます。 |
| bstrParameters | LPWSTR | in | ダイアログボックスに関連付けられたパラメーター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
Windows Media Player は、pContext パラメーターに lIndex の値を渡して IWMPContentPartner::GetItemInfo を呼び出し、URL を取得します。次に Windows Media Player は、bstrParameters の値を URL に追加し、追加したパラメーターを含む URL を使用して、ダイアログボックスに表示する Web ページを取得します。
bstrParameters パラメーターを使用して、ポップアップウィンドウのサイズを指定できます。たとえば、bstrParameters に "DlgX=800&DlgY=400" を設定すると、ポップアップウィンドウのサイズは 800 ピクセル × 400 ピクセルになります。
メモ このセクションでは、オンラインストアでの使用を想定した機能について説明します。
| bstrPermission | LPWSTR | in | 許可が要求されたアクションを指定する BSTR。Windows Media Player は、事前に IWMPContentPartner::VerifyPermission を呼び出して、このアクションを実行する許可を要求しています。指定できる値の一覧については「解説」を参照してください。 |
| pContext | VARIANT* | in | 通知に関連する情報を格納した VARIANT へのポインター。「解説」を参照してください。 |
| hrPermission | HRESULT | in | 許可が付与されたかどうかを示す HRESULT。成功コードは許可が付与されたことを、失敗コードは許可が拒否されたことを示します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
bstrPermission に指定できる値と、それに対応する pContext の意味を次の一覧に示します。
g_szVerifyPermissionSync
Windows Media Player は、事前に IWMPContentPartner::VerifyPermission を呼び出して、ポータブルデバイス上のコンテンツを同期する許可を要求しています。その呼び出しで、Windows Media Player は pContext パラメーターに正規のデバイス名を指定しました。オンラインストアは、VerifyPermissionComplete の pContext パラメーターに同じ正規のデバイス名を指定します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMPContentPartnerCallback "{9E8F7DA2-0695-403C-B697-DA10FAFAA676}" #usecom global IWMPContentPartnerCallback IID_IWMPContentPartnerCallback "{}" #comfunc global IWMPContentPartnerCallback_Notify 3 int,var #comfunc global IWMPContentPartnerCallback_BuyComplete 4 int,int #comfunc global IWMPContentPartnerCallback_DownloadTrack 5 int,wstr,int,wstr,int #comfunc global IWMPContentPartnerCallback_GetCatalogVersion 6 var,var,var #comfunc global IWMPContentPartnerCallback_UpdateDeviceComplete 7 wstr #comfunc global IWMPContentPartnerCallback_ChangeView 8 wstr,wstr,wstr #comfunc global IWMPContentPartnerCallback_AddListContents 9 int,int,var #comfunc global IWMPContentPartnerCallback_ListContentsComplete 10 int,int #comfunc global IWMPContentPartnerCallback_SendMessageComplete 11 wstr,wstr,wstr #comfunc global IWMPContentPartnerCallback_GetContentIDsInLibrary 12 var,var #comfunc global IWMPContentPartnerCallback_RefreshLicenseComplete 13 int,int,int #comfunc global IWMPContentPartnerCallback_ShowPopup 14 int,wstr #comfunc global IWMPContentPartnerCallback_VerifyPermissionComplete 15 wstr,var,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWMPContentPartnerCallback "{9E8F7DA2-0695-403C-B697-DA10FAFAA676}" #usecom global IWMPContentPartnerCallback IID_IWMPContentPartnerCallback "{}" #comfunc global IWMPContentPartnerCallback_Notify 3 int,sptr #comfunc global IWMPContentPartnerCallback_BuyComplete 4 int,int #comfunc global IWMPContentPartnerCallback_DownloadTrack 5 int,wstr,int,wstr,int #comfunc global IWMPContentPartnerCallback_GetCatalogVersion 6 sptr,sptr,sptr #comfunc global IWMPContentPartnerCallback_UpdateDeviceComplete 7 wstr #comfunc global IWMPContentPartnerCallback_ChangeView 8 wstr,wstr,wstr #comfunc global IWMPContentPartnerCallback_AddListContents 9 int,int,sptr #comfunc global IWMPContentPartnerCallback_ListContentsComplete 10 int,int #comfunc global IWMPContentPartnerCallback_SendMessageComplete 11 wstr,wstr,wstr #comfunc global IWMPContentPartnerCallback_GetContentIDsInLibrary 12 sptr,sptr #comfunc global IWMPContentPartnerCallback_RefreshLicenseComplete 13 int,int,int #comfunc global IWMPContentPartnerCallback_ShowPopup 14 int,wstr #comfunc global IWMPContentPartnerCallback_VerifyPermissionComplete 15 wstr,sptr,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。