Поделиться через


Метод IMFASFSplitter::GetSelectedStreams (wmcontainer.h)

Возвращает список выбранных в данный момент потоков.

Синтаксис

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

Параметры

[out] pwStreamNumbers

Адрес массива WORD. Этот массив получает номера выбранных потоков. Этот параметр может принимать значение NULL.

[in, out] pwNumStreams

При входе указывает на переменную, содержащую количество элементов в массиве pwStreamNumbers . Установите для переменной значение 0, если pwStreamNumbers имеет значение NULL.

В выходных данных получает количество элементов, скопированных в 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.

Перед вызовом этого метода инициализируйте *pwNumStreams количество элементов в pwStreamNumbers. Если pwStreamNumbers имеет значение NULL, задайте нулевое значение *pwNumStreams .

По умолчанию разделитель не выбирает потоки. Выберите потоки, вызвав метод IMFASFSplitter::SelectStreams .

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header wmcontainer.h
Библиотека Mfuuid.lib

См. также раздел

Разделитель ASF

IMFASFSplitter