Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2015, 10:37   #1
penza2017
Новичок
Джуниор
 
Регистрация: 18.12.2015
Сообщений: 1
По умолчанию MFC и Waveform Audio

чтобы исправить ошибку 0xC0000005 (ошибка чтения по адресу памяти) при записи звука
(MFC приложение вызывает функции библиотеки Waveform Audio)
надо поменять вызовы функций Waveform Audio по ее документации

а не искать в диасемблерном коде место чтения ошибочного адреса памяти

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

скажите я прав или нет
(я начинающий програмист и хочу знать способ исправления подобных ошибок
чтобы не бояться их появления)?

вот снимок ситуации (visual studio 2013, адреса памяти каждый раз разные)

Необработанное исключение по адресу 0x76D5A048 (msvcrt.dll) в MFCApplication1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x6B758C70.


76D5A048 66 0F 6F 06 movdqa xmm0,xmmword ptr [esi]
( esi = 0x6b758c70 )


msvcrt.dll!___ascii_strnicmp() Нет данных
wdmaud.drv!CWaveHandle::_StartingHa ndler(void) Нет данных
wdmaud.drv!CWorker::_DoRecurringJob s(void) Нет данных
wdmaud.drv!CWorker::_ThreadProc(voi d) Нет данных
wdmaud.drv!CWorker::_StaticThreadPr oc(void *) Нет данных
kernel32.dll!@BaseThreadInitThunk@1 2() Нет данных
ntdll.dll!___RtlUserThreadStart@8( ) Нет данных
ntdll.dll!__RtlUserThreadStart@8() Нет данных


поток [0xC9C] wdmaud.drv
penza2017 вне форума Ответить с цитированием
Старый 18.12.2015, 10:44   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
бесполезно искать ошибку в чужой библиотеке, т.к. код ее не поменяешь
Цитата:
скажите я прав или нет
Многие библиотеки имеют открытые исходники.
У меня, например, были ошибки в Wine, скачал исходники, исправил, собрал себе Wine без этой ошибки.
Недавно тоже самое проделывал с SFML.

Ошибки бывают и в библиотеках, но чаще всего ошибки именно в клиентских программах.

Цитата:
вместо этого нужно менять свой код по документации (или примеру использования) библиотеки
Ну так документация и мануалы на это и нужны, чтобы можно было посмотреть как пользоваться библиотекой.
Вот смотрите, пришел к Вам гость, Вы ему тапки дали, а он нагадил в них, потому что не знал как ими пользоваться, то бишь мануал к тапкам не читал и использовал как пришлось.

Так что да, использовать библиотеки нужно так, как написано (если это не особый случай, требующий иных мер).

Последний раз редактировалось Croessmah; 18.12.2015 в 10:46.
Croessmah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На Delphi 7 работа со звуком (waveform) Дмитрий 1974 Фриланс 5 13.06.2020 20:26
Drag&Drop NO MFC! NO MFC! Антоним Win Api 1 12.11.2012 21:43
Различие кода mfc и WinApi(mfc ручками набили, а WinApi автоматически с генерировался!! нужно явное отличие, не могу найти) Артём1991 Помощь студентам 0 25.03.2012 17:13
waveform Maincore Мультимедиа в Delphi 1 24.03.2012 19:48
Audio player deel JavaScript, Ajax 4 02.01.2012 19:29