Função MFLockSharedWorkQueue (mfapi.h)
Obtém e bloqueia uma fila de trabalho compartilhada.
Sintaxe
HRESULT MFLockSharedWorkQueue(
[in] PCWSTR wszClass,
[in] LONG BasePriority,
[in, out] DWORD *pdwTaskId,
[out] DWORD *pID
);
Parâmetros
[in] wszClass
O nome da tarefa MMCSS.
[in] BasePriority
A prioridade base dos threads da fila de trabalho.
Se a fila de prioridade regular estiver sendo usada (wszClass=""), o valor 0 deverá ser passado.
[in, out] pdwTaskId
O identificador de tarefa do MMCSS. Na entrada, especifique uma ID de grupo de tarefas MCCSS existente ou use o valor zero para criar um novo grupo de tarefas. Se a fila de prioridade regular estiver sendo usada (wszClass=""), NULL deverá ser passado. Na saída, recebe a ID real do grupo de tarefas.
[out] pID
Recebe um identificador para a nova fila de trabalho. Use esse identificador ao enfileirar itens de trabalho.
Valor retornado
Se essa função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
Uma fila de trabalho multithread usa um pool de threads para expedir itens de trabalho. Sempre que um thread fica disponível, ele desativa o próximo item de trabalho da fila. Os itens de trabalho são desempedidos na ordem de primeiro a entrar primeiro a sair, mas os itens de trabalho não são serializados. Em outras palavras, a fila de trabalho não aguarda a conclusão de um item de trabalho antes de iniciar o próximo item de trabalho.
Em um único processo, a plataforma Microsoft Media Foundation cria até uma fila multithread para cada tarefa do MMCSS (Multimedia Class Scheduler Service). A função MFLockSharedWorkQueue verifica se já existe uma fila de trabalho correspondente. Caso contrário, a função criará uma nova fila de trabalho e registrará a fila de trabalho com o MMCSS. A função retorna o identificador de tarefa MMCSS (pdwTaskId) e o pID (identificador de fila de trabalho). Para enfileirar um item de trabalho, passe o identificador da fila de trabalho para qualquer uma das seguintes funções:
A função MFLockSharedWorkQueue também bloqueia a fila. Antes que o processo seja encerrado, chame MFUnlockWorkQueue para desbloquear a fila de trabalho.Se a fila de prioridade regular estiver sendo usada (wszClass=""), NULL deverá ser passado para pdwTaskId e o valor 0 deverá ser passado para BasePriority.
Requisitos
Cliente mínimo com suporte | Windows 8 [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2012 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | mfapi.h |
Biblioteca | Mfplat.lib |
DLL | Mfplat.dll |