2017-07-24 51 views
2

我在WDK 8.0的MSVAD基礎上編寫了一個虛擬音頻驅動程序。司機在MS Win XP,Vista,8.x和10上工作良好。但在Windows創作者更新(1703)開始後,我注意到聲音開始失去並且落後於我的驅動程序。MSVAD虛擬驅動程序丟失音頻數據包以便在MS Windows 10中渲染1703

我做了一些研究,並檢測到以下情況:驅動程序複製的音頻數據少於我的預期。例如:

CMiniportWaveCyclicStreamMSVAD :: CopyTo()收到1920字節並且CMiniportWaveCyclicStreamMSVAD :: CopyFrom()在輸出上發送較少的音頻數據(1764)。爲什麼????

請有任何建議!

回答

0

我只爲我的項目編寫解決方案。無論如何,這個發現的錯誤可以幫助你修復你的驅動程序。

原因:

我的音頻通道總是具有WAVEFORMATEX參數的流:nSamplesPerSec = 44100和nAvgBytesPerSec = 176400.在MS Win10 1703 MSVAD驅動器改變用於流的輸入參數:nSamplesPerSec = 48000和nAvgBytesPerSec = 192000.但輸出參數保持不變:nSamplesPerSec = 44100和nAvgBytesPerSec = 176400.所以驅動程序接收到1920個字節併發出1764個字節。因此,司機每10mS失去156個字節的聲音。

解決方案:

部隊駕駛者選擇源的參數:nSamplesPerSec = 44100和nAvgBytesPerSec = 176400.對於它打開文件kshelper.cpp並找到函數GetWaveFormatEx()。 return pWfx;之前添加檢查:

if (pWfx->nSamplesPerSec != 44100) 
{ 
    DPF_ENTER(("[%s] - FAIL",__FUNCTION__)); 
    return NULL; 
} 
else 
{ 
    DPF_ENTER(("[%s]-ok",__FUNCTION__)); 
    return pWfx; 
} 

我希望MS固定在未來的WDK這個bug。

相關問題