Я использую код, который захватывает кадр из видео, которое я нашел в CodeProject
Код отлично работает на 32-битной, проблема начинается, когда я пытаюсь работать на 64-битных системах.
Исключением является «AccessViolationException: попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память была повреждена» *
Я отладил на 32-битной и 64-битной платформах и нашелгде проблема -
mediaType = new AMMediaType();
mediaDet.get_StreamMediaType(mediaType);
videoInfo = (VideoInfoHeader)Marshal.PtrToStructure(mediaType.formatPtr, typeof(VideoInfoHeader));
После второй строки я посмотрел на содержимое mediaType, и оно полностью отличается в 64-разрядной версии через 32, что приводит к тому, что следующая строка вызывает исключение (mediaType.formatPtr имеет другое значение)
Я предполагаю, что проблема связана с типом "IntPtr", размер которого отличается на 2 платформах (4 против 8 байт), но я не знаю, как решить эту проблему.
Любая помощь будет хорошей, заранее спасибо, Лиран.