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

IWMPSubscriptionService

COM
IID376055f8-2a59-4a73-9501-dca5273a7a10継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Note このセクションでは、オンライン ストアでの使用を目的とした機能について説明します。

メソッド 4

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

vtbl 3 HRESULT allowPlay(HWND hwnd, IWMPMedia* pMedia, BOOL* pfAllowPlay)

Note このセクションでは、オンライン ストアでの使用を目的とした機能について説明します。

hwndHWNDinプラグインがユーザー インターフェイスを表示できるウィンドウのハンドル。
pMediaIWMPMedia*inWindows Media Player が再生しようとしているメディア オブジェクトへのポインター。
pfAllowPlayBOOL*inoutBOOL へのポインター。true の場合、再生が許可されます。

戻り値

このメソッドは HRESULT を返します。

解説(Remarks)

Windows Media Player がこのメソッドを呼び出したときに、コードで時間のかかる処理を同期的に実行しないでください。代わりに、時間のかかるタスクは別のワーカー スレッドで実行する必要があります。

Windows Media Player は、デジタル メディア ファイルを開く前に allowPlay を呼び出します。これにより、オンライン ストアは、ライセンスされたコンテンツの再生を禁止したり、ライセンスの有効期限が切れている場合に新しいライセンスのダウンロードを開始したりする機会を得られます。

Windows Media Player が allowPlay を呼び出す時点ではデジタル メディア ファイルが開かれていないため、pMedia に対する特定のメソッドの呼び出しが機能しない場合があります。たとえば、IWMPMedia::getItemInfo を使用してメタデータを取得しようとすると失敗する可能性があります。

allowPlay メソッドは DRM を回避するものではありません。このメソッドが TRUE を返しても、再生のためのライセンスが更新されていない場合、Windows Media Player はコンテンツを再生しません。

ユーザーがライセンスを持っていない保護されたコンテンツをストリーミングする場合、allowPlay メソッドは呼び出されません。

vtbl 4 HRESULT allowCDBurn(HWND hwnd, IWMPPlaylist* pPlaylist, BOOL* pfAllowBurn)

Note このセクションでは、オンライン ストアでの使用を目的とした機能について説明します。

hwndHWNDinプラグインがユーザー インターフェイスを表示できるウィンドウのハンドル。
pPlaylistIWMPPlaylist*inプレイリスト オブジェクトへのポインター。プラグインは、書き込み権限を含む現在有効なライセンスを持たないメディア項目をプレイリストから削除する必要があります。
pfAllowBurnBOOL*inoutBOOL へのポインター。true の場合、プレイリストに残っているメディア項目の CD へのコピーが許可されます。

戻り値

このメソッドは HRESULT を返します。

解説(Remarks)

Windows Media Player が allowCDBurn を呼び出す状況は、Windows Media Player のバージョンによって異なります。

Windows Media Player 9 シリーズと Windows Media Player 10 は、ユーザーがメディア項目のリストを CD に書き込もうとしたときに allowCDBurn を自動的に呼び出し、Player はリスト全体を pPlaylist パラメーターで渡します。allowCDBurn メソッドは、現在有効なライセンスを持たないメディア項目をプレイリストから削除します。次に、allowCDBurn メソッドは、現在有効なライセンスを持たないメディア項目について、バックグラウンド スレッドでライセンスの更新を開始できます。allowCDBurn メソッドは、バックグラウンド スレッドがライセンスの更新を完了するのを待ってはなりません。代わりに、更新を開始したらすぐに戻る必要があります。

Windows Media Player 11 は allowCDBurn を自動的に呼び出すことはありません。つまり、Windows Media Player 11 は、ユーザーが明示的に書き込み権限を要求した場合にのみ allowCDBurn を呼び出します。ユーザーがメディア項目のリストを CD に書き込もうとすると、Windows Media Player は、それらの項目が書き込み権限を含む現在有効なライセンスを持っているかどうかを確認します。現在有効なライセンスを持たない項目ごとに、Player はコンテキスト メニューを持つ情報アイコンを表示します。コンテキスト メニューを使用すると、ユーザーは、個々のメディア項目について、または同じオンライン ストアのバスケット内でまだ書き込み権限を持たないすべてのメディア項目について、書き込み権限を要求できます。ユーザーがコンテキスト メニューからコマンドを選択して書き込み権限を要求すると、Player は allowCDBurn を呼び出し、ユーザーが権限を要求しているメディア項目を含むプレイリストを渡します。その後、allowCDBurn メソッドはバックグラウンド スレッドでライセンスの更新を開始できます。allowCDBurn メソッドは、バックグラウンド スレッドがライセンスの更新を完了するのを待ってはなりません。代わりに、更新を開始したらすぐに戻る必要があります。

