IWMReaderPlaylistBurn
COM公式ドキュメント
IWMReaderPlaylistBurn インターフェイスは、プレイリスト内のファイルを、指定された順序どおりに CD へコピーできるかどうかを検証します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
InitPlaylistBurn メソッドは、プレイリスト内のファイルがプレイリストの一部としてコピーするライセンスを持っているかどうかを確認することで、プレイリストの書き込み処理を開始します。
| cFiles | DWORD | in | プレイリスト内のファイル数。これは、pwszFilenames が参照するファイル名の配列に含まれるメンバー数でもあります。 |
| ppwszFilenames | LPWSTR* | in | WCHAR 文字列の配列のアドレス。各文字列にはプレイリスト内のファイル名が格納されます。ファイルの順序は、プレイリスト内に存在するとおりに厳密に維持する必要があります。 |
| pCallback | IWMStatusCallback* | in | WMT_INIT_PLAYLIST_BURN 状態メッセージを受け取る IWMStatusCallback 実装のアドレス。 |
| pvContext | void* | in | アプリケーションが使用する汎用ポインター。これは IWMStatusCallback::OnStatus コールバックの呼び出し時にアプリケーションへ渡されます。単一の状態コールバックを共有する場合に、このパラメーターを使用して異なるオブジェクトからのメッセージを区別できます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドは非同期に実行されます。処理が完了すると、WMT_INIT_PLAYLIST_BURN メッセージが、pCallback パラメーターで指定された IWMStatusCallback インターフェイスの OnStatus メソッドへ送信されます。
ファイルは DRM で保護されているかどうかを判定するために確認されます。ファイルが保護されている場合は、そのライセンスを確認し、ライセンスがプレイリストの一部として CD へのコピーを許可しているかどうかを検証します。
GetInitResults メソッドは、プレイリストのファイルチェックの結果を取得します。
| cFiles | DWORD | in | プレイリスト内のファイル数。これは、phrStati が参照する配列のメンバー数でもあります。この値は、最初の InitPlaylistBurn の呼び出しで指定したファイル数と同じである必要があります。 |
| phrStati | HRESULT* | out | HRESULT 値の配列のアドレス。この配列のメンバーは、最初の InitPlaylistBurn の呼び出しで渡したファイル名に対応します。出力時には、対応するファイルがプレイリストの一部としてコピー可能と承認されている場合、各メンバーは S_OK に設定されます。プレイリスト内のファイルがコピーのライセンスを持っていない場合、またはエラーが発生した場合は、この配列の対応するメンバーに適切な HRESULT 戻りコードが設定されます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドは、IWMStatusCallback::OnStatus メソッドの実装が受け取った WMT_INIT_PLAYLIST_BURN メッセージへの応答として呼び出す必要があります。InitPlaylistBurn を先に呼び出して WMT_INIT_PLAYLIST_BURN メッセージを受け取ることなく GetInitResults を呼び出した場合、GetInitResults はエラーコードを返します。
このメソッドを呼び出した後、phrStati が参照する配列のすべてのメンバーが S_OK に設定されていれば、プレイリスト内のファイルのコピーを開始できます。ただし、データの取得には、IWMReaderPlaylistBurn インターフェイスを取得するために使用したのと同じリーダーオブジェクトのインスタンスを使用する必要があります。
Cancel メソッドは、初期化が完了する前に、開始されたプレイリストの書き込みをキャンセルします。
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドを呼び出してプレイリストの書き込み処理をキャンセルするのは、InitPlaylistBurn を呼び出した後、かつ状態コールバックが WMT_INIT_PLAYLIST_BURN メッセージを受け取る前に限ります。初期化が完了した後にプレイリストの書き込みをキャンセルする必要がある場合は、EndPlaylistBurn メソッドを呼び出し、E_ABORT エラーコードを渡します。
EndPlaylistBurn メソッドは、プレイリストの書き込み処理を完了します。これには、リソースの解放や、DRM ライセンス内の権利に関連付けられたカウントの調整が含まれます。
| hrBurnResult | HRESULT | in | プレイリスト書き込みの結果。プレイリスト内のファイルが正常に CD へコピーされた場合は S_OK に設定します。そうでない場合は、適切な HRESULT エラーコードに設定します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
状態コールバックが WMT_INIT_PLAYLIST_BURN メッセージを受け取った後にプレイリストの書き込み処理を中止するには、E_ABORT エラーコードを渡します。初期化が完了する前に処理を停止するには、Cancel メソッドを呼び出します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMReaderPlaylistBurn "{F28C0300-9BAA-4477-A846-1744D9CBF533}" #usecom global IWMReaderPlaylistBurn IID_IWMReaderPlaylistBurn "{}" #comfunc global IWMReaderPlaylistBurn_InitPlaylistBurn 3 int,var,sptr,sptr #comfunc global IWMReaderPlaylistBurn_GetInitResults 4 int,var #comfunc global IWMReaderPlaylistBurn_Cancel 5 #comfunc global IWMReaderPlaylistBurn_EndPlaylistBurn 6 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWMReaderPlaylistBurn "{F28C0300-9BAA-4477-A846-1744D9CBF533}" #usecom global IWMReaderPlaylistBurn IID_IWMReaderPlaylistBurn "{}" #comfunc global IWMReaderPlaylistBurn_InitPlaylistBurn 3 int,sptr,sptr,sptr #comfunc global IWMReaderPlaylistBurn_GetInitResults 4 int,sptr #comfunc global IWMReaderPlaylistBurn_Cancel 5 #comfunc global IWMReaderPlaylistBurn_EndPlaylistBurn 6 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。