Microsoft DirectX 8.0 |
Microsoft® DirectShow® 編集サービス (DES) でファイル名の妥当性を検証するためのメソッドを提供する。このインターフェイスを使用して、与えられたファイル名およびパスが既存のファイルに対応していることを確認する。このインターフェイスは、他の場所にあるファイルを検索する手段、および [開く] ダイアログ ボックスを表示してユーザーがファイルを探せるようにする手段も提供する。
メディア ロケータは、このインターフェイスを実装している。タイムラインおよびレンダリング エンジンも、以下のメソッドによってファイル名の検証をサポートしている。
DES アプリケーションでは、通常はこれらのメソッドを呼び出し、メディア ロケータのインスタンスを直接作成することはない。詳細については、「メディア ロケータの使い方」を参照すること。
要件
Qedit.h が必要である。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IMediaLocator メソッド 説明 FindMediaFile ファイルを検索し、成功した場合は、そのファイルへのパスを取得する。 AddFoundLocation ディレクトリ キャッシュにディレクトリを追加する。
ディレクトリ キャッシュにディレクトリを追加する。
構文
HRESULT AddFoundLocation( BSTR DirectoryName );
パラメータ
- DirectoryName
- キャッシュに追加するディレクトリ パス。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、エラーの発生を示す HRESULT 値を返す。
注意
メディア ロケータは、過去の検索でファイルが見つかったディレクトリ パスのキャッシュを維持する。ファイルが見つかった場合は、そのディレクトリをキャッシュに追加する。
ファイルを検索し、成功した場合は、そのファイルへのパスを取得する。
構文
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_POINTER NULL ポインタ引数。
注意
FilterString パラメータによって指定される、[開く] ダイアログ ボックスのフィルタ文字列には、内部的な NULL 文字列が含まれる。たとえば、Video\0*.avi\0\0 は有効なフィルタ文字列である。SysAllocStr 関数を使って BSTR を割り当てることはできない。この関数は、NULL によって終了する文字列を想定しており、最初の NULL 文字で文字列を切り捨てるためである。そのため、SysAllocStringLen など、長さに合った明示的なパラメータが含まれた関数を使用すること。
BSTR filter = SysAllocStringLen(L"Video\0*.avi\0\0", 13);ユーザーが [開く] ダイアログ ボックスをキャンセルすると、メソッドは E_FAIL を返す。
このメソッドは、pOutput の BSTR にメモリを割り当てる。アプリケーションは SysFreeString を呼び出して、メモリを解放しなければならない。