1
我使用捕捉從我CodeProject並不在64位平臺上運行適當
的代碼運行在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具有不同的值)
我認爲問題是在2個平臺上的大小不同的類型「IntPtr」(4對8字節) 事情是,我不知道如何克服這個問題。
任何一種幫助會很好, 在此先感謝, Liran。
你是如何構建你的應用程序?你的目標平臺是什麼? – weismat 2011-05-03 09:12:19
「任何CPU」,如果我將測試項目構建爲X86,它可以正常工作,但最終代碼應該在64位的SharePoint平臺下運行,並且我無法更改 - 我需要使其工作原樣而不更改目標器平臺 – liranco 2011-05-03 11:27:10