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

IDvdInfo2

COM
IID34151510-eec0-11d2-8201-00a0c9d74842継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IDvdInfo2 インターフェイスは、DVD ディスクの属性、または DVD の再生およびナビゲーションの現在の状態を報告します。

メソッド 39

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

vtbl 3 HRESULT GetCurrentDomain(DVD_DOMAIN* pDomain)

GetCurrentDomain メソッドは、DVD Navigator が現在位置しているドメインを取得します。

pDomainDVD_DOMAIN*out現在のドメインを受け取る DVD_DOMAIN 型の変数へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_UNEXPECTED
予期しないエラーです。
E_POINTER
引数が無効です。

解説(Remarks)

このメソッドを使用すると、DVD Navigator が特定のタイトルドメインでの再生を終了したかどうかを判定できます。アプリケーションは、PlayTitlePlayForwards などの IDvdControl2 メソッドを呼び出す前に、現在のドメインを確認する必要はありません。DVD Navigator はドメインを確認し、現在のコマンドがそのドメインで無効な場合は、単に何も行わずに VFW_E_DVD_INVALIDDOMAIN を返します。

vtbl 4 HRESULT GetCurrentLocation(DVD_PLAYBACK_LOCATION2* pLocation)

GetCurrentLocation メソッドは、現在の再生位置を取得します。

pLocationDVD_PLAYBACK_LOCATION2*out再生位置の情報を受け取る DVD_PLAYBACK_LOCATION2 型の変数へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_POINTER
pLocation パラメーターが無効です。
VFW_E_DVD_INVALIDDOMAIN
DVD Navigator が無効なドメインにあります。

解説(Remarks)

このメソッドは、現在の位置へのシークが明示的に無効化されていないタイトルにおいて、現在の再生位置からビデオの再生を再開するのに十分な情報を取得します。ディスクが取り出された後は、このメソッドが返す情報だけでは再生を再開するのに十分でない場合があります。ユーザーが後から任意のタイミングで同じ位置に戻れるように、現在の位置と状態情報をディスクに保存するには、GetState を使用します。

vtbl 5 HRESULT GetTotalTitleTime(DVD_HMSF_TIMECODE* pTotalTime, DWORD* ulTimeCodeFlags)

GetTotalTitleTime メソッドは、現在のタイトルの総再生時間を取得します。

pTotalTimeDVD_HMSF_TIMECODE*out総時間を時・分・秒・フレームで受け取る DVD_HMSF_TIMECODE 構造体へのポインター。
ulTimeCodeFlagsDWORD*outディスクが再生用にオーサリングされたフレームレートを示す DVD_TIMECODE_FLAGS 値を受け取ります。タイムコード情報を受け取る必要がない場合は NULL を指定します。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
引数が無効です。
VFW_E_DVD_INVALIDDOMAIN
DVD Navigator がタイトルドメインにありません。
VFW_S_DVD_NON_ONE_SEQUENTIAL
タイトルが 1 つの連続ビデオタイトルではないため、タイミング情報が連続していない可能性があります。

解説(Remarks)

総タイトル時間とは、静止画や一時停止などを含めずに、タイトルを順次再生するのに要する時間です。

このメソッドは、1 つの連続ビデオタイトル(各チャプターが自動的に次のチャプターへ分岐し、タイトル全体が停止することなく連続再生される、映画などのタイトル)でのみ使用します。非連続ビデオタイトルとは、チャプターが自動的に次々と再生されないタイトルです。DVD のオーサリング担当者が非連続ビデオタイトルに時間情報をエンコードする方法にはばらつきがあるため、そのようなタイトルの総時間を求めるためにこのメソッドを使用しないでください。

vtbl 6 HRESULT GetCurrentButton(DWORD* pulButtonsAvailable, DWORD* pulCurrentButton)

GetCurrentButton メソッドは、利用可能なボタンの数と、現在選択されているボタンの番号を取得します。

pulButtonsAvailableDWORD*out利用可能なボタンの数を受け取ります。
pulCurrentButtonDWORD*out現在選択されているボタンの番号(1 から 36 まで)を受け取ります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
ポインター引数のいずれかが無効です。

解説(Remarks)

ボタンが存在しない場合、pulButtonsAvailablepulCurrentButton の両方が 0 に設定されます。

vtbl 7 HRESULT GetCurrentAngle(DWORD* pulAnglesAvailable, DWORD* pulCurrentAngle)

GetCurrentAngle メソッドは、現在のアングルブロックで利用可能なアングルの数と、現在選択されているアングル番号を取得します。

pulAnglesAvailableDWORD*out利用可能なアングルの数を受け取ります。1 つのアングルブロックには最大 9 個のアングルがあり、1 から 9 までの番号が付けられます。値が 1 の場合、DVD Navigator はアングルブロック内にありません。
pulCurrentAngleDWORD*out現在のアングル番号を受け取ります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
引数が無効です。
VFW_E_DVD_INVALIDDOMAIN
DVD Navigator が初期化されていないか、有効なドメインにありません。

解説(Remarks)

アングルとメニューボタンのインデックスは 1 から始まるのに対し、オーディオおよびサブピクチャーストリームのインデックスは 0 から始まる点に注意してください。DVD Navigator はアングルブロックに入ろうとするとき、lParam を 1 に設定した EC_DVD_ANGLES_AVAILABLE イベント通知をアプリケーションに送信します。アプリケーションは通常、EC_DVD_ANGLES_AVAILABLE のイベントハンドラー内で GetCurrentAngleIDvdControl2::SelectAngle を呼び出します。

このメソッドの使用例は、DVDSample アプリケーションの CAngleDlg::MakeAngleList で示されています。

vtbl 8 HRESULT GetCurrentAudio(DWORD* pulStreamsAvailable, DWORD* pulCurrentStream)

GetCurrentAudio メソッドは、利用可能なオーディオストリームの数と、現在選択されているオーディオストリームの番号を取得します。

pulStreamsAvailableDWORD*out利用可能なオーディオストリームの数を受け取ります。
pulCurrentStreamDWORD*out現在のタイトルで現在選択されているオーディオストリーム番号を受け取ります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
入力引数が無効です。
VFW_E_DVD_INVALIDDOMAIN
DVD Navigator が初期化されていないか、有効なドメインにありません。

