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 函数取消计时器,则此参数中传递 NULL。 KStrCancelTimer 函数必须具有与 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 |