C++/C# 最基本的Marshal和Ptr
Vidyo32.VidyoClientInEventLogin Login = new Vidyo32.VidyoClientInEventLogin();
Login.portalUri = this.tbxIP.Text.Trim(); //"http://kaunas.vidyo.scandihealth.net";
Login.userName = this.tbxID.Text.Trim(); //"test-sa3";
Login.userPass = this.tbxPwd.Text.Trim(); //"test-sa3";
int size = Marshal.SizeOf(Login);
IntPtr ptr = Marshal.AllocCoTaskMem(size);
Marshal.StructureToPtr(Login, ptr, false);
Int32 test = Vidyo32.VidyoClientSendEvent(Vidyo32.VidyoClientInEvent.VIDYO_CLIENT_IN_EVENT_LOGIN, ptr, size);
Login = (Vidyo32.VidyoClientInEventLogin)Marshal.PtrToStructure(ptr, typeof(Vidyo32.VidyoClientInEventLogin));
在此总结一句,C++结构体和C#结构体转换过程中,一定要注意内存大小一致
C++/C# 最基本的Marshal和Ptr的更多相关文章
- C++/C# 转化 Marshal VS Ptr
Vidyo32.VidyoClientInEventLogin Login = new Vidyo32.VidyoClientInEventLogin(); Login.portalUri = thi ...
- C#指针操作Marshal实例
static void Main(string[] args) { ,,,}; ,,,}; IntPtr pt = Marshal.AllocHGlobal(a.Length); //从source数 ...
- c#的Marshal
补充过程中~ 感觉应该是C#调用非托管的比较专门的class 例1. public struct ImageDataMsg { public char DataType; public int Srv ...
- Marshal UTF8 Strings in .NET
原文:Marshal UTF8 Strings in .NET Marshal UTF8 Strings in .NET Wow, what a pain in the butt. .NET stri ...
- 关于Marshal 类的整理
在两个不同的实体(两个线程或者进程甚至机器.在Managed和Unmanaged之间)进行方法调用和参数传递的时候,具体的调用方法和参数的内存格式可能需要一定的转换,这个转换的过程叫做Marshal. ...
- c#程序如何从海康ipserver查询获取DVR设备ip地址
海康威视提供的ipserver可以记录DVR设备的IP地址,并提供一个7071的端口给客户端查询用,我们在c#程序中可以用海康SDK包中的NET_DVR_GetDVRIPByResolveSvr函数来 ...
- C#+无unsafe的非托管大数组(large unmanaged array in c# without 'unsafe' keyword)
C#+无unsafe的非托管大数组(large unmanaged array in c# without 'unsafe' keyword) +BIT祝威+悄悄在此留下版了个权的信息说: C#申请一 ...
- C#二进制流的序列化和反序列化
public class BinaryHelper { /// <summary> /// 将对象序列化为byte[] /// 使用IFormatter的Serialize序列化 /// ...
- WindowsAPI调用和OCR图片识别
傻了吧唧的装双系统.成功的干崩了原本的系统.现在重装VS.闲的没事胡扯几句. WindowsAPI在每一台Windows系统上开放标准API供开发人员调用.功能齐全.在这里只介绍三个部分. 1.利用A ...
随机推荐
- Java String.replace()方法
Java String.replace()方法用法实例教程, 返回一个新的字符串,用newChar替换此字符串中出现的所有oldChar 声明 以下是java.lang.String.replace( ...
- c++中使用c语言函数
在c++中使用c语言的函数时候,该函数必须在c文件中声明extern "C"才可以使用 如:extern "C" c_function_name(int, in ...
- POJ2229 Sumsets 【递归】
Sumsets Time Limit: 2000MS Memory Limit: 200000K Total Submissions: 13210 Accepted: 5300 Descrip ...
- B/S状态(同步)AJAX技术(异步)
同步(Synchronization).它是最常见的click-refresh状态,或提交一个表单,然后整个页面被刷新. 异步(Asynchrony).当前非常热的AJAX就是典型样例,提交请求返回对 ...
- Android设计中的.9.png
在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”.这种图片是用于Android开发的一种特殊的图片格式,它的 ...
- 如何删除Oracle数据库
1>点击开始找Oracle的目录,-->点击[Universal Installer],打开点击[卸载产品] 2>除了oracle_home1 不点外,其他的都勾选. 3>再点 ...
- Java面试题Tomcat的优化经验
一.掉对web.xml的监视,把jsp提前编辑成Servlet.有富余物理内存的情况,加大tomcat使用的jvm的内存 二.服务器资源 服务器所能提供CPU.内存.硬盘的性能对处理能力有决定性影响. ...
- pagination分页插件
最近做了个项目,有用到分页, 这类插件应该是很常用的, 虽然网上很多现成的分页插件, 但是还是想着自己写一个, 给自己积累点东西, 顺便练练手, 写了差不多3个小时左右, 代码如下: 代码: < ...
- iOS根据2个经纬度计算距离
#pragma mark - calculate distance 根据2个经纬度计算距离 #define PI 3.14159265358979323 +(double) CalculationDi ...
- Customizing Zend Studio Using the Welcome Page
Customizing Zend Studio Using the Welcome Page Zend Studio enables you to add or remove plugins from ...