IMFASFSplitter::GetSelectedStreams 方法 (wmcontainer.h)
取得目前選取數據流的清單。
語法
HRESULT GetSelectedStreams(
[out] WORD *pwStreamNumbers,
[in, out] WORD *pwNumStreams
);
參數
[out] pwStreamNumbers
WORD 陣列的位址。 此陣列會接收所選取數據流的數據流編號。 此參數可以是 Null。
[in, out] pwNumStreams
在輸入時,指向包含 pwStreamNumbers 陣列中元素數目的變數。 如果 pwStreamNumbers 為 NULL,請將變數設定為零。
在輸出中,接收複製到 pwStreamNumbers 的項目數目。 每個元素都是所選數據流的標識碼。
傳回值
方法會傳回 HRESULT。 可能的值包括 (但不限於) 下表中的這些值。
傳回碼 | 描述 |
---|---|
|
此方法已成功。 |
|
無效引數。 |
|
pwStreamNumbers 陣列小於選取的數據流數目。 請參閱<備註>。 |
備註
若要取得選取的數據流數目,請將 pwStreamNumbers 設定為 NULL。 方法會傳回 MF_E_BUFFERTOSMALL ,但也會將的值 *pwNumStreams
設定為等於所選數據流的數目。 然後配置該大小的陣列,並再次呼叫 方法,並在 pwStreamNumbers 參數中傳遞陣列。
下列程式碼顯示這些步驟:
HRESULT DisplaySelectedStreams(IMFASFSplitter *pSplitter)
{
WORD count = 0;
HRESULT hr = pSplitter->GetSelectedStreams(NULL, &count);
if (hr == MF_E_BUFFERTOOSMALL)
{
WORD *pStreamIds = new (std::nothrow) WORD[count];
if (pStreamIds)
{
hr = pSplitter->GetSelectedStreams(pStreamIds, &count);
if (SUCCEEDED(hr))
{
for (WORD i = 0; i < count; i++)
{
printf("Selected stream ID: %d\n", pStreamIds[i]);
}
}
delete [] pStreamIds;
}
else
{
hr = E_OUTOFMEMORY;
}
}
return hr;
}
或者,您可以配置等於數據流總數的陣列,並將該數位傳遞給 pwStreamNumbers。
呼叫這個方法之前,請先初始化 *pwNumStreams
為 pwStreamNumbers 中的項目數目。 如果 pwStreamNumbers 為 NULL,請將 設定 *pwNumStreams
為零。
根據預設,分隔器不會選取任何數據流。 呼叫 IMFASFSplitter::SelectStreams 方法來選取數據流。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | wmcontainer.h |
程式庫 | Mfuuid.lib |