Windows Media Player 11 は、allowCDBurnpPlaylist および pfAllowBurn パラメーターで返すプレイリストとブール値を無視することに注意してください。また、Windows Media Player 11 での書き込み権限の処理方法により、トラックが CD に書き込まれるたびに allowCDBurn が呼び出されることに依存してはならないことにも注意してください。

Player のバージョンに関係なく、バックグラウンド スレッドがライセンスの更新が完了したことを Windows Media Player に通知するために使用できるコールバックの仕組みはありません。ただし、メディア項目のライセンスの更新が成功した場合、次にユーザーがその項目を CD にコピーしようとしたときに、コピーは成功します。

vtbl 5 HRESULT allowPDATransfer(HWND hwnd, IWMPPlaylist* pPlaylist, BOOL* pfAllowTransfer)

Note このセクションでは、オンライン ストアでの使用を目的とした機能について説明します。

hwndHWNDinプラグインがユーザー インターフェイスを表示できるウィンドウのハンドル。
pPlaylistIWMPPlaylist*inプレイリスト オブジェクトへのポインター。
pfAllowTransferBOOL*inoutBOOL へのポインター。true の場合、デバイスへのコピーが許可されます。

戻り値

このメソッドは HRESULT を返します。

解説(Remarks)

Windows Media Player がこのメソッドを呼び出したときに、コードで時間のかかる処理を同期的に実行しないでください。

Windows Media Player がプラグインの allowPDATransfer メソッドを呼び出すとき、オンライン ストアの項目を含むプレイリストへのポインターを渡します。allowPDATransfer メソッドは、デバイスと同期すべきでない項目をプレイリストから削除する必要があります。

Windows Media Player が allowPDATranfer を呼び出す状況は、Windows Media Player のバージョンによって異なります。

Windows Media Player 9 シリーズと Windows Media Player 10 は、特定の状況で allowPDATransfer を自動的に呼び出します。たとえば、ユーザーがトラックのリストをデバイスと同期しようとし、それらのトラックの一部に同期の権限がない場合、Windows Media Player は allowPDATransfer を呼び出します。

Windows Media Player 11 は allowPDATransfer を自動的に呼び出すことはありません。つまり、Windows Media Player 11 は、ユーザーが明示的に同期権限を要求した場合にのみ allowPDATransfer を呼び出します。たとえば、ユーザーは情報アイコンのコンテキスト メニューからコマンドを選択して同期権限を要求する場合があります。

トラックがデバイスと同期されるたびに allowPDATransfer が呼び出されることに依存しないでください。代わりに、IWMPSubscriptionService2::prepareForSync を実装してください。

vtbl 6 HRESULT startBackgroundProcessing(HWND hwnd)

Note このセクションでは、オンライン ストアでの使用を目的とした機能について説明します。

hwndHWNDinプラグインがユーザー インターフェイスを表示できるウィンドウのハンドル。

戻り値

このメソッドは HRESULT を返します。

解説(Remarks)

Windows Media Player がこのメソッドを呼び出したときに、コードで時間のかかる処理を同期的に実行しないでください。代わりに、時間のかかるタスクは別のワーカー スレッドで実行する必要があります。

Windows Media Player は、ユーザーがオンライン ストアを選択した後、アイドル時間中に startBackgroundProcessing を呼び出します。これは、オンライン ストアが再生回数データを取得したり、有効期限が切れたライセンスを更新したりするのに役立ちます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IWMPSubscriptionService "{376055F8-2A59-4A73-9501-DCA5273A7A10}"
#usecom global IWMPSubscriptionService IID_IWMPSubscriptionService "{}"
#comfunc global IWMPSubscriptionService_allowPlay                  3 sptr,sptr,var
#comfunc global IWMPSubscriptionService_allowCDBurn                4 sptr,sptr,var
#comfunc global IWMPSubscriptionService_allowPDATransfer           5 sptr,sptr,var
#comfunc global IWMPSubscriptionService_startBackgroundProcessing  6 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。