我用ATL写了一个简单组件,这个组件有事件。事件会传递参数,参数中有CHAR*类型的参数
比如:HRESULT Fire_AcceptEvent( ULONG clientsock, USHORT iPort, CHAR * pcIP)
然后用C#调用这个COM组件,在C#中,组件的事件响应函数原形为:
_IXXXX_AcceptEventEventHandler(uint, ushort, ref sbyte);
我现在在C#中写一个函数,比如:
private void OnClientAccept(uint clientsocket, ushort iPort, ref sbyte pcIP)
{
MessageBox.Show(iPort.ToString());
}
然后,将这个函数加入到事件响应队列:
_IXXXX_AcceptEventEventHandler ClientAccept = new _IXXXX_AcceptEventEventHandler(OnClientAccept);
socket.AcceptEvent += ClientAccept;
现在的问题是,OnClientAccept()的参数并不是我传进去的,ref sbyte这个参数的数据我取得后,只能得到第一个字符的ASCII值,请问,我如何才能获得这个sbyte[]或者是char*的内容?
谢谢