2017-07-24 25 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。

相关问题