共用方式為


IMFASFSplitter::GetSelectedStreams 方法 (wmcontainer.h)

取得目前選取數據流的清單。

語法

HRESULT GetSelectedStreams(
  [out]     WORD *pwStreamNumbers,
  [in, out] WORD *pwNumStreams
);

參數

[out] pwStreamNumbers

WORD 陣列的位址。 此陣列會接收所選取數據流的數據流編號。 此參數可以是 Null

[in, out] pwNumStreams

在輸入時,指向包含 pwStreamNumbers 陣列中元素數目的變數。 如果 pwStreamNumbersNULL,請將變數設定為零。

在輸出中,接收複製到 pwStreamNumbers 的項目數目。 每個元素都是所選數據流的標識碼。

傳回值

方法會傳回 HRESULT。 可能的值包括 (但不限於) 下表中的這些值。

傳回碼 描述
S_OK
此方法已成功。
E_INVALIDARG
無效引數。
MF_E_BUFFERTOOSMALL
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

呼叫這個方法之前,請先初始化 *pwNumStreamspwStreamNumbers 中的項目數目。 如果 pwStreamNumbersNULL,請將 設定 *pwNumStreams 為零。

根據預設,分隔器不會選取任何數據流。 呼叫 IMFASFSplitter::SelectStreams 方法來選取數據流。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 wmcontainer.h
程式庫 Mfuuid.lib

另請參閱

ASF 分隔器

IMFASFSplitter