解説(Remarks)

ディスク上で利用可能なオーディオ言語を取得するには、GetCurrentAudio を呼び出した後、0 から (pulStreamsAvailable - 1) までの各ストリームに対して GetAudioLanguage を呼び出し、言語情報を取得します。

vtbl 9 HRESULT GetCurrentSubpicture(DWORD* pulStreamsAvailable, DWORD* pulCurrentStream, BOOL* pbIsDisabled)

GetCurrentSubpicture メソッドは、現在のタイトルで利用可能なサブピクチャーストリームの数、現在選択されているサブピクチャーストリーム番号、およびサブピクチャーの状態を取得します。

pulStreamsAvailableDWORD*out利用可能なサブピクチャーストリームの数を受け取ります。
pulCurrentStreamDWORD*out現在選択されているサブピクチャーストリームの番号を受け取ります。
pbIsDisabledBOOL*outサブピクチャー表示が無効かどうかを示すブール値を受け取ります。TRUE は無効であることを意味します。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
引数が無効です。
VFW_E_DVD_INVALIDDOMAIN
DVD Navigator が初期化されていないか、タイトルドメインにありません。

解説(Remarks)

DVD コンテンツのオーサリング担当者は、ディスク上の特定のサブピクチャーストリームを強制的に有効化されるものとして指定できます。これは、視聴者が視聴を望むかどうかにかかわらず、DVD のオーサリング担当者がそのストリームを表示するよう要求することを意味します。DVD Navigator はディスクからのそのようなコマンドすべてに従うため、アプリケーションが IDvdControl2::SetSubpictureState メソッドでサブピクチャー表示を無効にしていても、強制的に有効化されたストリームは表示されます。

vtbl 10 HRESULT GetCurrentUOPS(DWORD* pulUOPs)

GetCurrentUOPS メソッドは、コンテンツのオーサリング担当者が現在のディスク位置に対して明示的に無効化したナビゲーションコマンド(存在する場合)を示すフラグのセットを取得します。

pulUOPsDWORD*outVALID_UOP_FLAG 値のビットごとの組み合わせを受け取ります。各ビットは、ユーザー操作 (UOP) の状態(有効または無効)を表します。ビットが設定されている場合、そのユーザー操作は禁止されています。「解説」を参照してください。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
pulUOPs が有効なポインターではありません。

解説(Remarks)

DVD のオーサリング担当者は、現在の DVD ドメイン内では本来許可されるナビゲーションコマンドを禁止するために、ディスク上のほぼ任意の場所に UOP コマンドを挿入できます。言い換えると、UOP コマンドを使用すると、ディスクのオーサリング担当者は通常のナビゲーション権限を上書きできます。

DVD Navigator は任意のコマンドを実行する前にすべての UOP 権限を自動的にチェックし、現在の UOP でコマンドが無効な場合はいずれのメソッドからも VFW_E_DVD_OPERATION_INHIBITED を返すため、DVD プレーヤーアプリケーションが通常このメソッドを使用する必要はありません。アプリケーション自身で現在の UOP 権限を追跡する必要がある場合は、現在の UOP 権限が必要になるたびに GetCurrentUOPS を呼び出すか、メッセージループ内で EC_DVD_VALID_UOPS_CHANGE イベント通知を処理し、lParam1 パラメーターから UOP 情報を取得できます。後者の方法が一般的により効率的です。

vtbl 11 HRESULT GetAllSPRMs(WORD** pRegisterArray)

GetAllSPRMs メソッドは、すべてのシステムパラメーターレジスタ (SPRM) の現在の内容を取得します。

pRegisterArrayWORD**outSPRM の配列のアドレスを受け取る SPRMARRAY 型の配列へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
引数が無効です。

解説(Remarks)

24 個の SPRM は、現在の言語、サブピクチャー、その他のナビゲーションデータに関する情報を保持するために使用されます。

