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

另请参阅

媒体基础函数

工作队列和线程处理改进

工作队列