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 函数初始化为一个。 元素递增并递减,因为每个通知 DPC 已排队并完成。 当结构被释放时,该元素用于确定时钟的所有者是否应释放结构,或者挂起的 DPC 是否应异步释放它。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | ks.h (包括 Ks.h) |
库 | Ks.lib |
IRQL | PASSIVE_LEVEL |