Microsoft DirectX 8.0 |
IFileSourceFilter インターフェイスは、レンダリングするメディア ファイルのファイル名およびメディア タイプを設定するため、ソース フィルタで公開される。このインターフェイスは、IPersistFile COM インターフェイスの省略版である。「カスタム ファイル タイプの登録」にあるアルゴリズムで判断できるタイプのファイルの場合、そのフィルタ グラフをレンダリングするとき、フィルタ グラフ マネージャは推奨されたファイル ソース フィルタの CLSID を使用する。
ファイルを開くときにファイル名が必要なフィルタでは、アプリケーションからファイル名を設定するため、このインターフェイスを公開しなければならない。現在、このインターフェイスを実装する基底クラスはない。
ファイル ソース フィルタを直接挿入するアプリケーションでは、このインターフェイスを照会し、ファイル名を設定しなければならない。通常、アプリケーションから IGraphBuilder::RenderFile を呼び出すと、フィルタ グラフ マネージャはこのインターフェイスを使用する。Graphedt.exe ツールは、IFileSourceFilter インターフェイスを照会し、インターフェイスがわかったら、ファイル名の入力を求めるプロンプトを表示する。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを返す。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IFileSourceFilter メソッド 説明 Load ソース フィルタにファイルをロードする。 GetCurfile 現在のファイルを取得する。
開くファイルに関する情報を収集する。
構文
HRESULT GetCurfile(
LPOLESTR *ppszFileName,
AM_MEDIA_TYPE *pmt
);
パラメータ
- ppszFileName
- [out] ロードされたファイルのパスへのポインタのアドレス。
- pmt
- [out] メディア タイプへのポインタ。
戻り値
実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL 失敗。 E_POINTER Null ポインタ引数。 E_INVALIDARG 無効な引数。 E_NOTIMPL メソッドがサポートされていない。 S_OK または NOERROR 成功。
メディア ファイルをロードする。
構文
HRESULT Load(
LPCOLESTR pszFileName,
const AM_MEDIA_TYPE *pmt
);
パラメータ
- pszFileName
- [in] 開くファイルの絶対パスへのポインタ。
- pmt
- [in] ファイルのメディア タイプへのポインタ。NULL の場合がある。
戻り値
実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL 失敗。 E_POINTER Null ポインタ引数。 E_INVALIDARG 無効な引数。 E_NOTIMPL メソッドがサポートされていない。 S_OK または NOERROR 成功。
注意
このメソッドはインターフェイスの初期化メソッドである。複数ファイルをロードするように設計されていないため、最初の呼び出し以降の呼び出しはすべて失敗する。
pszFileName で指定されたファイルをロードするには、このメソッドを実装しなければならない。
pszFileName の名前は、ディスク ファイル名 (たとえば Microsoft® Win32® CreateFile 関数に渡すことができるファイル名) である必要はない。URL 名でもよい。URL モニカ フィルタは、IFileSourceFilter を使用してその URL 名を取得し、IGraphBuilder::AddSourceFilter (および IGraphBuilder::RenderFile) がそれを適切に処理する。ファイルが見つからない場合、IGraphBuilder::AddSourceFilter は固有のエラー (ERROR_FILE_NOT_FOUND) を返す。このエラーは、指定されたファイルが存在しないという意味であり、フィルタが存在しないという意味ではない。