解决方案 »
- 高手!!!有木有。。。新人求教育
- 如何更改客户端IP来进行欺骗,欢迎补充。
- 急, 怎么生成批量条码!各位前辈帮个忙吧!
- 如何读多个combobox和textbox,形成字符串?
- C/S里面有一个 数据菜单--里面有一个 显示数据源,为什么在WEB里面没有呢~!
- 高分求Visual Studio Tools For Office正式版
- 怎样把一个字符串转换成时间格式,然后和DateTime对象进行比较
- 关于C#设置PictureBox1为父后PictureBox2GDI绘图显示问题
- 文件下载超难问题,高手请进。(高分)
- PDF的文件结构,任何版本都可以(高分相送)
- C#如何获取rtsp格式的视频
- 2个DateTime类型的变量相减怎么得到X天X小时类型
你可以尝试使用:
string userName;
string passWord;
// etc 获取 userName,passWord的值!
IntPtr ptrUserName=Marshal.StringToHGlobalAnsi("userName");
IntPtr ptrPassWord=Marshal.StringToHGlobalAnsi("passWord");
// etc 传给非托管代码 ptrUserName,ptrPassWord。
public static byte[] StructToBytes(object structObj)
{
LoginReq login = (LoginReq)structObj; login.userName = (new string(login.userName)).PadRight(MAX_USER_NAME_LENGTH, '\0').ToCharArray();
login.passWord = (new string(login.passWord)).PadRight(MAX_USER_NAME_LENGTH, '\0').ToCharArray(); //得到结构体的大小
int size = Marshal.SizeOf(login);
byte[] bytes = new byte[size]; //分配结构体大小的内存空间
IntPtr structPtr = Marshal.AllocHGlobal(size); //将结构体拷到分配好的内存空间
Marshal.StructureToPtr(login, structPtr, false);
LoginReq loginReq = (LoginReq)Marshal.PtrToStructure(structPtr, typeof(LoginReq)); //从内存空间拷到byte数组
Marshal.Copy(structPtr, bytes, 0, size); //释放内存空间
Marshal.FreeHGlobal(structPtr); //返回byte数组
return bytes;
}