vb.net - 播放声音资源时出现 BSOD

标签 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)

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

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

对于这篇文章的含糊之处,我深表歉意...我不知道从哪里开始,因为我自己无法重现该问题。

编辑:如果让声音自行播放,即使没有锁定计算机,最终计算机也会锁定,然后蓝屏。在同一时间锁定时播放声音会导致它发生得更快。

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

解决了!:毕竟一直都是硬件。显然,这款特定型号的笔记本电脑存在一个问题,即扬声器安装在硬盘驱动器的正上方。当大声播放声音时,会产生各种各样的问题。

最佳答案

蓝屏几乎肯定与有缺陷的硬件或驱动程序有关。从软件角度来说,除了制定解决方法之外,您实际上无能为力。

您可以perform a memory dump并尝试确定具体出了什么问题,或者通过一些巧妙的调试来查看它在哪里爆炸,以便尝试避免它。

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

关于vb.net - 播放声音资源时出现 BSOD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3764670/

相关文章:

mysql - 在代码中访问DataTable中列的内容

.net - 如何将多个数据 View 合并为一个?

WPF 渲染在 Vista 上丑陋且模糊

Python 将 wav 转换为 mp3

audio - 使用VAMP,VST或其他插件框架进行音频后处理

vb.net - 与此 C# 代码等效的 VB.NET 是什么?

c# - Asp.NET 中的领英 API

java - 使用 Java 实现的 Kerberos SSO

cmd- 逗号分隔参数 比起空格?

html - html 5音频流伪造文件。渐进式下载,PCM WAV