2010-11-23 215 views
2

如何將指針傳遞給C#中的函數參數作爲結構體的指針?作爲C#中的函數參數傳遞指向結構體的指針的指針

我想從一個DLL函數中使用它的一個參數作爲雙指針。對於例如,

struct mystruct 
{ 
    int a; 
    char b; 
}; 

[DllImport("mydll.dll")] 
private static extern int func_name(int a, char b, mystruct** c); 

我想用一個指針像int *aref int a的正確方法。有沒有類似的int **a

回答

0

我會以不同的方式工作。
任何指針應被用作

System.IntPtr

,然後我會用

Marshal.PtrToStructure

用於指針的實際轉換到實際的結構。否則,我也會考慮逐場複製偏移量,這有時更易於調試。

2

指向指針的CLR等效指針是ref IntPtr

IntPtr是一個指向整數的指針,當它通過ref傳遞時,它通過引用傳遞,使它成爲指針的指針。

您可能還需要使用Marshal.PtrToStructure method將指針轉換爲結構對象。

有關更多信息,請參閱this article底部附近標題爲「手動編組」的小節。