注意 プレーヤーアプリケーションは、標準的なナビゲーション機能のためにこれらの読み取り専用レジスタにアクセスする必要はありません。これらのレジスタを効果的に使用するには、おそらく本ドキュメントで提供されているよりも詳細な DVD ナビゲーションコマンドの知識が必要になります。次の表は、各レジスタの内容を示しています。ワード内のビットは b0(最下位ビット)から b15(最上位ビット)として参照されます。
レジスタ 内容
0 ISO-639 言語コード(小文字の ASCII 2 文字)。既定値は未定義です。
1 下位 4 ビット (b0-b3) にオーディオストリーム番号 (0~7)、または 15(なし)が入ります。既定値は 15 です。
2 下位 6 ビット (b0-b5) にサブピクチャーストリーム番号 (0~31)、62(なし)、または 63(強制サブピクチャー用のダミーストリーム)が入ります。7 番目のビット (b6) にはサブピクチャー表示フラグ(0 = サブピクチャーを表示しない)が入ります。既定値は 62 です。
3 下位 4 ビット (b0-b3) にアングル番号 (1~9) が入ります。既定値は 1 です。
4 下位 7 ビット (b0-b6) にタイトル番号 (1~99) が入ります。既定値は 1 です。
5 下位 7 ビット (b0-b6) に現在の VTS 内のタイトル番号 (1~99) が入ります。既定値は 1 です。
6 下位 15 ビット (b0-b14) に現在のタイトル内の PGC 番号 (1~32767) が入ります。既定値は未定義です。
7 下位 10 ビット (b0-b9) にチャプター番号 (1~99) が入ります。既定値は 1 です。タイトルが one_sequential_PGC_title でない限り、値は未定義です。
8 上位 6 ビット (b10-b15) にボタン番号 (1~36) が入ります。既定値は 1024(ボタン 1)です。
9 タイマーカウント(秒単位、0~65535)。既定値は 0 です。
10 下位 15 ビット (b0-b14) に現在のタイトル内の PGC 番号 (1~32767) が入ります。既定値は未定義です。
11 6 個のフラグ (b2: ch2 を ch1 にミックス、b3: ch3 を ch1 にミックス、b4: ch4 を ch1 にミックス、b10: ch2 を ch0 にミックス、b11: ch3 を ch0 にミックス、b12: ch4 を ch0 にミックス)。フラグ値 0 はミックスしないことを意味します。すべてのフラグの既定値は 0 です。カラオケストリームを再生していない場合、値は未定義です。
12 ISO-3166 国/地域コード(大文字の ASCII 2 文字)、または 65535(未指定)。既定値は未定義です。
13 下位 4 ビット (b0-b3) に視聴制限レベル (1~8)、または 15(なし)が入ります。既定値は未定義です。
14 b8-b9 に現在のビデオ出力モード(0 = 通常 [4:3 または 16:9]、1 = パンスキャン、2 = レターボックス)が入ります。b10-b11 に優先表示モード(0 = 4:3、3 = 16:9)が入ります。既定値は未定義です。
15 9 個のフラグ (b2: SDDS カラオケ、b3: DTS カラオケ、b4: MPEG カラオケ、b6: Dolby Digital カラオケ、b7: PCM カラオケ、b10: SDDS 再生、b11: DTS 再生、b12: MPEG 再生、b14: Dolby Digital 再生)。フラグ値 0 は非対応、1 は対応を意味します。既定値は未定義です。
16 ISO-639 言語コード(小文字の ASCII 2 文字)、または 65535(未指定)。既定値は 65535 です。
17 言語拡張コード(0 = 未指定、1 = 通常のオーディオ、2 = 視覚障碍者向けオーディオ、3 = 監督コメント #1、4 = 監督コメント #2)。既定値は 0 です。
18 ISO-639 言語コード(小文字の ASCII 2 文字)、または 65535(未指定)。既定値は 65535 です。
19 言語拡張コード(0 = 未指定、1 = 通常の字幕、2 = 大きい字幕、3 = 子供向け字幕、5 = 通常のクローズドキャプション、6 = 大きいクローズドキャプション、7 = 子供向けクローズドキャプション、9 = 強制字幕、13 = 監督コメント、14 = 大きい監督コメント、15 = 子供向け監督コメント)。既定値は 0 です。
20 下位 8 ビット (b0-b7) にリージョンコード (1~8) が入ります。
vtbl 12 HRESULT GetAllGPRMs(WORD** pRegisterArray)

GetAllGPRMs メソッドは、すべての汎用パラメーターレジスタ (GPRM) の現在の内容を取得します。

pRegisterArrayWORD**out現在の 16 個すべての GPRM 値を受け取る GPRMARRAY 型の配列へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
引数が無効です。

解説(Remarks)

GPRM は 16 ビットのレジスタで、各ディスクが一時的なデータ格納のために独自の方法で使用できます。

注意 DVD Navigator フィルターを使用するプレーヤーアプリケーションは、Annex J の再生やナビゲーション制御のためにこれらのレジスタにアクセスする必要はありません。このメソッドは、高度な機能を実装するプレーヤーアプリケーション向けに提供されています。DVD 仕様、および再生対象の特定のディスクで GPRM が使用される方法について十分な知識がない限り、GPRM を直接変更しようとしないでください。
vtbl 13 HRESULT GetAudioLanguage(DWORD ulStream, DWORD* pLanguage)

GetAudioLanguage メソッドは、現在のタイトル内で指定されたオーディオストリームの言語を取得します。

ulStreamDWORDin言語を取得するオーディオストリームの番号。
pLanguageDWORD*out言語情報を受け取ります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_POINTER
pLanguage パラメーターが NULL です。
E_UNEXPECTED
DVD Navigator が初期化されていません。
VFW_E_DVD_INVALIDDOMAIN
DVD Navigator が有効なドメインにありません。

解説(Remarks)

このメソッドはメニューの言語を返しません。ストリームが不明な言語を含む場合、pLanguage が指す値を 0 に設定します。pLanguage から人間が読める文字列名を作成するには、GetLocaleInfo 関数を呼び出します。

C++
LCID Language;
hr = pDvdInfo->GetAudioLanguage(ulStream, &Language);
if (SUCCEEDED(hr))
{
    int cchSize = GetLocaleInfo(Language, LOCALE_SENGLANGUAGE, 0, 0);
    TCHAR *szString = new TCHAR[cchSize];
    if (szString)
    {
        GetLocaleInfo(Language, LOCALE_SENGLANGUAGE, szString, cchSize);
        /* ... */
        delete [] szString;
    }
}
vtbl 14 HRESULT GetSubpictureLanguage(DWORD ulStream, DWORD* pLanguage)

GetSubpictureLanguage メソッドは、現在のタイトル内で指定されたサブピクチャーストリームの言語を取得します。

ulStreamDWORDin言語を取得するサブピクチャーストリームの番号。
pLanguageDWORD*outロケール情報を受け取る LCID へのポインター。その後、Win32 の MAKELANGID マクロを使用して LCID から言語情報を抽出できます。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
VFW_E_DVD_INVALIDDOMAIN
DVD Navigator が初期化されていないか、有効なドメインにありません。

解説(Remarks)

メニューで利用可能なテキスト言語を取得するには、GetMenuLanguages を呼び出します。ストリームが不明な言語を含む場合、GetSubpictureLanguagepLanguage が指す値を 0 に設定します。pLanguage から人間が読める文字列名を作成するには、次のように Win32 の GetLocaleInfo 関数を呼び出します。

C++
LCID Language;
hr = pDvdInfo->GetSubpictureLanguage(ulStream, &Language);
if (SUCCEEDED(hr))
{
    int cchSize = GetLocaleInfo(Language, LOCALE_SENGLANGUAGE, 0, 0);
    TCHAR *szString = new TCHAR[cchSize];
    if (szString)
    {
        GetLocaleInfo(Language, LOCALE_SENGLANGUAGE, szString, cchSize);
        /* ... */
        delete [] szString;
    }
}
vtbl 15 HRESULT GetTitleAttributes(DWORD ulTitle, DVD_MenuAttributes* pMenu, DVD_TitleAttributes* pTitle)

GetTitleAttributes メソッドは、指定されたタイトルとそのメニューについて、すべてのビデオ、オーディオ、およびサブピクチャーストリームの属性を取得します。

ulTitleDWORDin要求するタイトル番号を指定する、1 から 99 までの ULONG 型の変数。現在のタイトルを指定するには 0xFFFFFFFF を指定します。
pMenuDVD_MenuAttributes*out指定されたタイトルに関連付けられたメニューの属性を受け取る DVD_MenuAttributes 構造体へのポインター。
pTitleDVD_TitleAttributes*out指定されたタイトルの属性を受け取る DVD_TitleAttributes 構造体へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
nTitle パラメーターが無効です。
E_INVALIDDOMAIN
DVD Navigator がタイトルドメインにありません。
E_POINTER
pMenu または pTitle パラメーターが無効です。
E_UNEXPECTED
DVD Navigator が初期化されていないか、その他の内部エラーが発生しました。
vtbl 16 HRESULT GetVMGAttributes(DVD_MenuAttributes* pATR)

GetVMGAttributes メソッドは、Video Manager Menu について、すべてのビデオ、オーディオ、およびサブピクチャーストリームの属性を取得します。

pATRDVD_MenuAttributes*out属性を受け取る DVD_MenuAttributes 構造体へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
引数が無効です。
E_UNEXPECTED
DVD Navigator が初期化されていません。

解説(Remarks)

Video Manager Menu は、特定のタイトル番号には関連付けられていません。

vtbl 17 HRESULT GetCurrentVideoAttributes(DVD_VideoAttributes* pATR)

GetCurrentVideoAttributes メソッドは、現在のタイトルまたはメニューのビデオ属性を取得します。

pATRDVD_VideoAttributes*out属性を受け取る DVD_VideoAttributes 構造体へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
引数が無効です。
E_UNEXPECTED
DVD Navigator が初期化されていません。

解説(Remarks)

このメソッドの使用例は、DVDSample アプリケーションの CDvdCore::GetVideoAttributes() で示されています。

vtbl 18 HRESULT GetAudioAttributes(DWORD ulStream, DVD_AudioAttributes* pATR)

GetAudioAttributes メソッドは、現在のタイトルまたはメニューで指定されたオーディオストリームの属性を取得します。

ulStreamDWORDin属性を照会するオーディオストリームを指定する ULONG 型の変数。「解説」を参照してください。
pATRDVD_AudioAttributes*out指定されたオーディオストリームの属性が格納される DVD_AudioAttributes 構造体へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_UNEXPECTED
DVD Navigator が初期化されていません。
VFW_E_DVD_NO_ATTRIBUTES
ストリームのオーディオ属性は利用できません。
E_POINTER
引数が無効です。

解説(Remarks)

ulStream には、0 から 7 までの任意のインデックス番号、または次の値のいずれかを指定できます。

説明
DVD_DEFAULT_AUDIO_STREAM 既定のオーディオストリームの属性を照会します。
DVD_STREAM_DATA_CURRENT 現在のストリームを照会します。
DVD_STREAM_DATA_VMGM VMGM のオーディオ属性を照会します。
DVD_STREAM_DATA_VTSM VTSM のオーディオ属性を照会します。

このメソッドの使用例は、DVDSample アプリケーションの CDvdCore::GetAudioAttributesCAudioLangDlg::GetAudioLang で示されています。

vtbl 19 HRESULT GetKaraokeAttributes(DWORD ulStream, DVD_KaraokeAttributes* pAttributes)

GetKaraokeAttributes メソッドは、現在のタイトルまたはメニューで指定されたオーディオストリームのカラオケ属性を取得します。

ulStreamDWORDin属性を照会するオーディオストリームのインデックスを指定します。「解説」を参照してください。
pAttributesDVD_KaraokeAttributes*outカラオケ属性が格納される DVD_KaraokeAttributes 構造体へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
引数が無効です。
E_UNEXPECTED
DVD Navigator が初期化されていません。
VFW_E_DVD_NOT_IN_KARAOKE_MODE
指定されたストリームはカラオケ形式ではありません。
VFW_E_DVD_INVALIDDOMAIN
DVD Navigator がタイトルドメインにありません。
VFW_E_DVD_NO_ATTRIBUTES
指定されたストリームのカラオケ属性は利用できません。

解説(Remarks)

このメソッドは、ストリーム内のチャンネル数を明示的には返しません。その情報は、IDvdInfo2::GetAudioAttributes を呼び出すことで取得できます。このメソッドの使用例は、DVDSample アプリケーションの CKaraokeDlg::DoModal で示されています。

ulStream パラメーターには、0 から 7 までの値、または次のいずれかを指定できます。

説明
DVD_STREAM_DATA_CURRENT (0x800) 現在選択されているオーディオストリームを照会します。
DVD_DEFAULT_AUDIO_STREAM 既定のオーディオストリームを照会します。
vtbl 20 HRESULT GetSubpictureAttributes(DWORD ulStream, DVD_SubpictureAttributes* pATR)

GetSubpictureAttributes メソッドは、指定されたタイトルまたはメニューで指定されたサブピクチャーストリームの属性を取得します。

ulStreamDWORDin照会するサブピクチャーストリームのインデックス番号(0 から 31 まで)。「解説」を参照してください。
pATRDVD_SubpictureAttributes*outサブピクチャー属性を受け取る DVD_SubpictureAttributes 構造体へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_FAIL
サブピクチャーストリームが見つかりませんでした。
E_POINTER
引数が無効です。
VFW_E_DVD_NO_ATTRIBUTES
サブピクチャーには定義された属性がありません。

解説(Remarks)

インデックス番号 0~31 はタイトルに対してのみ有効です。メニューにはサブピクチャーストリームが 1 つしかなく、以下の表の定数のいずれかを使用して指定する必要があります。

説明
DVD_STREAM_DATA_CURRENT (0x800) 現在選択されているサブピクチャーストリームを照会します。
DVD_STREAM_DATA_VMGM (0x400) Video Manager または「Top」メニューのサブピクチャー属性を照会します。
DVD_STREAM_DATA_VTSM (0x401) 現在選択されている Video Title Set Menu のサブピクチャー属性を照会します。

このメソッドの使用例は、DVDSample アプリケーションの CDvdCore::GetSPAttributes()CSPLangDlg::GetSPLang で示されています。

vtbl 21 HRESULT GetDVDVolumeInfo(DWORD* pulNumOfVolumes, DWORD* pulVolume, DVD_DISC_SIDE* pSide, DWORD* pulNumOfTitles)

GetDVDVolumeInfo メソッドは、現在の DVD ボリューム情報を取得します。

pulNumOfVolumesDWORD*outボリュームセット内のボリューム数を受け取ります。
pulVolumeDWORD*outこのルートディレクトリのボリューム番号を受け取ります。
pSideDVD_DISC_SIDE*out現在のディスク面を受け取る DVD_DISC_SIDE 型の変数へのポインター。
pulNumOfTitlesDWORD*outこのボリュームで利用可能なタイトル数を受け取る ULONG 型の変数へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
引数が無効です。

解説(Remarks)

一部のディスクは、複数ディスクセットの一部として配布されることがあります。この文脈における「ボリューム」は、ディスクのオーサリング方法に応じて、「ディスク」または「ディスク面」のいずれかを意味することがあります。

vtbl 22 HRESULT GetDVDTextNumberOfLanguages(DWORD* pulNumOfLangs)

GetDVDTextNumberOfLanguages メソッドは、DVD テキスト文字列が存在する言語の数を取得します。

pulNumOfLangsDWORD*outテキスト言語の数を受け取ります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
引数が無効です。
E_UNEXPECTED
予期しない内部エラーが発生しました。

解説(Remarks)

ディスクのオーサリング方法に応じて、言語数はディスク全体に対して有効な場合と、ディスクの現在の面に対してのみ有効な場合があります。

DVD にテキスト文字列が含まれていない場合、このメソッドは成功しますが、pulNumOfLangs は値 0 を受け取ります。

vtbl 23 HRESULT GetDVDTextLanguageInfo(DWORD ulLangIndex, DWORD* pulNumOfStrings, DWORD* pLangCode, DVD_TextCharSet* pbCharacterSet)

GetDVDTextLanguageInfo メソッドは、指定された言語のテキスト文字列に関する情報を取得します。このメソッドは、その言語の文字列数、ロケール識別子、および文字セットを取得します。

ulLangIndexDWORDin照会する言語の 0 から始まるインデックス。DVD 上のテキスト文字列言語の数を調べるには、IDvdInfo2::GetDVDTextNumberOfLanguages を呼び出します。
pulNumOfStringsDWORD*out指定された言語のテキスト文字列の数を受け取ります。
pLangCodeDWORD*outテキストが記述されている言語を指定するロケール識別子 (LCID) を受け取ります。たとえば、「en-us」の LCID は 0x0409 です。
pbCharacterSetDVD_TextCharSet*outDVD_TextCharSet 列挙体のメンバーを受け取ります。この値は、テキスト文字列の文字セットを指定します。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
この DVD にはテキスト文字列がないか、ulLangIndex パラメーターが範囲外です。
E_POINTER
NULL ポインター引数です。
E_UNEXPECTED
予期しない内部エラーが発生しました。

解説(Remarks)

特定のテキスト文字列を取得するには、IDvdInfo2::GetDVDTextStringAsUnicode または IDvdInfo2::GetDVDTextStringAsNative を呼び出します。

vtbl 24 HRESULT GetDVDTextStringAsNative(DWORD ulLangIndex, DWORD ulStringIndex, BYTE* pbBuffer, DWORD ulMaxBufferSize, DWORD* pulActualSize, DVD_TextStringType* pType)

GetDVDTextStringAsNative メソッドは、指定された言語の DVD テキスト文字列を取得し、そのテキスト文字列をバイト配列として返します。

ulLangIndexDWORDin言語の 0 から始まるインデックス。DVD 上のテキスト文字列言語の数を調べるには、IDvdInfo2::GetDVDTextNumberOfLanguages を呼び出します。
ulStringIndexDWORDin取得する文字列の 0 から始まるインデックス。特定の言語の文字列数を調べるには、IDvdInfo2::GetDVDTextLanguageInfo を呼び出します。
pbBufferBYTE*outテキスト文字列を受け取るバッファーへのポインター。pchBufferNULL の場合、このメソッドは文字列のサイズを pulActualSize に返します。
ulMaxBufferSizeDWORDinpchBuffer のサイズ(バイト単位)。
pulActualSizeDWORD*out終端の NULL を含む、文字列の実際の長さ(バイト単位)を受け取ります。
pTypeDVD_TextStringType*outDVD_TextStringType 列挙体のメンバーを受け取ります。この値は、映画のタイトルや曲名など、テキスト文字列の種類を示します。このパラメーターは、DVD_TextStringType 列挙体で定義されていない値を受け取ることもあります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
引数が無効です。
E_UNEXPECTED
予期しない内部エラーが発生しました。

解説(Remarks)

このメソッドは、変換を行わずに DVD テキスト文字列を生のバイト配列として返します。このメソッドを使用すると、JIS ローマ字・漢字など、Unicode や 7 ビット ASCII (ISO/IEC 646) 以外の文字セットでエンコードされたテキスト文字列を取得できます。文字セットを調べるには、IDvdInfo2::GetDVDTextLanguageInfo を呼び出します。

Unicode および ASCII のテキスト文字列については、ワイド文字列を返す IDvdInfo2::GetDVDTextStringAsUnicode メソッドを使用できます。

返される文字列には、常に単一の終端 NULL バイトが含まれます。バッファーが DVD テキスト文字列の長さより小さい場合、文字列は切り詰められます。必要なバッファーサイズを調べるには、pchBufferNULLulMaxBufferSize を 0 にして、このメソッドを一度呼び出します。サイズは pulActualSize に返されます。その後、バッファーを割り当てて、このメソッドを再度呼び出します。

vtbl 25 HRESULT GetDVDTextStringAsUnicode(DWORD ulLangIndex, DWORD ulStringIndex, LPWSTR pchwBuffer, DWORD ulMaxBufferSize, DWORD* pulActualSize, DVD_TextStringType* pType)

GetDVDTextStringAsUnicode メソッドは、指定された言語の DVD テキスト文字列を取得し、そのテキスト文字列を Unicode 文字列として返します。

ulLangIndexDWORDin言語の 0 から始まるインデックス。DVD 上のテキスト文字列言語の数を調べるには、IDvdInfo2::GetDVDTextNumberOfLanguages を呼び出します。
ulStringIndexDWORDin取得する文字列の 0 から始まるインデックス。特定の言語の文字列数を調べるには、IDvdInfo2::GetDVDTextLanguageInfo を呼び出します。
pchwBufferLPWSTRoutテキスト文字列を受け取るバッファーへのポインター。pchBufferNULL の場合、このメソッドは文字列のサイズを pulActualSize に返します。
ulMaxBufferSizeDWORDinpchBuffer バッファーのサイズ(WCHAR 単位)。
pulActualSizeDWORD*out終端の NULL を含む、文字列の実際の長さ(文字単位)を受け取ります。
pTypeDVD_TextStringType*outDVD_TextStringType 列挙体のメンバーを受け取ります。この値は、映画のタイトルや曲名など、テキスト文字列の種類を示します。このパラメーターは、DVD_TextStringType 列挙体で定義されていない値を受け取ることもあります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_FAIL
サポートされていないテキストです。
E_POINTER
引数が無効です。
E_UNEXPECTED
予期しない内部エラーが発生しました。

解説(Remarks)

このメソッドは、Unicode または 7 ビット ASCII (ISO/IEC 646) でエンコードされたテキスト文字列をサポートします。テキスト文字列が ASCII エンコードを使用している場合、このメソッドは文字列をワイド文字列に変換します。テキスト文字列がそれ以外の文字セットを使用している場合、このメソッドは E_FAIL を返します。その場合は、IDvdInfo2::GetDVDTextStringAsNative を呼び出して、文字列を生のバイト配列として取得できます。文字セットを調べるには、IDvdInfo2::GetDVDTextLanguageInfo を呼び出します。

返される文字列には、常に終端の NULL が含まれます。バッファーが DVD テキスト文字列の長さより小さい場合、文字列は切り詰められます。必要なバッファーサイズを調べるには、pchBufferNULLulMaxBufferSize を 0 にして、このメソッドを一度呼び出します。サイズは pulActualSize に返されます。その後、バッファーを割り当てて、このメソッドを再度呼び出します。

vtbl 26 HRESULT GetPlayerParentalLevel(DWORD* pulParentalLevel, BYTE* pbCountryCode)

GetPlayerParentalLevel メソッドは、DVD Navigator の現在の視聴制限レベルと ISO 3166 国/地域コードの設定を取得します。

pulParentalLevelDWORD*out現在の視聴制限レベルを示す値を受け取ります。視聴制限が有効な場合、有効な視聴制限レベルは 1 から 8 で、視聴制限が無効な場合は 0xFFFFFFFF です。
pbCountryCodeBYTE*out現在の国/地域コード (ISO 3166 Alpha-2 コード) を受け取る 2 バイト配列のアドレス。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_POINTER
パラメーターが無効です。

解説(Remarks)

DVD Navigator では、視聴制限は既定で無効になっています。このメソッドの使用例は、DVDSample アプリケーションの CDvdCore::GetParentalLevel で示されています。

vtbl 27 HRESULT GetNumberOfChapters(DWORD ulTitle, DWORD* pulNumOfChapters)

GetNumberOfChapters メソッドは、指定されたタイトル内のチャプター数を取得します。

ulTitleDWORDinタイトルを指定します。
pulNumOfChaptersDWORD*out指定されたタイトルのチャプター数を受け取ります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_POINTER
パラメーターが無効です。
E_UNEXPECTED
DVD Navigator が初期化されていません。

解説(Remarks)

有効なチャプター番号を指定できるように、IDvdControl2::PlayChapter を呼び出す前にこのメソッドを呼び出してチャプター数を取得してください。

vtbl 28 HRESULT GetTitleParentalLevels(DWORD ulTitle, DWORD* pulParentalLevels)

GetTitleParentalLevels メソッドは、特定のタイトルに対して定義された視聴制限レベルを取得します。

ulTitleDWORDin視聴制限レベルを要求するタイトル。現在のタイトルの視聴制限レベルを返すには 0xfffffff を指定します。
pulParentalLevelsDWORD*outタイトルに対して定義された DVD_PARENTAL_LEVEL 値のビットごとの OR の組み合わせを受け取る ULONG 型の変数へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_UNEXPECTED
DVD Navigator が初期化されていません。

解説(Remarks)

1 つのタイトルには、セクションごとに異なる視聴制限レベルを含めることができます。

vtbl 29 HRESULT GetDVDDirectory(LPWSTR pszwPath, DWORD ulMaxSize, DWORD* pulActualSize)

GetDVDDirectory メソッドは、DVD Navigator に設定されているルートディレクトリを取得します。

pszwPathLPWSTRoutパス文字列を受け取るバッファーへのポインター。
ulMaxSizeDWORDinバッファーのサイズ(WCHAR 単位)。
pulActualSizeDWORD*out返された実際のデータのサイズ(WCHAR 単位)を受け取る変数へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
バッファーが文字列を保持するのに十分な大きさではありません。
VFW_E_DVD_INVALIDDOMAIN
DVD Navigator が有効なドメインにありません。

解説(Remarks)

このメソッドの使用例は、DVDSample アプリケーションの CDvdCore::GetDriveLetter で示されています。

vtbl 30 HRESULT IsAudioStreamEnabled(DWORD ulStreamNum, BOOL* pbEnabled)

IsAudioStreamEnabled メソッドは、指定されたオーディオストリームが現在のタイトルで有効かどうかを判定します。

ulStreamNumDWORDinテストするオーディオストリーム番号。
pbEnabledBOOL*outオーディオストリームが有効な場合は TRUE、それ以外の場合は FALSE の値を受け取る BOOL 型の変数へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_UNEXPECTED
DVD Navigator が初期化されていません。

解説(Remarks)

DVD は最大 8 個の個別のオーディオストリームを持つことができますが、通常、すべてのストリームが各タイトルで有効になるわけではありません。IsAudioStreamEnabled を使用して特定のストリームが現在のタイトルで有効かどうかを判定し、その後 IDvdControl2::SelectAudioStream を呼び出して有効なストリームの 1 つを選択します。

vtbl 31 HRESULT GetDiscID(LPWSTR pszwPath, ULONGLONG* pullDiscID)

GetDiscID メソッドは、指定された DVD に対してシステムが生成した 64 ビットの識別番号を取得します。

pszwPathLPWSTRinディスク ID に使用するボリュームのパス。現在または既定の DVD ボリュームを使用するには NULL を指定します。
pullDiscIDULONGLONG*out64 ビットのディスク ID を受け取ります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_UNEXPECTED
DVD Navigator が初期化されていません。
VFW_E_DVD_INVALID_DISC
指定されたパスは有効な DVD ディスクではありません。

解説(Remarks)

DVD Navigator は、BCA (burst cutting area) の値ではなく、ファイルサイズ、日付、その他の情報に基づいて識別 ID を計算します。この番号は、ディスクを再生するたびに同じであることが保証されます。この ID は、ディスクのすべての複製コピーに適用されます。言い換えると、特定の映画のすべてのコピーは同じ ID を持ちます。2 つの異なるタイトルが同じ ID を持つ可能性は十分に低いため、この ID は実用上「一意」とみなすことができます。

vtbl 32 HRESULT GetState(IDvdState** pStateData)

GetState メソッドは、ディスクの位置と DVD Navigator の状態情報を含むブックマークを取得します。

pStateDataIDvdState**outDVD Navigator によって割り当てられた DvdState オブジェクトの IDvdState インターフェイスへのポインターを受け取ります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_UNEXPECTED
DVD Navigator が初期化されていません。

解説(Remarks)

このメソッドが呼び出されると、DVD Navigator は新しい状態オブジェクトを作成し、現在の位置、現在の視聴制限レベル、その他の状態情報をそこに保存します。DVDState オブジェクトを使用すると、IDvdControl2::SetState の呼び出しによって、後から DVD Navigator を保存された位置に復元できます。これにより、視聴者はディスクの途中で視聴を中断して位置を保存し、後から戻って、すべての内部設定が以前のまま復元された状態で、中断した位置から視聴を開始できます。

DVD Navigator は、DvdState オブジェクトをアプリケーションに返す前に、そのオブジェクトに対して AddRef を呼び出します。アプリケーションは、そのオブジェクトの使用を終えたら、Release を呼び出す必要があります。

このメソッドの使用例は、DVDSample アプリケーションの CDvdCore::RestoreBookmark で示されています。

vtbl 33 HRESULT GetMenuLanguages(DWORD* pLanguages, DWORD ulMaxLanguages, DWORD* pulActualLanguages)

GetMenuLanguages メソッドは、ディスク上のすべてのメニューで利用可能なすべての言語を取得します。

pLanguagesDWORD*out返される言語を受け取る LCID 配列へのポインター。実際の言語そのものではなく、メニューで利用可能な言語の数だけを取得するには、pLanguagesNULL を指定します。
ulMaxLanguagesDWORDin取得する言語の最大数。
pulActualLanguagesDWORD*out取得された実際の言語数を受け取ります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_UNEXPECTED
DVD Navigator が初期化されていません。
vtbl 34 HRESULT GetButtonAtPosition(POINT point, DWORD* pulButtonIndex)

GetButtonAtPosition メソッドは、表示ウィンドウ内の指定された位置にあるボタンを取得します。

pointPOINTinWin32 の WM_MOUSEMOVE メッセージを通じて取得された、現在のマウスポインターの位置。
pulButtonIndexDWORD*out現在のマウスポインター位置にあるボタンのインデックス(1 から 36 まで)を受け取ります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_POINTER
puButtonIndex パラメーターが無効です。
VFW_E_DVD_NO_BUTTON
point にボタンがありません。

解説(Remarks)

このメソッドは通常、DVD メニュー表示ウィンドウ内でのマウスポインターの移動に応じて呼び出されます。ボタン番号を取得しようとする前に、必ず HRESULT で成功を確認してください。このメソッドは、指定された位置にボタンが見つかった場合にのみ puButtonIndex の値を設定します。DVD のボタンは必ずしも強調表示された矩形を持つとは限らず、ボタンの矩形は重なり合うことがあり、また、ボタンの矩形が常にボタンの視覚的表現に対応するとは限りません。

vtbl 35 HRESULT GetCmdFromEvent(INT_PTR lParam1, IDvdCmd** pCmdObj)

GetCmdFromEvent メソッドは、EC_DVD_CMD_START または EC_DVD_CMD_END イベントから IDvdCmd オブジェクトを取得します。

lParam1INT_PTRinイベント通知の lParam1 パラメーター。
pCmdObjIDvdCmd**outイベントを発生させたコマンドに関連付けられた IDvdCmd インターフェイスへのポインターを受け取ります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_FAIL
コマンドはもう存在しません。
E_POINTER
引数が無効です。

解説(Remarks)

このメソッドは、EC_DVD_CMD_START または EC_DVD_CMD_END イベントの lParam1 パラメーターを、イベントを発生させたコマンドに関連付けられた IDvdCmd オブジェクトにマップします。その後、WaitForStart または WaitForEnd を呼び出して、そのコマンドに関する DVD Navigator のブロッキング動作を制御できます。IDvdCmd オブジェクトは DVD Navigator によって作成され、返されるポインターは既に参照カウントがインクリメントされているため、WaitForStart または WaitForEnd が返された後に解放する必要があります。

vtbl 36 HRESULT GetDefaultMenuLanguage(DWORD* pLanguage)

GetDefaultMenuLanguage メソッドは、既定のメニュー言語を取得します。

pLanguageDWORD*out言語情報を受け取ります。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_POINTER
pLanguage パラメーターが NULL です。
E_UNEXPECTED
DVD Navigator が初期化されていません。
VFW_E_DVD_INVALIDDOMAIN
DVD Navigator が有効なドメインにありません。
vtbl 37 HRESULT GetDefaultAudioLanguage(DWORD* pLanguage, DVD_AUDIO_LANG_EXT* pAudioExtension)

GetDefaultAudioLanguage メソッドは、既定のオーディオ言語を取得します。

pLanguageDWORD*out既定の言語情報を受け取ります。
pAudioExtensionDVD_AUDIO_LANG_EXT*out既定の DVD オーディオ言語拡張を示す値を受け取る DVD_AUDIO_LANG_EXT 型の変数へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_POINTER
pLanguage パラメーターが NULL です。
E_UNEXPECTED
DVD Navigator が初期化されていません。
VFW_E_DVD_INVALIDDOMAIN
DVD Navigator が有効なドメインにありません。
vtbl 38 HRESULT GetDefaultSubpictureLanguage(DWORD* pLanguage, DVD_SUBPICTURE_LANG_EXT* pSubpictureExtension)

GetDefaultSubpictureLanguage メソッドは、既定のサブピクチャー言語を取得します。

pLanguageDWORD*out言語情報を受け取ります。
pSubpictureExtensionDVD_SUBPICTURE_LANG_EXT*out既定の言語拡張を示す許容値のいずれかを受け取る DVD_SUBPICTURE_LANG_EXT 型の変数へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_POINTER
pLanguage パラメーターが NULL です。
E_UNEXPECTED
DVD Navigator が初期化されていません。
VFW_E_DVD_INVALIDDOMAIN
DVD Navigator が有効なドメインにありません。
vtbl 39 HRESULT GetDecoderCaps(DVD_DECODER_CAPS* pCaps)

GetDecoderCaps メソッドは、DVD デコーダーのビデオ、オーディオ、およびサブピクチャーの最大データレート(順方向および逆方向)に加えて、さまざまな種類のオーディオ (AC-3, MPEG-2, DTS, SDDS, LPCM) のサポート状況を取得します。

pCapsDVD_DECODER_CAPS*outデコーダーに関する情報を受け取る DVD_DECODER_CAPS 型の変数へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
VFW_E_WRONG_STATE
フィルターグラフが初期化されていません。
vtbl 40 HRESULT GetButtonRect(DWORD ulButton, RECT* pRect)

GetButtonRect メソッドは、指定されたメニューボタンの矩形座標を取得します。注意 このメソッドは現在実装されていません。

ulButtonDWORDinメニューボタンを指定します。
pRectRECT*outボタンの矩形の座標を受け取る RECT 型の変数へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
E_NOTIMPL
このメソッドは現在実装されていません。
vtbl 41 HRESULT IsSubpictureStreamEnabled(DWORD ulStreamNum, BOOL* pbEnabled)

IsSubpictureStreamEnabled メソッドは、指定されたサブピクチャーストリームが現在のタイトルで有効かどうかを判定します。

ulStreamNumDWORDinテストするサブピクチャーストリーム番号。
pbEnabledBOOL*outオーディオストリームが有効な場合は TRUE、それ以外の場合は FALSE の値を受け取る BOOL 型の変数へのポインター。

戻り値

以下の HRESULT 値のいずれかを返します。

リターンコード 説明
S_OK
成功しました。
E_INVALIDARG
引数が無効です。
E_UNEXPECTED
DVD Navigator が初期化されていません。

解説(Remarks)

DVD は最大 32 個の個別のサブピクチャーストリームを持つことができますが、通常、すべてのストリームが各タイトルで有効になるわけではありません。IsSubpictureStreamEnabled を使用して特定のストリームが現在のタイトルで有効かどうかを判定し、その後 IDvdControl2::SelectSubpictureStream を呼び出して有効なストリームの 1 つを選択します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IDvdInfo2 "{34151510-EEC0-11D2-8201-00A0C9D74842}"
#usecom global IDvdInfo2 IID_IDvdInfo2 "{}"
#comfunc global IDvdInfo2_GetCurrentDomain              3 var
#comfunc global IDvdInfo2_GetCurrentLocation            4 var
#comfunc global IDvdInfo2_GetTotalTitleTime             5 var,var
#comfunc global IDvdInfo2_GetCurrentButton              6 var,var
#comfunc global IDvdInfo2_GetCurrentAngle               7 var,var
#comfunc global IDvdInfo2_GetCurrentAudio               8 var,var
#comfunc global IDvdInfo2_GetCurrentSubpicture          9 var,var,var
#comfunc global IDvdInfo2_GetCurrentUOPS                10 var
#comfunc global IDvdInfo2_GetAllSPRMs                   11 var
#comfunc global IDvdInfo2_GetAllGPRMs                   12 var
#comfunc global IDvdInfo2_GetAudioLanguage              13 int,var
#comfunc global IDvdInfo2_GetSubpictureLanguage         14 int,var
#comfunc global IDvdInfo2_GetTitleAttributes            15 int,var,var
#comfunc global IDvdInfo2_GetVMGAttributes              16 var
#comfunc global IDvdInfo2_GetCurrentVideoAttributes     17 var
#comfunc global IDvdInfo2_GetAudioAttributes            18 int,var
#comfunc global IDvdInfo2_GetKaraokeAttributes          19 int,var
#comfunc global IDvdInfo2_GetSubpictureAttributes       20 int,var
#comfunc global IDvdInfo2_GetDVDVolumeInfo              21 var,var,var,var
#comfunc global IDvdInfo2_GetDVDTextNumberOfLanguages   22 var
#comfunc global IDvdInfo2_GetDVDTextLanguageInfo        23 int,var,var,var
#comfunc global IDvdInfo2_GetDVDTextStringAsNative      24 int,int,var,int,var,var
#comfunc global IDvdInfo2_GetDVDTextStringAsUnicode     25 int,int,var,int,var,var
#comfunc global IDvdInfo2_GetPlayerParentalLevel        26 var,var
#comfunc global IDvdInfo2_GetNumberOfChapters           27 int,var
#comfunc global IDvdInfo2_GetTitleParentalLevels        28 int,var
#comfunc global IDvdInfo2_GetDVDDirectory               29 var,int,var
#comfunc global IDvdInfo2_IsAudioStreamEnabled          30 int,var
#comfunc global IDvdInfo2_GetDiscID                     31 wstr,var
#comfunc global IDvdInfo2_GetState                      32 sptr
#comfunc global IDvdInfo2_GetMenuLanguages              33 var,int,var
#comfunc global IDvdInfo2_GetButtonAtPosition           34 int,var
#comfunc global IDvdInfo2_GetCmdFromEvent               35 sptr,sptr
#comfunc global IDvdInfo2_GetDefaultMenuLanguage        36 var
#comfunc global IDvdInfo2_GetDefaultAudioLanguage       37 var,var
#comfunc global IDvdInfo2_GetDefaultSubpictureLanguage  38 var,var
#comfunc global IDvdInfo2_GetDecoderCaps                39 var
#comfunc global IDvdInfo2_GetButtonRect                 40 int,var
#comfunc global IDvdInfo2_IsSubpictureStreamEnabled     41 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。