IMediaLocator::FindMediaFile メソッド
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
注意
[非推奨。 この API は、Windows の今後のリリースから削除される可能性があります。
メソッドは FindMediaFile
ファイルを検索し、成功した場合はファイルへのパスを取得します。
構文
HRESULT FindMediaFile(
BSTR Input,
BSTR FilterString,
BSTR *pOutput,
long Flags
);
パラメーター
-
入力
-
パスを含むファイル名。ファイルが最後に存在することが判明した場所。 タイムラインのソース オブジェクトの場合は、現在のメディア名を使用します。
-
FilterString
-
OPENFILENAME 構造体の lpstrFilter メンバーによって必要に応じて書式設定されたフィルター文字列のペアを含む BSTR。 [ファイルを開く] ダイアログ ボックスが表示される場合、メディア ロケーターはこのフィルターを使用します。 Flags パラメーターに SFN_VALIDATEF_POPUP フラグが含まれていない場合、値は NULL にすることができます。
-
pOutput
-
ファイルへの実際のパスを受け取る変数へのポインター 。 Input に含まれる値と異なる場合、およびメソッドがファイルを正常に見つけた場合。
-
Flags
-
0 個以上のフラグのビットごとの組み合わせ。 使用可能なフラグの一覧については、「 ファイル名の検証フラグ」を参照してください。
戻り値
このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。
解説
FilterString パラメーターで指定された [ファイルを開く] ダイアログのフィルター文字列には、内部 Null 文字が含まれています。 たとえば、Video\0*.avi\0\0 は有効なフィルター文字列です。 SysAllocStr 関数を使用して BSTR を割り当てることはできません。この関数は Null で終わる文字列を受け取り、最初の Null 文字で文字列を切り捨てます。 したがって、 SysAllocStringLen などの関数を使用します。これには、長さの明示的なパラメーターが含まれます。
BSTR filter = SysAllocStringLen(L"Video\0*.avi\0", 12);
// Note: SysAllocStringLen appends an additional '\0' to the string.
ユーザーが [ファイルを開く] ダイアログを取り消すと、メソッドは E_FAILを返します。
メソッドは、pOutput で BSTR にメモリを割り当てます。 メモリを解放するには、アプリケーションで SysFreeString を呼び出す必要があります。
Note
ヘッダー ファイル Qedit.h は、バージョン 7 より後の Direct3D ヘッダーと互換性がありません。
注意
Qedit.h を入手するには、Windows Vista および .NET Framework 3.0 のMicrosoft Windows SDK Update をダウンロードします。 Qedit.h は、Windows 7 および .NET Framework 3.5 Service Pack 1 のMicrosoft Windows SDKでは使用できません。
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|
関連項目