110,579
社区成员
发帖
与我相关
我的任务
分享
typedef int (*LP_TEST_CALL_BACK_FUNC)(char* pData, int nLen);
extern "C" HASP_EXT_API void Test();
extern "C" HASP_EXT_API void SetCallBack(LP_TEST_CALL_BACK_FUNC fp, char* pBuffer, int len);
LP_TEST_CALL_BACK_FUNC g_fp = NULL;
char* g_pBuffer = NULL;
int g_len = 0;
extern "C" void Test()
{
if (g_fp != NULL)
{
for(char i = 0 ;i < g_len -1;i++)
g_pBuffer[i] = i;
//g_fp(data,len);
}
}
extern "C" void SetCallBack(LP_TEST_CALL_BACK_FUNC fp, char* pBuffer, int len)
{
g_fp = fp;
g_pBuffer = pBuffer;
g_len = len;
}
unsafe public delegate int Mydelegate(byte* data, int nLen);
unsafe private int test(byte* data, int nLen)
{
return 1;
}
unsafe private void button1_Click(object sender, EventArgs e)
{
byte[] buffer = new byte[100];
for (int i = 0; i<100; ++i)
{
buffer[i] = 0;
}
Mydelegate pf = new Mydelegate(test);
SetCallBack(pf, buffer, 100);
Test();
}
[DllImport("TestPVCallback.dll")]
public static extern void SetCallBack(Mydelegate fp, byte[] data, int nLen);
[DllImport("TestPVCallback.dll")]
public static extern void Test();