IDvdState
COM公式ドキュメント
IDvdState インターフェースは現在の状態をキャッシュします。このインターフェースを実装するオブジェクトは DVD ブックマークと呼ばれます。これを使用して、再生位置、ユーザーのペアレンタルレベル、DVD リージョンを含む DVD の状態を保存および復元できます。
解説(Remarks)
DVD Navigator から現在の DVD の状態情報を取得するには、IDvdInfo2::GetState を呼び出します。状態を復元するには、IDvdControl2::SetState を呼び出します。
DVD ブックマークオブジェクトは IPersistStream と IPersistMemory も実装しています。これらのインターフェースを使用して状態を永続化できます。また、CoCreateInstance を呼び出して空のブックマークオブジェクトを作成することもできます。オブジェクトの CLSID は uuids.h で定義されている CLSID_DVDState です。
Windows Vista より前では、ブックマークはそれが作成されたのと同じコンピューター上でのみ使用できます。Windows Vista 以降では、DVD Navigator は他のコンピューターでも使用できるブックマークを作成できます。この機能を有効にするには、GetState または SetState を呼び出す前に、DVD_EnablePortableBookmarks フラグを指定して IDvdControl2::SetOption を呼び出します。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetDiscID メソッドは、ブックマークの作成元となったディスクの一意の ID を取得します。
| pullUniqueID | ULONGLONG* | out | ID を受け取ります。 |
戻り値
GetParentalLevel メソッドは、DvdState オブジェクトに保存されているユーザーのペアレンタルレベルを取得します。
| pulParentalLevel | DWORD* | out | ペアレンタルレベルを受け取ります。 |
戻り値
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDvdState "{86303D6D-1C4A-4087-AB42-F711167048EF}" #usecom global IDvdState IID_IDvdState "{}" #comfunc global IDvdState_GetDiscID 3 var #comfunc global IDvdState_GetParentalLevel 4 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IDvdState "{86303D6D-1C4A-4087-AB42-F711167048EF}" #usecom global IDvdState IID_IDvdState "{}" #comfunc global IDvdState_GetDiscID 3 sptr #comfunc global IDvdState_GetParentalLevel 4 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。