У меня есть приложение, для которого у меня нет исходного кода, которое воспроизводит звук, но отсутствует средство для ускорения или временного отключения звука.Я пытаюсь добавить эти две функции, вводя DLL и перехватывая waveOutOpen, waveOutWrite (и либо препятствуя воспроизведению, либо пытаясь waveOutSetPlaybackRate для отключения звука и ускорения соответственно).Однако у меня есть пара проблем.
Давайте сначала поговорим о кнопке "отключить звук", так как это был мой первый заказ: я буду ссылаться на подключенные версии функций как MyWaveOut ...
1) У меня нет проблем с подключением функций, и я вижу, что они вызываются в операторах журнала dbgView.Моя первая попытка состояла в том, чтобы просто перехватить вызовы функции waveOutWrite, и если была нажата моя кнопка отключения звука, чтобы просто вернуть MMSYSERR_NOERROR в функции MyWaveOutWrite и не вызывать реальный waveOutWrite.Это правильно препятствует воспроизведению звука, однако при отключении звука я сталкиваюсь с проблемой.Звук не воспроизводится снова, когда я отключаю отключение звука, фактически подключенная функция (и не настоящая) снова вызывается подключенным процессом.
Моим первым подозрением было то, что я не вызывал функцию обратного вызова waveOutProc, который регистрируется приложением при вызове WaveOutOpen.Поэтому я также подключил waveOutOpen, сохранил и переключил адрес waveOutProc на MyWaveOutProc и добавил логику для вызова реального waveOutProc перед возвратом того же MMSYSERR_NOERROR в MyWaveOutWrite.Это приводило к странным результатам, из-за которых воспроизводимый визуал быстро переходил вперед, но затем возникла та же проблема, что звук не возвращался (функция MyWaveOutWrite больше никогда не вызывалась).
2)
Что касаетсяЧасть ускорения звука, которую я пытался использовать waveOutSetPlaybackRate, но это просто возвращало MSYSERR_NOTSUPPORTED, поэтому я зашел в тупик с этим.Перемычки GetTickCount и QueryPerformanceCounter не оказали никакого влияния на воспроизведение звука вообще, визуальный индикатор воспроизведения будет быстро перемещаться вперед, если звук отключен, но когда аудиоустройство включено, визуальное изображение кажется даже связанным со скоростью воспроизведения звука..
Буду признателен за любую помощь с теми, кто испытал с любой из этих проблем.Я обычно не работаю с Windows Audio, так что это немного опыт для меня.
Спасибо