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


Использование пользовательских типов взаимного исключения

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Он был заменен средством чтения исходного кода и модуля записи приемника. Средство чтения исходного кода и модуль записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код по возможности использовал средство чтения исходного кода и модуль записи приемника вместо пакета SDK для Windows Media Format 11. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Объекты взаимного исключения можно использовать в профиле для удовлетворения потребностей пользовательских сценариев. Передав значение GUID CLSID_WMMUTEX_Unknown в IWMMutualExclusion::SetType, вы сообщаете объекту взаимного исключения о том, что используется пользовательский сценарий.

При чтении файла с пользовательским значением взаимного исключения необходимо вручную управлять выбором потока. Объект чтения будет использовать первый поток, добавляемый во взаимное исключение, в качестве объекта по умолчанию.

Выполните следующие действия, чтобы создать пользовательский объект взаимного исключения и добавить его в профиль:

  1. Создайте диспетчер профилей, вызвав функцию WMCreateProfileManager .

  2. Начните с существующего профиля или создайте совершенно новый.

    • Если вы используете существующий профиль, вызовите один из методов load интерфейса IWMProfileManager . Затем перейдите к шагу 4.
    • Если вы создаете совершенно новый профиль, вызовите IWMProfileManager::CreateEmptyProfile.
  3. Добавьте потоки в новый профиль, вызвав IWMProfile::CreateNewStream. При необходимости настройте потоки с помощью методов IWMStreamConfig. Вы также можете вызвать QueryInterface для доступа к другим интерфейсам в объекте конфигурации потока.

    CreateNewStream создает только объект конфигурации потока и не влияет на профиль. После правильной настройки потока необходимо вызвать IWMProfile::AddStream , чтобы добавить поток в профиль.

  4. Создайте объект взаимного исключения, вызвав IWMProfile::CreateNewMutualExclusion.

  5. Добавьте нужные потоки в объект взаимного исключения, вызвав IWMStreamList::AddStream (доступный непосредственно из IWMMMutualExclusion, который наследуется от IWMStreamList).

  6. Задайте пользовательский тип взаимного исключения, вызвав IWMMutualExclusion::SetType. Передайте CLSID_WMMUTEX_Unknown в качестве GUID типа.

  7. Добавьте настроенный объект взаимного исключения в профиль, вызвав IWMProfile::AddMualExclusion.

Интерфейс IWMMutualExclusion

Интерфейс IWMProfile

Интерфейс IWMProfileManager

Интерфейс IWMStreamConfig

Интерфейс IWMStreamList

Использование взаимного исключения

WMCreateProfileManager