Как отладить нарушение прав доступа в Microsoft Audio Compression Manager в приложении DirectShow? - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть приложение Delphi 6 DirectShow, которое обменивается аудио через Skype через сокеты.Я получаю прерывистое нарушение прав доступа в одном из потоков, запущенных одной из библиотек DLL, загруженных графом фильтров при запуске цепочки фильтров DirectShow.Как я обнаружил в предыдущем сообщении SO с помощью другого участника SO, поток, который вызывает сбои, кажется, запускается диспетчером сжатия звука Microsoft (msacm32.dll):

Как я могу сказать, чтоDLL запустила поток и какое адресное пространство принадлежит DLL для внешней DLL?

Ошибка не произойдет, если я не использую сжатие.Это имеет смысл, поскольку мой график фильтра загружает библиотеку ACM только в том случае, если сжатие фактически включено с использованием параметра в моем приложении.Поэтому ** msacm32.dll * не будет загружен.Однако, если я не обмениваюсь аудио через Skype через сокеты, я не вижу нарушения доступа, даже если используется сжатие.Проблема усложняется тем, что если у меня есть сокеты, подключенные к Skype, но я никогда не отправляю данные в Skype или не получаю от него никаких данных через эти сокеты, я все еще получаю нарушение доступа.Я определил это, закомментировав код, который делает сокет отправлять и принимать вызовы, и заметил, что я все еще получил AV.Однако, если я вообще не подключаюсь к Skype через сокеты, то AV, кажется, не появляется.Я говорю «кажется», потому что несколько часов тестирования указывают на это, но это, конечно, не доказательство.

ПРИМЕЧАНИЕ: AV прерывистый.Это происходит не каждый раз, но я никогда не смогу провести более 5 испытаний подряд без этого.

Кто-нибудь когда-либо имел опыт получения нарушения доступа при использовании ACM в приложении DirectShow??Если да, то в чем причина и как вы ее исправили?

...