我有我想從C#調用兩個函數共享類似的特徵:如何從C.dll在C#馬歇爾字節*
BOOL Read (BYTE Len, BYTE* DataBuf)
BOOL Write (BYTE Len, BYTE* DataBuf)
從文件:傳輸的數據
的DATABUF目的地我應該在C#調用中使用什麼?
- 的byte []
- myByteArr [0]
- 的P/Invoke助理建議System.IntPtr
不必的考驗硬件,但我試圖得到儘可能當我們有時,很多電話都是正確的。
謝謝。
我有我想從C#調用兩個函數共享類似的特徵:如何從C.dll在C#馬歇爾字節*
BOOL Read (BYTE Len, BYTE* DataBuf)
BOOL Write (BYTE Len, BYTE* DataBuf)
從文件:傳輸的數據
的DATABUF目的地我應該在C#調用中使用什麼?
不必的考驗硬件,但我試圖得到儘可能當我們有時,很多電話都是正確的。
謝謝。
對於讀取功能使用:
[Out] byte[] buffer
對於寫功能使用:
[In] byte[] buffer
[In]
是默認的,可以省略,但明確表示並不傷害。因此
的職能將是:
[DllImport(filename, CallingConvention = CallingConvention.Cdecl)]
static extern bool Read(byte len, [Out] byte[] buffer);
[DllImport(filename, CallingConvention = CallingConvention.Cdecl)]
static extern bool Write(byte len, [In] byte[] buffer);
很顯然,你需要將它傳遞給非託管函數之前,數組分配。
因爲byte
是blittable,編組人員作爲一個優化,釘住數組並傳遞固定對象的地址。這意味着不執行復制並且參數傳遞是有效的。
它可能是IntPtr
從byte[]
陣列獲得。舊的問題絕對應該已經覆蓋認爲:How to get IntPtr from byte[] in C#
我一直在使用 – user1957413