聲明你的結構在C#:
[StructLayout(LayoutKind.Sequential, Pack = 2, CharSet = CharSet.Ansi)]
struct VideoInputV20
{
int m_nBrightness;
int m_nSharpness;
int m_nSaturation;
int m_nContrast;
int m_nInputState;
[MarshalAs(UnmanagedType.LPWStr)]
string m_sObjref;
}
然後代碼把它弄出來一個byte []
GCHandle handle = new GCHandle();
try
{
// Pin the byte[]
handle = GCHandle.Alloc(yourByteArray, GCHandleType.Pinned);
IntPtr ptr = handle.AddrOfPinnedObject();
// Marshal byte[] into struct instance
VideoInputV20 myVideoInputV20 = (VideoInputV20)Marshal.PtrToStructure(ptr, typeof(VideoInputV20));
}
// Clean up memory
finally
{
if (handle.IsAllocated) handle.Free();
}
我不知道你問的......可你改說這個? – 2009-11-06 12:39:23