IKsPin::KsQueryMediums メソッド
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
メソッドは KsQueryMediums
、ピンでサポートされているメディアを取得します。
構文
HRESULT KsQueryMediums(
[out] KSMULTIPLE_ITEM **ppmi
);
パラメーター
-
ppmi [out]
-
KSMULTIPLE_ITEM構造体へのポインターのアドレス。
戻り値
メソッドが成功した場合は、S_OK を返します。 失敗した場合は、 HRESULT エラー コードが返されます。
解説
このメソッドは、タスクによって割り当てられた KSMULTIPLE_ITEM 構造体を返します。その後に 0 個以上の REGPINMEDIUM 構造体が続きます。 KSMULTIPLE_ITEM構造体の Count メンバーは、REGPINMEDIUM 構造体の数を指定します。 各 REGPINMEDIUM 構造体は、ピンでサポートされるメディアを定義します。
呼び出し元は、 CoTaskMemFree 関数を使用して、返された構造体を解放する必要があります。
Ksproxy.h の前に Ks.h を含める必要があります。
例
次のヘルパー関数は、指定されたメディアに対してピンの照合を試みます。
HRESULT FindMatchingMedium(
IPin *pPin,
REGPINMEDIUM *pMedium,
bool *pfMatch)
{
IKsPin* pKsPin = NULL;
KSMULTIPLE_ITEM *pmi;
*pfMatch = false;
HRESULT hr = pPin->QueryInterface(IID_IKsPin, (void **)&pKsPin);
if (FAILED(hr))
return hr; // Pin does not support IKsPin.
hr = pKsPin->KsQueryMediums(&pmi);
pKsPin->Release();
if (FAILED(hr))
return hr; // Pin does not support mediums.
if (pmi->Count)
{
// Use pointer arithmetic to reference the first medium structure.
REGPINMEDIUM *pTemp = (REGPINMEDIUM*)(pmi + 1);
for (ULONG i = 0; i < pmi->Count; i++, pTemp++)
{
if (pMedium->clsMedium == pTemp->clsMedium)
{
*pfMatch = true;
break;
}
}
}
CoTaskMemFree(pmi);
return S_OK;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー |
|
ライブラリ |
|
関連項目