BSOD во время воспроизведения звукового ресурса - PullRequest
2 голосов
/ 22 сентября 2010

У меня есть приложение 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)

Теперь этот звук зацикливается, пока пользователь снова не войдет в систему. Мое программное обеспечение обнаруживает переключение состояния сеанса и останавливает воспроизведение звука.Иногда, когда я снова вхожу в систему, звуковая карта воспроизводит данные мусора в течение доли секунды вместо остальной части аудиобуфера.У меня складывается впечатление, что это как-то связано с переключением сеансов.

Может ли быть у моего клиента проблема, связанная с повреждением памяти в момент блокировки компьютера?

Я прошу прощения заНеопределенность этого поста ... Я не уверен, с чего начать, так как сам не могу воспроизвести проблему.

Редактировать: Если звук остается воспроизводиться сам по себе, даже безблокировка компьютера, в конечном итоге компьютер заблокируется, а затем синий экран.Воспроизведение звука с одновременной блокировкой приводит к тому, что оно происходит раньше.

Edit # 2: Итак, я видел, что сейчас это не получается.Звуковая петля начинает воспроизводиться правильно, но быстро переключается на зацикливание мусорных данных.Это как если бы он просто читал случайное место в памяти и зацикливал его.Очень странное поведение!

Решено !: В конце концов, это было аппаратно.Очевидно, что у этой конкретной модели ноутбука проблема в том, что динамик установлен прямо над жестким диском.При громком воспроизведении звука возникают всевозможные проблемы.

1 Ответ

4 голосов
/ 22 сентября 2010

Синий экран почти наверняка связан с неисправным оборудованием или драйверами.Программно, на самом деле вы ничего не можете с этим поделать, кроме создания обходного пути.

Вы можете выполнить дамп памяти и попытаться определить, что именно пошло не так, или с помощью некоторой умной отладки.посмотрите, где он взрывается, чтобы попытаться избежать этого.

В противном случае, вы, вероятно, говорите о выполнении каких-либо работ по техническому обслуживанию рассматриваемой машины.

...