Microsoft DirectX 8.0

IFileSourceFilter インターフェイス

IFileSourceFilter インターフェイスは、レンダリングするメディア ファイルのファイル名およびメディア タイプを設定するため、ソース フィルタで公開される。このインターフェイスは、IPersistFile COM インターフェイスの省略版である。「カスタム ファイル タイプの登録」にあるアルゴリズムで判断できるタイプのファイルの場合、そのフィルタ グラフをレンダリングするとき、フィルタ グラフ マネージャは推奨されたファイル ソース フィルタの CLSID を使用する。

ファイルを開くときにファイル名が必要なフィルタでは、アプリケーションからファイル名を設定するため、このインターフェイスを公開しなければならない。現在、このインターフェイスを実装する基底クラスはない。

ファイル ソース フィルタを直接挿入するアプリケーションでは、このインターフェイスを照会し、ファイル名を設定しなければならない。通常、アプリケーションから IGraphBuilder::RenderFile を呼び出すと、フィルタ グラフ マネージャはこのインターフェイスを使用する。Graphedt.exe ツールは、IFileSourceFilter インターフェイスを照会し、インターフェイスがわかったら、ファイル名の入力を求めるプロンプトを表示する。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterface サポートされているインターフェイスへのポインタを返す。
AddRef 参照カウントをインクリメントする。
Release 参照カウントをデクリメントする。
IFileSourceFilter メソッド説明
Load ソース フィルタにファイルをロードする。
GetCurfile 現在のファイルを取得する。

IFileSourceFilter::GetCurfile

IFileSourceFilter インターフェイス

開くファイルに関する情報を収集する。

構文

HRESULT GetCurfile(
  LPOLESTR *ppszFileName,
  AM_MEDIA_TYPE *pmt
  );

パラメータ

ppszFileName
[out] ロードされたファイルのパスへのポインタのアドレス。
pmt
[out] メディア タイプへのポインタ。

戻り値

実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL失敗。
E_POINTERNull ポインタ引数。
E_INVALIDARG無効な引数。
E_NOTIMPLメソッドがサポートされていない。
S_OK または NOERROR成功。

IFileSourceFilter::Load

IFileSourceFilter インターフェイス

メディア ファイルをロードする。

構文

HRESULT Load(
  LPCOLESTR pszFileName,
  const AM_MEDIA_TYPE *pmt
  );

パラメータ

pszFileName
[in] 開くファイルの絶対パスへのポインタ。
pmt
[in] ファイルのメディア タイプへのポインタ。NULL の場合がある。

戻り値

実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL失敗。
E_POINTERNull ポインタ引数。
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) を返す。このエラーは、指定されたファイルが存在しないという意味であり、フィルタが存在しないという意味ではない。