Нарушение доступа почти всегда является ошибкой памяти - тем более, что в этом случае это происходит из-за случайного сбоя (разрешения, скорее всего, более воспроизводимы). В случае DLL это может быть либо
В самом коде DLL есть ошибка - это может быть что-то вроде ошибки выделения памяти или даже простой ошибки граничного условия цикла.
Есть ошибка, когда DLL пытается соединиться с другой DLL в системе. Обычно это происходит из-за несоответствия версий dll на компьютере.
Ваш первый шаг должен состоять в том, чтобы попытаться получить воспроизводимое условие сбоя. Если у вас нет ряда обстоятельств, которые могут привести к сбою системы, вы не сможете узнать, когда исправили ее.
Затем я установил бы систему на чистой машине и попытался воспроизвести ошибку на этом. Запустите монитор и проверьте, какие другие файлы (dll и т. Д.) Открыты при сбое программы. Я видел код, который вылетает на многопоточном Pentium, но не на более раннем, поэтому восстановление старой машины в качестве тестового стенда может быть хорошим вариантом для ее решения. Изменение количества плунжера в машине также имеет смысл.
Надеюсь, эти шаги могут дать вам подсказку. Надеемся, что это будет проблема среды, и поэтому ее можно избежать, используя правильную версию Windows, DLL и т. Д. Однако, если вы все еще застряли с крахом на этом этапе без каких-либо хороших подсказок, то ваши варианты либо переписать, либо попытаться отыщите проблему дальше, отлаживая dll на рычаге ассемблера или разбирая его. Если вы не знакомы с ассемблерным кодом, то оба эти варианта - длинные, и трудно понять, что вы получите, и любой из этих вариантов может привести к значительному сокращению времени. Я сам в прошлом сталкивался с проблемой низкого уровня высокой интенсивности, подобной этой, которая рекламировалась на одном из сайтов «Кодер по найму», и искал кого-то со специальными знаниями. Снова вам понадобится воспроизводимая ошибка, чтобы сделать это.
В долгосрочной перспективе dll без исходного кода придется заменить. Возможно, стоит подумать об оплате специалиста, обладающего навыками сборки, для анализа функций и предоставления вам блок-схем. Хорошей деловой практикой является делать это раньше контролируемым образом, чем позже - например, после того, как компьютер, на котором он работает, вышел из строя и эта версия Windows больше не доступна.