Функция MFLockSharedWorkQueue (mfapi.h)
Получает и блокирует общую рабочую очередь.
Синтаксис
HRESULT MFLockSharedWorkQueue(
[in] PCWSTR wszClass,
[in] LONG BasePriority,
[in, out] DWORD *pdwTaskId,
[out] DWORD *pID
);
Параметры
[in] wszClass
Имя задачи MMCSS.
[in] BasePriority
Базовый приоритет потоков рабочей очереди.
Если используется очередь с регулярным приоритетом (wszClass=""), необходимо передать значение 0.
[in, out] pdwTaskId
Идентификатор задачи MMCSS. На входных данных укажите идентификатор существующей группы задач MCCSS или используйте нулевое значение для создания новой группы задач. Если используется очередь с обычным приоритетом (wszClass=""), необходимо передать значение NULL . В выходных данных получает фактический идентификатор группы задач.
[out] pID
Получает идентификатор для новой рабочей очереди. Используйте этот идентификатор при постановке рабочих элементов в очередь.
Возвращаемое значение
Если эта функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Многопоточность рабочей очереди использует пул потоков для отправки рабочих элементов. Всякий раз, когда поток становится доступным, он удаляет следующий рабочий элемент из очереди. Рабочие элементы выводятся из очереди в порядке "первым в очереди", но рабочие элементы не сериализуются. Иными словами, рабочая очередь не ожидает завершения рабочего элемента перед запуском следующего рабочего элемента.
В рамках одного процесса платформа Microsoft Media Foundation создает до одной многопоточной очереди для каждой задачи службы планировщика мультимедийных классов (MMCSS). Функция MFLockSharedWorkQueue проверяет, существует ли соответствующая рабочая очередь. В противном случае функция создает новую рабочую очередь и регистрирует ее в MMCSS. Функция возвращает идентификатор задачи MMCSS (pdwTaskId) и идентификатор рабочей очереди (pID). Чтобы поставить рабочий элемент в очередь, передайте идентификатор рабочей очереди в любую из следующих функций:
Функция MFLockSharedWorkQueue также блокирует очередь. Перед завершением процесса вызовите MFUnlockWorkQueue , чтобы разблокировать рабочую очередь.Если используется очередь с обычным приоритетом (wszClass=""), значение NULL должно быть передано в pdwTaskId , а значение 0 — в BasePriority.
Требования
Минимальная версия клиента | Windows 8 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | mfapi.h |
Библиотека | Mfplat.lib |
DLL | Mfplat.dll |