KSEVENT_TUNER_INITIATE_SCAN
KSEVENT_TUNER_INITIATE_SCAN事件會要求驅動程式起始掃描工作,並在驅動程式的相關微調裝置完成掃描工作時通知使用者模式用戶端。
使用量摘要資料表
Get | 集合 | 目標 | 事件描述項類型 | 事件數值型別 |
---|---|---|---|---|
否 | 是 | Pin | KSEVENT_TUNER_INITIATE_SCAN_S | KSEVENTDATA |
備註
每個掃描要求都應該是非封鎖。 也就是說,驅動程式不應該在傳回控制權之前等待掃描工作完成。 事實上,驅動程式應該使用個別的執行緒來執行掃描工作。
雖然KSEVENT_TUNER_INITIATE_SCAN事件與KSPROPERTY_TUNER_FREQUENCY無關,但KSEVENT_TUNER_INITIATE_SCAN對應至KSPROPERTY_TUNER_FREQUENCY_S結構的TuningFlags成員中的KS_TUNER_TUNING_EXACT微調旗標。 這表示掃描一律會嘗試判斷下一個通道的確切頻率。 此外,微調裝置所遵循的微調策略是由KSPROPERTY_TUNER_MODE_CAPS_S結構) 策略成員 (KS_TUNER_STRATEGY_DRIVER_TUNES所控制。 即使使用不同的旗標和策略來控制 KSPROPERTY_TUNER_FREQUENCY,也會一律遵循這些固定旗標和策略。
換句話說,KSTUNER_TUNING_FLAGS和KSTUNER_STRATEGY值不會影響KSEVENT_TUNER_INITIATE_SCAN的行為。
完成和狀態
掃描狀態屬性 KSPROPERTY_TUNER_SCAN_STATUS 提供目前頻率和訊號鎖定狀態的相關資訊。 應用程式會從 KSPROPERTY_TUNER_SCAN_STATUS 屬性查詢鎖定狀態。 應用程式也會查詢 KSPROPERTY_TUNER_STANDARD_MODE 屬性,以取得自動訊號標準偵測的相關資訊。 如果在要求的範圍中找不到任何訊號,KSPROPERTY_TUNER_SCAN_STATUS 屬性會傳回KSPROPERTY_TUNER_SCAN_STATUS_S結構之 LockStatus成員中的Tuner_LockType_None值。 如果微調裝置可以從訊號自動偵測微調器標準,而且找到替代標準中的訊號,微調裝置本身就可以處理 對 KSPROPERTY_TUNER_STANDARD 屬性的任何要求。 微調裝置可能無法繼續超出階段鎖定迴圈 (PLL) 鎖定,而且可能指定標準未知。 或者,微調裝置可能會自動調整為不同的訊號標準。 此外,微調裝置甚至可能會取得該訊號標準的完整鎖定,並判斷替代標準。 在頻率頻譜中有多個訊號標準時,可能會發生這類情況。
界限條件
如果驅動程式發現通道的中心頻率超出應用程式提供的範圍,則驅動程式必須忽略該訊號並移至下一個訊號;驅動程式不得傳回所提供範圍內可能的最佳近似值。 驅動程式必須移至下一個訊號,以避免應用程式嘗試編譯通道清單時重複計算通道。
基於相同的原因,應用程式必須將預期的通道頻寬移位一半, (大約 6/2 = 3MHz 的類比和數位電視) ,以確保當硬體遇到硬體無法解碼的訊號時,通道不會加倍計數。 在此情況下,驅動程式很難避免重複計算特定通道。
多重標準規格
每當找到新的通道或訊號時,掃描工作必須完成。 驅動程式接著會透過 KSPROPERTY_TUNER_SCAN_STATUS 屬性傳回掃描狀態。 即使驅動程式判斷新找到的通道不符合先前套用的標準,掃描也必須完成。 應用程式必須處理新的通道資訊,而且必須重新提交掃描要求,以尋找具有相同訊號標準的另一個通道。