У меня есть приложение 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: Итак, я видел, что сейчас это не получается.Звуковая петля начинает воспроизводиться правильно, но быстро переключается на зацикливание мусорных данных.Это как если бы он просто читал случайное место в памяти и зацикливал его.Очень странное поведение!
Решено !: В конце концов, это было аппаратно.Очевидно, что у этой конкретной модели ноутбука проблема в том, что динамик установлен прямо над жестким диском.При громком воспроизведении звука возникают всевозможные проблемы.