需要这样一个记录本-1 C#托管内存与非托管内存相互转换

来源:互联网 发布:陈奕迅苦瓜知乎 编辑:程序博客网 时间:2024/05/18 03:34

在C#中调用C++写的类库,C++中用到char*类型,C#中不能直接操作内存。

1. 将IntPtr转换为Struct

public struct SAlarmSDK
{      
    public Int32 nLeavel;   //告警级别
}


SAlarmSDK sAlarm;

public Boolean CallBackEvent(IntPtr Buffer, int nSize, int lParam)

{

sAlarm = (SAlarmSDK)Marshal.PtrToStructure(Buffer, typeof(SAlarmSDK));

Console.WriteLine("Leavel={0}", sAlarm.nLeavel);

}

2.将IntPtr转换为Byte[]

Byte[] m_pBuffer;

public Boolean CallBackEvent(IntPtr Buffer, int nSize, int lParam)

{

m_pBuffer= new Byte[nSize];  

Marshal.Copy(Buffer, m_pBuffer, 0, nSize);

}


0 0
原创粉丝点击