C 互操作的類型基本位於System.Runtime.InteropServices命名空間下,本系列隨筆主要記錄本人在開發過程中使用的到一些類型函數、技巧及工具 計算類型的大小 獲取類型實例的大小 結構體與指針類型互相轉換 C/C++ 數據結構轉C 結構體工具 工具源碼及下載地址: "http:/ ...
C#互操作的類型基本位於System.Runtime.InteropServices命名空間下,本系列隨筆主要記錄本人在開發過程中使用的到一些類型函數、技巧及工具
計算類型的大小
int size = sizeof(GLYCOUNTER);//只能作用於unsafe代碼上下文
獲取類型實例的大小
Marshal.SizeOf(counters)
結構體與指針類型互相轉換
//指針->結構體
GLYCOUNTERS counters = (GLYCOUNTERS)Marshal.PtrToStructure(glyParam.lpBuffer, typeof(GLYCOUNTERS));
//結構體->指針
IntPtr p = Marshal.AllocHGlobal(Marshal.SizeOf(counters));
Marshal.StructureToPtr(counters,p, false);
C/C++ 數據結構轉C#結構體工具
工具源碼及下載地址:http://clrinterop.codeplex.com/releases/view/17579