最后一个不是指针么
用 Marshal.PtrToStructure(IntPtr, Type)
将内存拷贝到一个结构体里面,就可以了.
用 Marshal.PtrToStructure(IntPtr, Type)
将内存拷贝到一个结构体里面,就可以了.
解决方案 »
- WPF对象怎么进行克隆(或者是传值调用)
- 【求助】C#调用VC的DLL奇怪不解的问题(着急)
- NHibernate 入门例子(急求)
- 压缩加密->下载->解压解密->运行,如何防止解压后的临时文件被拷贝
- 求一正则表达式
- ConfigurationManager.AppSettings是读的硬件上的文件还是内存中的缓存
- xtjs2.2中在c#返回数据result.id如何表示
- 在dropdownlist控件里的字符串怎样换行??
- WebClient 的问题
- winform中的datagridview获取值问题
- C#中的SQL连接语句能否全部改为ACCESS语句?都需要修改那些呢?
- 当在PANEL上移动 label控件会有很严重的拖影?如何解决啊
我的结构:
[StructLayout(LayoutKind.Sequential)]
public struct PEvent
{
public byte Code;
public byte DotID;
public TCardNumber CardNumber;
public ushort reserved;
public Time Time;
public IntPtr pNext;
}
public void GetEvent()
{
byte Bagid=this.SEventBagId;
byte EventCount = this.SEventCount;
int rs = 0; string Str = ""; int i = 0;
EkcoTog.PEvent Event = new EkcoTog.PEvent();
EkcoTog.PEvent lpNext = new EkcoTog.PEvent();
try
{
Bagid = SEventBagId;
EventCount = SEventCount;
// MessageBox.Show("success");
rs = EkcoTog.DPU3001_Dll.NT_GetEvent(LineID, CtrlID, ref Bagid, ref EventCount, ref Event);
this.listBox1.Items.Add(rs.ToString());
if (rs == 0)
{
SEventBagId = Bagid; //Save event package number for next time
SEventCount = EventCount; //Save event count for next time
EkcoTog.PEvent[] Sevent = new PEvent[EventCount];
string str = "Bag ID:" + Bagid.ToString() + "EventCount:" + EventCount.ToString();
this.listBox1.Items.Add(str);
lpNext = Event;
for (i = 0; i < EventCount; i++)
{
int m = i + 1;
Str += m.ToString() + " DateTime:" + lpNext.Time.wMonth.ToString() + "-" + lpNext.Time.wDayOfWeek.ToString() + "-" + lpNext.Time.wHour.ToString();
Str += " " + lpNext.Time.wMinute.ToString() + ":" + lpNext.Time.wSecond.ToString() + ":" + lpNext.Time.wMilliseconds.ToString();
Str += " Event Code:" + lpNext.Code.ToString();
Str += " Component Address:" + lpNext.DotID.ToString();
Str += " Card Offset: " + lpNext.CardNumber.dwCardNo.ToString() + " THIS IS END!"+lpNext.pNext.ToString();
this.listBox1.Items.Add(Str);
//lpNext.pNext = Event.pNext;
//lpNext = ptr;
// lpNext = lpNext.pNext.ToPointer();
//IntPtr p = lpNext.pNext;
//lpNext.pNext = IntPtr.Zero;
IntPtr ptr = Marshal.ReadIntPtr(Event, i);
Sevent[i] = (PEvent)Marshal.PtrToStructure(Event.pNext, typeof(PEvent));
return;
}
}
if (rs == 133)
{
this.listBox1.Items.Add("所有事件都已经上载,没有新事件!");
}
else
{
this.listBox1.Items.Add("获取事件失败!" + rs.ToString());
}
}
catch
{
// this.listBox1.Items.Add("WW!");
}
}
Marshal.PtrToStructure(Event.pNext, Event );
Marshal.PtrToStructure(Event.pNext, Event );