Я получаю код исключения 0xC0000005
(STATUS_ACCESS_VIOLATION) по адресу
0x00000000015fab774.
Это исконное исключение. В управляемом приложении это обычно вызывается одним из ваших вызовов P / Invoc или недостатком в настроенной версии WindowsCE.
Некоторое время назад у меня была идентичная проблема с кодом принтера. Собственное исключение происходило ТОЛЬКО во время присоединенной отладки, а затем не всегда, а иногда постоянно. : D. Это никогда не случалось в производстве.
На самом деле проблема заключалась в том, что C ++ получил строку (хорошо указатель на строку), а затем поглотил следующие 1024 байта. Проблема была в том, что иногда не предполагалось получить доступ к некоторым из этих байтов! Я думаю, что это произошло во время отладки из-за использования большего количества памяти или из-за любопытного сценария выравнивания памяти.
Мы исправили эту проблему, передав длину строки в вызов C ++, поэтому не нужно было принимать следующие 1024 вслепую.
Стоит отметить, что есть еще много возможностей, которые приводят к 0xC0000005. Некоторые очень полезные люди добавили некоторые из этих возможностей здесь .
Если у вас нет доступа к любому из кода более низкого уровня, я рекомендую обсудить эту проблему с людьми, предоставившими образ вашей ОС (как правило, изготовителем), а также с любыми поставщиками компонентов низкого уровня, которые вы используете. Эту проблему трудно исправить, поэтому я не ожидал, что ее исправят сами, особенно если производитель - Symbol, Intermec или Datalogic (у создателей есть поддержка дерьма, а последние просто уволили большинство своих разработчиков).