KsAllocateDefaultClockEx 函数 (ks.h)

KsAllocateDefaultClockEx 函数分配并初始化默认时钟结构。

语法

KSDDKAPI NTSTATUS KsAllocateDefaultClockEx(
  [out]          PKSDEFAULTCLOCK     *DefaultClock,
  [in, optional] PVOID               Context,
  [in, optional] PFNKSSETTIMER       SetTimer,
  [in, optional] PFNKSCANCELTIMER    CancelTimer,
  [in, optional] PFNKSCORRELATEDTIME CorrelatedTime,
  [in, optional] const KSRESOLUTION  *Resolution,
  [in]           ULONG               Flags
);

参数

[out] DefaultClock

指定调用方分配的共享默认时钟结构。 当前时间设置为零,状态设置为KSSTATE_STOP。 成功完成此例程后,此指针指示的结构将包含对默认时钟的引用。 返回的数据应被视为不透明,并保留供系统使用。

[in, optional] Context

(可选)包含备用时间设施的上下文。 如果使用计时器或相关时间函数,则必须设置此值。

[in, optional] SetTimer

(可选)包含指向驱动程序定义的 KStrSetTimer 函数的指针,该函数用于基于呈现时间生成 DPC 计时器回调。 如果已设置,则 函数将用于根据当前演示时间的增量设置计时器,以便生成事件通知。 如果提供 KStrSetTimer 函数来设置计时器,则还必须提供相应的 KStrCancelTimer 函数。 如果要使用默认的 KeSetTimerEx 函数来估计下一个通知时间,则此参数中传递 NULL。 通常,仅当还使用了 KStrCorrelatedTime 函数时,才会设置此参数。 KStrSetTimer 函数必须具有与 KeSetTimerEx 相同的特征。

[in, optional] CancelTimer

(可选)包含指向驱动程序定义的 KStrCancelTimer 函数的指针,用于取消未完成的计时器回调。 如果提供 KStrCancelTimer 函数来取消计时器,则还必须提供相应的 KStrSetTimer 函数。 如果要使用默认 KeCancelTimer 函数取消计时器,则此参数中传递 NULLKStrCancelTimer 函数必须具有与 KeCancelTimer 相同的特征。

[in, optional] CorrelatedTime

(可选)包含指向驱动程序定义的 KStrCorrelatedTime 函数的指针,以相关方式检索演示文稿和物理时间。 这允许时钟所有者完全确定当前时间。 如果要使用默认 KeQueryPerformanceCounter 函数来调节时间进度,则传递 NULL

[in, optional] Resolution

(可选)包含时钟的备用粒度和/或误差系数。 仅当提供了备用计时器或相关时间函数时,才能使用此功能。 如果使用备用相关时间,可以指定备用粒度,否则结构元素必须为零。 如果使用备用计时器,可以指定备用错误,否则结构元素必须为零。

[in] Flags

保留,设置为零。

返回值

如果成功, KsAllocateDefaultClockEx 函数返回STATUS_SUCCESS;如果失败,则返回内存错误。

注解

内部 DefaultClock.ReferenceCount 元素由 KsAllocateDefaultClock 函数初始化为 1。 随着每个通知 DPC 排队并完成,元素会递增和递减。 当要释放结构时, 元素用于确定时钟的所有者是否应释放结构,或者挂起的 DPC 是否应异步释放它。

要求

要求
目标平台 通用
标头 ks.h (包括 Ks.h)
Library Ks.lib
IRQL PASSIVE_LEVEL

另请参阅

KStrCancelTimer

KStrCorrelatedTime

KStrSetTimer

KsAllocateDefaultClock

KsFreeDefaultClock