播放声音资源时的BSOD

时间:2010-09-21 21:33:47

标签: vb.net windows-xp audio

我有一个VB.NET应用程序在客户端的计算机上崩溃并出现BSOD错误... KERNEL_DATA_INPAGE_ERROR。

此错误发生在我的程序执行两项操作的位置:

  • 锁定计算机
  • 以BackgroundLoop模式播放声音

为了锁定工作站,我只是使用它:

<DllImport("user32")> _
Public Shared Sub LockWorkStation()
End Sub

为了播放声音,我这样做:

My.Computer.Audio.Play(My.Resources.ResourceManager.GetStream("somesound"), AudioPlayMode.BackgroundLoop)

现在,此声音循环直到用户重新登录。我的软件检测到会话状态切换并停止播放声音。有时当我重新登录时,声卡会在一瞬间播放垃圾数据,而不是其余的音频缓冲区。我觉得这与会话切换有关。

我的客户是否可能遇到锁定计算机时发生内存损坏的问题?

我为这篇文章的模糊性道歉......我不知道从哪里开始,因为我无法自己重现这个问题。

编辑:如果声音自行播放,即使没有锁定电脑,最终计算机也会锁定然后再进行蓝屏。在锁定声音的同时播放声音会使声音更快发生。

编辑#2:所以我现在看到它失败了。声音循环开始正常播放,但很快就会切换到循环播放垃圾数据。就好像它只是在内存中读取一个随机位置并循环它。非常奇怪的行为!

解决了!:毕竟这是硬件。显然,这种特殊型号的笔记本电脑存在扬声器安装在硬盘驱动器顶部的问题。当大声播放声音时,会产生各种各样的问题。

1 个答案:

答案 0 :(得分:4)

蓝屏几乎肯定与有缺陷的硬件或驱动程序有关。从软件方面来说,除了整理解决方案之外,你真的没什么可做的。

您可以perform a memory dump并尝试确定哪些内容出了问题,或者通过一些巧妙的调试来查看它为什么会被炸弹以避免它。

否则,您可能正在谈论在相关机器上进行一些维护工作。