我正在使用从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 字节)上的大小不同,问题是我不知道如何克服这个问题。
任何形式的帮助都会很好,在此先感谢 Liran。