我的第一个blog(测试)。 以后要多写出好的文章和广大网友交流。 private static bool PGetDevConfig(int lLoginID, CONFIG_COMMAND dwCommand, ref object[] obj, Type typeName, int waittime) { bool returnValue = false; IntPtr pBoxInfo = IntPtr.Zero; try { UInt32 returnBuffSize = 0; pBoxInfo = Marshal.AllocHGlobal(obj.Length * Marshal.SizeOf(typeName));//分配固定的指定大小的内存空间 if (pBoxInfo != IntPtr.Zero) { returnValue = DHGetDevConfig(lLoginID, dwCommand, -1, pBoxInfo, (uint)obj.Length * (UInt32)Marshal.SizeOf(typeName), ref returnBuffSize, waittime); if (returnValue == true) { for (int loop = 0; loop < obj.Length; loop++) { obj[loop] = Marshal.PtrToStructure((IntPtr)((UInt32)pBoxInfo + (UInt32)Marshal.SizeOf(typeName) * loop), typeName); } } } DHThrowLastError(returnValue); } catch (Exception e) { DHThrowLastError(e); returnValue= false; } finally { Marshal.FreeHGlobal(pBoxInfo);//释放固定内存分配 pBoxInfo = IntPtr.Zero; } return returnValue; }