Microsoft DirectX 8.0

IMediaLocator インターフェイス

Microsoft® DirectShow® 編集サービス (DES) でファイル名の妥当性を検証するためのメソッドを提供する。このインターフェイスを使用して、与えられたファイル名およびパスが既存のファイルに対応していることを確認する。このインターフェイスは、他の場所にあるファイルを検索する手段、および [開く] ダイアログ ボックスを表示してユーザーがファイルを探せるようにする手段も提供する。

メディア ロケータは、このインターフェイスを実装している。タイムラインおよびレンダリング エンジンも、以下のメソッドによってファイル名の検証をサポートしている。

DES アプリケーションでは、通常はこれらのメソッドを呼び出し、メディア ロケータのインスタンスを直接作成することはない。詳細については、「メディア ロケータの使い方」を参照すること。

要件

Qedit.h が必要である。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterfaceサポートされているインターフェイスへのポインタを取得する。
AddRef参照カウントをインクリメントする。
Release参照カウントをデクリメントする。
IMediaLocator メソッド説明
FindMediaFileファイルを検索し、成功した場合は、そのファイルへのパスを取得する。
AddFoundLocationディレクトリ キャッシュにディレクトリを追加する。

IMediaLocator::AddFoundLocation

IMediaLocator インターフェイス

ディレクトリ キャッシュにディレクトリを追加する。

構文

HRESULT AddFoundLocation(
    BSTR DirectoryName
);

パラメータ

DirectoryName
キャッシュに追加するディレクトリ パス。

戻り値

成功した場合は、S_OK を返す。それ以外の場合は、エラーの発生を示す HRESULT 値を返す。

注意

メディア ロケータは、過去の検索でファイルが見つかったディレクトリ パスのキャッシュを維持する。ファイルが見つかった場合は、そのディレクトリをキャッシュに追加する。

IMediaLocator::FindMediaFile

IMediaLocator インターフェイス

ファイルを検索し、成功した場合は、そのファイルへのパスを取得する。

構文

HRESULT FindMediaFile(
    BSTR Input,
    BSTR FilterString,
    BSTR *pOutput,
    long Flags
);

パラメータ

Input
ファイル名。そのファイルが存在していたことがわかっているパスも含む。タイムライン内のソース オブジェクトの場合は、現在のメディア名を使用する。
FilterString
Microsoft® Win32® の OPENFILENAME 構造体の lpstrFilter メンバで必要な書式に設定されたフィルタ文字列のペアを含む BSTR。メディア ロケータは、[開く] ダイアログ ボックスを表示する場合に、このフィルタを使用する。Flags パラメータに SFN_VALIDATEF_POPUP フラグが含まれていない場合、この値は NULL とすることができる。
pOutput
ファイルへの実際のパスが Input 内の値と異なる場合、およびメソッドがファイルを見つけられた場合、ファイルの実際のパスを受け取る変数へのポインタ。
Flags
以下のフラグの 0 個以上のビットごとの組み合わせ。

戻り値

HRESULT 値を返す。可能な値は次のとおりである。

S_FALSEファイルは別の場所で見つかった。
S_OKファイルは指定された場所で見つかった。
E_FAIL失敗。
E_INVALIDARG引数が無効。
E_POINTERNULL ポインタ引数。

注意

FilterString パラメータによって指定される、[開く] ダイアログ ボックスのフィルタ文字列には、内部的な NULL 文字列が含まれる。たとえば、Video\0*.avi\0\0 は有効なフィルタ文字列である。SysAllocStr 関数を使って BSTR を割り当てることはできない。この関数は、NULL によって終了する文字列を想定しており、最初の NULL 文字で文字列を切り捨てるためである。そのため、SysAllocStringLen など、長さに合った明示的なパラメータが含まれた関数を使用すること。

BSTR filter = SysAllocStringLen(L"Video\0*.avi\0\0", 13);

ユーザーが [開く] ダイアログ ボックスをキャンセルすると、メソッドは E_FAIL を返す。

このメソッドは、pOutputBSTR にメモリを割り当てる。アプリケーションは SysFreeString を呼び出して、メモリを解放しなければならない。