IMFClock::GetCorrelatedTime 方法 (mfidl.h)

检索与系统时间相关的最后一个时钟时间。

语法

HRESULT GetCorrelatedTime(
  [in]  DWORD    dwReserved,
  [out] LONGLONG *pllClockTime,
  [out] MFTIME   *phnsSystemTime
);

参数

[in] dwReserved

保留,必须为 0。

[out] pllClockTime

接收最后一个已知时钟时间(以时钟频率的单位为单位)。

[out] phnsSystemTime

接收与 pllClockTime 中返回的时钟时间相对应的系统时间(以 100 纳秒为单位)。

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
MF_E_CLOCK_NO_TIME_SOURCE
时钟没有时间源。

注解

在某个固定的时间间隔内,时钟将其内部时钟周期与系统时间相关联。 (系统时间是高分辨率性能计数器返回的时间。) 此方法返回:

  • 与系统时间相关的最近时钟时间。
  • 执行关联的系统时间。
时钟时间在 pllClockTime 参数中返回,以时钟频率的单位表示。 如果时钟的 IMFClock::GetClockCharacteristics 方法返回 MFCLOCK_CHARACTERISTICS_FLAG_FREQUENCY_10MHZ 标志,则时钟的频率为 10 MHz, (每个时钟刻度为 100 纳秒) 。 否则,可以通过调用 IMFClock::GetProperties 来获取时钟的频率。 频率是在该方法返回的 MFCLOCK_PROPERTIES 结构的 qwClockFrequency 成员中给出的。

系统时间在 phnsSystemTime 参数中返回,并且始终以 100 纳秒为单位表示。

若要了解时钟将其时钟时间与系统时间相关联的频率,请调用 GetProperties。 相关间隔在 MFCLOCK_PROPERTIES 结构的 qwCorrelationRate 成员中提供。 如果 qwCorrelationRate 为零,则表示时钟在调用 GetCorrelatedTime 时执行关联。 否则,可以通过从上次相关时间推断来计算当前时钟时间。

某些时钟通过 IMFRateControl 接口支持速率更改。 如果是这样,时钟时间以频率×当前速率前进。 如果时钟不公开 IMFRateControl 接口,则速率始终为 1.0。

对于演示时钟,时钟时间是表示时间,并且始终相对于 IMFPresentationClock::Start 中指定的开始时间。 还可以通过调用 IMFPresentationClock::GetTime 来获取演示时间。

要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 mfidl.h
Library Mfuuid.lib

另请参阅

IMFClock

MFTIME