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 函数初始化为一个。 元素递增并递减,因为每个通知 DPC 已排队并完成。 当结构被释放时,该元素用于确定时钟的所有者是否应释放结构,或者挂起的 DPC 是否应异步释放它。

要求

要求 价值
目标平台 普遍
标头 ks.h (包括 Ks.h)
Ks.lib
IRQL PASSIVE_LEVEL

另请参阅

KStrCancelTimer

KStrCorrelatedTime

KStrSetTimer

KsAllocateDefaultClock

KsFreeDefaultClock