Я слепой программист, работающий над аудио-игрой для слепых. Я использую SlimDX, и он был протестирован на десятках систем от XP до Win 8.1. Мой код работает на большинстве систем просто отлично, но я получаю следующую ошибку во время выполнения на нескольких старых системах XP:
vupgraderacer.wav SlimDX.DirectSound.DirectSoundException:
DSERR_INVALIDCALL: этот вызов недопустим для текущего состояния этого объекта (-2005401550)
at SlimDX.Result.Throw[T](Object dataKey, Object dataValue) at SlimDX.Result.Record[T](Int32 hr, Boolean failed, Object dataKey, Object dataValue) at SlimDX.DirectSound.SecondarySoundBuffer..ctor(DirectSound device, SoundBufferDescription description) at RR.Sound..ctor(String fileName)
Та же ошибка повторяется для каждого звука, который он пытается использовать. Вот код, который я использую для настройки устройства DS:
dsDevice = Новый SlimDX.DirectSound.DirectSound
dsDevice.SetCooperativeLevel (OGw.Handle, SlimDX.DirectSound.CooperativeLevel.Normal)
Я понимаю, что есть другие флаги, которые можно установить, но пока эта базовая установка работала хорошо, за исключением старых систем XP. Это мой первый пост, поэтому надеюсь, что я вхожу в него правильно, если нет, пожалуйста, дайте мне знать, иногда трудно сказать, где вы находитесь или должны быть с программой для чтения экрана на форумах.
SetCooperativeLevel()
? Он возвращает HRESULT
любое значение, отличное от того, которое DS_OK
может указывать на проблему.