IMediaLocator::FindMediaFile
FindMediaFile メソッドは、ファイルを検索し、成功した場合は、そのファイルへのパスを取得する。
構文
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
ゼロまたは複数のフラグのビットごとの組み合わせ。使えるフラグについては、「ファイル名検証フラグ」を参照すること。
戻り値
HRESULT 値を返す。次のいずれかの値を返す。
値 | 説明 |
S_FALSE | ファイルは別の場所で見つかった。 |
S_OK | ファイルは指定された場所で見つかった。 |
E_FAIL | 失敗。 |
E_INVALIDARG | 引数が無効。 |
E_POINTER | NULL ポインタ引数。 |
注意
FilterString 引数によって指定される [開く] ダイアログ ボックスのフィルタ文字列には、内部的な NULL 文字列が含まれる。たとえば、Video\0*.avi\0\0 は有効なフィルタ文字列である。SysAllocStr 関数を使って BSTR を割り当てることはできない。この関数は、NULL 終端文字列を想定しており、最初の NULL 文字で文字列を切り捨てるためである。そのため、SysAllocStringLen など、長さに合った明示的な引数が含まれた関数を使うこと。
BSTR filter = SysAllocStringLen(L"Video\0*.avi\0", 12);
// 注 : SysAllocStringLen は文字列に追加の '\0' を付加する。
ユーザーが [開く] ダイアログ ボックスをキャンセルすると、メソッドは E_FAIL を返す。
このメソッドは、pOutput の BSTR にメモリを割り当てる。アプリケーションは SysFreeString を呼び出して、メモリを解放しなければならない。
要件
ヘッダー : Qedit.h をインクルードする。このヘッダー ファイルは、バージョン 7 以降の Microsoft® Direct3D® のヘッダーとは互換性がない。
ライブラリ : strmiids.lib を使用。
参照