根据我在本网站上看到的一些示例,我尝试以下代码:
var byteArray = new byte[m.Length -10];
myMemoryStream.Position = 10;
myMemoryStream.Read(byteArray,0,(int)myMemoryStream.Length-10);
GCHandle pinnedArray = GCHandle.Alloc(byteArray, GCHandleType.Pinned);
IntPtr pointer = pinnedArray.AddrOfPinnedObject();
IMediaSample pSample = null;
Marshal.PtrToStructure( pointer,pSample);
pinnedArray.Free();
但是在调用Marshal.PtrToStructure(指针,pSample)时我收到了“NullArgumentException”。
当然我知道这个错误的原因,我想知道的是正确的方法。
如果您需要更多信息,请告诉我,我会尽快添加。
请帮忙。
答案 0 :(得分:0)
您需要创建实际结构,该结构还实现IMediaSample
接口。
public struct IMediaSampleStructure : IMediaSample
{
// Implementation.
}
然后,你可以这样做:
IMediaSample pSample = new IMediaSampleStructure();
Marshal.PtrToStructure(pointer, (IMediaSampleStructure)pSample);