Array.Copy
解决方案 »
- C#调用C++动态库---写入受保护内存....
- 类似提取网页信息-提取猫扑回复的邮箱
- 关于序列化的问题
- Vs.Net中的代码折叠功能
- 恢复超大数据库的问题,数据库告诉请看看啊?
- 问个关于JScript/ajax的问题。
- 如何判断打开的子窗口是否被编辑过(最近发现提问后很少有人回答了,是由于问题简单而不愿意回答?还是其他原因呢?)
- 新建的选项卡在运行时不显示
- c#程序向ORACLE传SQL,SQL的字符串太长,出错,该如何更改ORACLE配置?
- C#组件开发(ListView),望高手指点!!!
- winform请问长操作时如何弹出窗口,等长操作完成后自动关闭???
- 请教如何实现windows和unix之间的ftp上传下载文件(windows)
byte[] vBytes = { 0x12, 0x34, 0x56, 0x78 };
IntPtr vBytesAddress = Marshal.UnsafeAddrOfPinnedArrayElement(vBytes, 0); // 数组第一个元素的地址
int vInt = Marshal.ReadInt32(vBytesAddress); // 该地址的整数值
Text = vInt.ToString("X"); // 输出用
{
int val = Convert.ToInt32(c);
}
int vInt = Marshal.ReadInt32(vCharsAddress);
Text = vInt.ToString("X");
转换规则?
我在c++里写了个很简单的函数
void CTestDllApp::GetChars(char* pData)
{
*(DWORD*)pData = 10;
}c#里这样写的
[DllImport(@"C:\Inetpub\wwwroot\Test2005\Bin\TestDll.dll", CharSet = CharSet.Ansi)]
public static extern void GetChars(ref char[] pData);char[] pData = new char[10];
GetChars(ref pData);但是在用的时候却提示尝试写如受保护的内存麻烦帮忙看看
public static extern void GetChars(IntPtr pData);private void button1_Click(object sender, EventArgs e)
{
byte[] vBuffer = new byte[4];
IntPtr vBufferAddress = Marshal.UnsafeAddrOfPinnedArrayElement(vBuffer, 0);
GetChars(vBufferAddress);
int vInt = Marshal.ReadInt32(vBufferAddress);
}