我有這種方法,我需要調用並在我的應用程序中使用,但我不知道如何確切地完成它。從託管(C#)調用不安全的代碼。讀取字節數組
這是我需要調用的函數。
[DllImport(dll_Path)]
public static extern int DTS_GetDataToBuffer(int Position, int Length, char* Buffer, int* DataRead);
在我的代碼中,我有這個功能,我錯過了它的實現。
internal static void GetDataToBuffer(int position, int length, out byte[] data, out int dataRead)
{
unsafe
{
// the code I need
}
}
我認爲這大部分是非常自私的。我需要實現後者的功能,以便我可以將數據讀入緩衝區並讀取數據量(實際上應該與data.Length相同,但製造商將此作爲單獨選項,因此我需要它)。 任何人都可以幫忙嗎?這足夠清楚了嗎?
謝謝
編輯:這裏是.h文件的非託管聲明。希望能幫助到你。
extern NAG_DLL_EXPIMP int DTS_GetDataToBuffer(int Position,
int Length,
unsigned char *Buffer,
int *DataRead);
編輯#2: 現在的位置 - 從明星讀取數據的位置。 長度 - 要讀取的數據量(這將是緩衝區大小)。 DataRead - 讀取的實際數據大小。
你能只是調用GetDataToBuffer方法裏面你DTS_功能?那有什麼問題嗎? – 2010-10-15 11:26:37
我可以。我應該,但我不知道如何正確地將託管類型傳遞給非託管。這是我遇到的全部問題。 – 2010-10-15 11:48:51