事件机制和流

本部分仅适用于从 Microsoft Windows Vista 开始的操作系统。

扫描操作完成后,驱动程序通过事件句柄通知应用程序KSEVENT_TUNER_INITIATE_SCAN_S结构的 EventData 成员指定。 但是,若要确定扫描操作的实际锁定状态,必须调用驱动程序的 KSPROPERTY_TUNER_SCAN_STATUS 属性。

与所有内核流式处理事件请求一样,应用程序可以在事件完成之前取消 KSEVENT_TUNER_INITIATE_SCAN 事件请求。 当应用程序需要取消当前扫描操作时,在调用驱动程序KSEVENT_TUNER_INITIATE_SCAN时,优化器筛选器 (KsTvTune.ax) 将KSEVENT_TUNER_INITIATE_SCAN_S的 StartFrequencyEndFrequency 成员设置为零。 驱动程序可能会执行整个清理。 但是,由于 KsTvTune.ax 可能会请求另一个整个扫描操作,因此驱动程序可能不会执行整个清理。 取消扫描操作的调用是同步操作。

当应用程序需要终止扫描时, KsTvTune.ax 调用 StartFrequencyEndFrequency 设置为零的 KSEVENT_TUNER_INITIATE_SCAN 以取消注册事件。 然后,驱动程序必须对其工作线程和其他内部数据结构执行整个清理。