MFLockSharedWorkQueue 函数 (mfapi.h)
获取并锁定共享工作队列。
语法
HRESULT MFLockSharedWorkQueue(
[in] PCWSTR wszClass,
[in] LONG BasePriority,
[in, out] DWORD *pdwTaskId,
[out] DWORD *pID
);
parameters
[in] wszClass
MMCSS 任务的名称。
[in] BasePriority
工作队列线程的基本优先级。
如果正 (wszClass=“”) 使用常规优先级队列,则必须传入值 0。
[in, out] pdwTaskId
MMCSS 任务标识符。 输入时,指定现有的 MCCSS 任务组 ID ,或使用值零创建新的任务组。 如果使用常规优先级队列 (wszClass=“”) ,则必须传入 NULL 。 在输出时,接收实际的任务组 ID。
[out] pID
接收新工作队列的标识符。 在排队工作项时使用此标识符。
返回值
如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
多线程工作队列使用线程池来调度工作项。 每当线程可用时,它就会从队列中取消下一个工作项的排队。 工作项按先入先出的顺序取消排队,但不会序列化工作项。 换句话说,工作队列在开始下一个工作项之前不会等待工作项完成。
在单个进程中,Microsoft Media Foundation 平台为每个多媒体类计划程序服务 (MMCSS) 任务创建最多一个多线程队列。 MFLockSharedWorkQueue 函数检查匹配的工作队列是否已存在。 如果没有,该函数将创建新的工作队列,并将工作队列注册到 MMCSS。 函数 (pdwTaskId) 返回 MMCSS 任务标识符, (pID) 返回工作队列标识符。 若要对工作项进行排队,请将工作队列标识符传递给以下任一函数:
MFLockSharedWorkQueue 函数还会锁定队列。 在进程退出之前,调用 MFUnlockWorkQueue 以解锁工作队列。如果正 (wszClass=“”) 使用常规优先级队列,则必须将 NULL 传递到 pdwTaskId ,并且必须将值 0 传递到 BasePriority 中。
要求
最低受支持的客户端 | Windows 8 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | mfapi.h |
Library | Mfplat.lib |
DLL | Mfplat.dll |