Использование пользовательских типов взаимного исключения
[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Он был заменен средством чтения исходного кода и модуля записи приемника. Средство чтения исходного кода и модуль записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код по возможности использовал средство чтения исходного кода и модуль записи приемника вместо пакета SDK для Windows Media Format 11. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Объекты взаимного исключения можно использовать в профиле для удовлетворения потребностей пользовательских сценариев. Передав значение GUID CLSID_WMMUTEX_Unknown в IWMMutualExclusion::SetType, вы сообщаете объекту взаимного исключения о том, что используется пользовательский сценарий.
При чтении файла с пользовательским значением взаимного исключения необходимо вручную управлять выбором потока. Объект чтения будет использовать первый поток, добавляемый во взаимное исключение, в качестве объекта по умолчанию.
Выполните следующие действия, чтобы создать пользовательский объект взаимного исключения и добавить его в профиль:
Создайте диспетчер профилей, вызвав функцию WMCreateProfileManager .
Начните с существующего профиля или создайте совершенно новый.
- Если вы используете существующий профиль, вызовите один из методов load интерфейса IWMProfileManager . Затем перейдите к шагу 4.
- Если вы создаете совершенно новый профиль, вызовите IWMProfileManager::CreateEmptyProfile.
Добавьте потоки в новый профиль, вызвав IWMProfile::CreateNewStream. При необходимости настройте потоки с помощью методов IWMStreamConfig. Вы также можете вызвать QueryInterface для доступа к другим интерфейсам в объекте конфигурации потока.
CreateNewStream создает только объект конфигурации потока и не влияет на профиль. После правильной настройки потока необходимо вызвать IWMProfile::AddStream , чтобы добавить поток в профиль.
Создайте объект взаимного исключения, вызвав IWMProfile::CreateNewMutualExclusion.
Добавьте нужные потоки в объект взаимного исключения, вызвав IWMStreamList::AddStream (доступный непосредственно из IWMMMutualExclusion, который наследуется от IWMStreamList).
Задайте пользовательский тип взаимного исключения, вызвав IWMMutualExclusion::SetType. Передайте CLSID_WMMUTEX_Unknown в качестве GUID типа.
Добавьте настроенный объект взаимного исключения в профиль, вызвав IWMProfile::AddMualExclusion.
Связанные темы