c# 结构体 指针 急!急!急!
我有一个DLL接口: 
    int   __stdcall   Get_Curr_Record(HANDLE   icdev,int   &Node_Addr,MJREC   *Record_Data) 
 typedef   struct   _MJRec 
 { 
 			long      user_snr;//   用户流水号 
 			char      datetime[13];//YYMMDDHHMMSS   格式 
 			UCHAR   node;   //打卡结点或读头号 
 }MJREC; 
 功能:读取结点当前记录,结点记录指针不变。 
 参数:   icdev:(in)串口设备句柄 
 Node_Addr:(in)从机地址 
 Record_Data:(out)MJREC类型,返回一笔记录。 
 返回:   成功返回0     
 现在要在c#里面调用实现它。 
 我做了如下工作: 
 1、引用DLL: 
 			[DllImport( "DASCOMM.DLL ", 
 				   EntryPoint= "Get_Curr_Record ", 
 				   CharSet=CharSet.Ansi, 
 				   CallingConvention=CallingConvention.StdCall)]    
 			public   static   extern   int   Get_Curr_Record(int   icdev,int   Node_Addr,out   IntPtr   Record_Data); 
 2、声明结构体: 
 	public   struct   MJREC 
 	{ 
 		public   int   user_serial; 
 		public   byte[]   sktime; 
 		public   byte   node_addr; 
 	}   
 3、调用: 
 			IntPtr   Record_Data=IntPtr.Zero;         
 			KL_card.Hand_Shake(icdev,Node_Addr,password); 
 			int   i=KL_card.Get_Curr_Record(icdev,Node_Addr,out   Record_Data); 
 			if(i==0) 
 				MessageBox.Show( "获取数据成功 "); 
 			else 
 				MessageBox.Show(doitmyself.error(i)); 
 			MJREC   testsize=new   MJREC(); 
 			testsize=(MJREC)Marshal.PtrToStructure(Record_Data,testsize.GetType());   
 问题:运行时报错,未将对象引入实例。高手请指点,我哪地方出错啦及如何修改?? 
------解决方案--------------------Record_Data为MJREC类型 
 用MJREC  Record_Data=new MJREC();初始化。结构体如下声明试试: 
 StructLayout(LayoutKind.Sequential)] 
 public struct MJREC 
 { 
 public int user_serial; 
 public string sktime; 
 public char node_addr; 
 } 
 另外串口设备句柄是否正确?
------解决方案--------------------[DllImport( "DASCOMM.DLL ",EntryPoint= "Get_Curr_Record ",CharSet=CharSet.Ansi, 
 CallingConvention=CallingConvention.StdCall)] 
 public static extern int Get_Curr_Record(IntPtr icdev,ref int Node_Addr,out MJREC Record_Data);   
 public struct MJREC 
 { 
 public int user_serial; 
 public byte[] sktime; 
 public byte node_addr; 
 }   
 //call 
 MJREC testsize=new MJREC(); 
 testsize.sktime = new byte[13]; 
 Get_Curr_Record( icdev,ref Node_Addr,out testsize); 
------解决方案--------------------c++代码 
 extern  "C " int _declspec(dllexport) Get_Curr_Record(HANDLE icdev,int &Node_Addr,MJREC *Record_Data) 
 { 
 	Node_Addr = 1;   
 	Record_Data-> node =  '2 '; 
 	Record_Data-> datetime[0] =  '2 '; 
 	Record_Data-> user_snr = 2;   
 	return 0; 
 }   
 c++测试用dll 
 [DllImport( "TestStruct.dll ")] 
 public static extern int Get_Curr_Record(System.IntPtr handle,ref int  aa,ref MJREC a);   
 而写结构不需要new 数组的   
 new 了也不会错 
 { 
 int i = 0;    
 MJREC a = new MJREC();  			   
 Get_Curr_Record(this.Handle, ref i,ref a); 
 }     
 测下来结果是对的