由指针得到结构体数据的问题,请高手指点
我调用第三方的dll来读取设备中的设置,第三方dll中的方法要我给出数据缓冲区地址,和缓冲区长度。执行后,确无法从该缓冲区中取得任何数据,请问原因及处理办法。代码如下:
public override int GetServerNTP(IntPtr hDev, ref string NTPUrl, ref int timezone, ref bool enable, ref int reserve) { DVSNETClient.DVSNET_NTP_PARAM ntp = new DVSNETClient.DVSNET_NTP_PARAM(); IntPtr pntp = Marshal.AllocHGlobal(Marshal.SizeOf(ntp)); //Marshal.StructureToPtr(ntp, pntp, true); //IntPtr pntp = IntPtr.Zero; uint len = (uint)Marshal.SizeOf(new DVSNETClient.DVSNET_NTP_PARAM()); int r = GetServerParam(hDev, (uint)(0x10000 + 224), 0,ref pntp, len); DVSNETClient.DVSNET_NTP_PARAM ntp = (DVSNETClient.DVSNET_NTP_PARAM)Marshal.PtrToStructure(pntp, typeof(DVSNETClient.DVSNET_NTP_PARAM)); NTPUrl = new string(ntp.strNTPUrl); timezone = (int)ntp.nTimeZone; enable = ntp.bEnabled == 1 ? true : false; reserve = (int)ntp.dwReserve; return r; }