"无法封送处理“parameter #2”: 内部限制: 结构太复杂或太大。"
来源:互联网 发布:生孩子 知乎 编辑:程序博客网 时间:2024/05/01 08:50
原型
[StructLayoutAttribute(LayoutKind.Sequential)] public struct NET_DVR_SADPINFO { NET_DVR_IPADDR struIP; ushort wPort; ushort wFactoryType; [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 48, ArraySubType = UnmanagedType.I1)] byte[] chSoftwareVersion; [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.I1)] byte[] chSerialNo; ushort wEncCnt; [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MACADDR_LEN, ArraySubType = UnmanagedType.I1)] byte[] byMACAddr; NET_DVR_IPADDR struSubDVRIPMask; NET_DVR_IPADDR struGatewayIpAddr; NET_DVR_IPADDR struDnsServer1IpAddr; NET_DVR_IPADDR struDnsServer2IpAddr; byte byDns; byte byDhcp; [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 158, ArraySubType = UnmanagedType.I1)] byte[] byRes; } [StructLayoutAttribute(LayoutKind.Sequential)] public struct NET_DVR_SADPINFO_LIST { uint dwSize; ushort wSadpNum; [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 6, ArraySubType = UnmanagedType.I1)] public byte[] byRes; [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = MAX_SADP_NUM, ArraySubType = UnmanagedType.Struct)] NET_DVR_SADPINFO[] struSadpInfo; } [DllImportAttribute("HCNetSDK.dll")] public static extern bool NET_DVR_GetSadpInfoList(int iLogHandle, ref NET_DVR_SADPINFO_LIST sadpinfolist);调试总是报"无法封送处理“parameter #2”: 内部限制: 结构太复杂或太大。"看来应该是C#内部有限制(.NET .3.5). ref方式不行,那就用IntPtr指针方式了,如下:
[DllImportAttribute("HCNetSDK.dll")] public static extern bool NET_DVR_GetSadpInfoList(int iLogHandle, IntPtr groupVal);
调用方式:
CHCNetSDK.NET_DVR_SADPINFO_LIST list = new CHCNetSDK.NET_DVR_SADPINFO_LIST(); IntPtr ptr = IntPtr.Zero; int size = Marshal.SizeOf(typeof(CHCNetSDK.NET_DVR_SADPINFO_LIST)); ptr = Marshal.AllocHGlobal(size); // 为指针分配空间 bool ret = CHCNetSDK.NET_DVR_GetSadpInfoList(m_lUserID, ptr); // 强制转化成原类型 list = (CHCNetSDK.NET_DVR_SADPINFO_LIST)Marshal.PtrToStructure(ptr, typeof(CHCNetSDK.NET_DVR_SADPINFO_LIST));
0 0
- "无法封送处理“parameter #2”: 内部限制: 结构太复杂或太大。"
- 不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量
- 世界太复杂,我无法再简单
- 封送处理字符串
- 默认封送处理行为
- [原创]工作流复杂拓扑结构处理新思路
- oracle插入值太大,超过限制数的处理ORA-12899,ora-01489
- 解决文件名太长或文件夹路径太深无法删除
- 不需要太复杂
- 想的太复杂
- sql server2008 批量删除发生:查询处理器用尽了内部资源,无法生成查询计划。这种情况很少出现,只有在查询极其复杂或引用了大量表或分区时才会出现。请简化查询
- C++/CLI 的封送处理 - 字符串
- C++/CLI 的封送处理 - 数组
- 值类型的默认封送处理
- 封送处理不同类型的数组
- 解决图片太大溢出问题、使用CSS限制图片最大宽度或使图片按比例自动缩放
- 你的团队太大还是太小?
- C# 调用dll 封送结构体 结构体数组
- rpm卸载包遭遇 specifies multiple packages 错误
- C#可空类型(?和??)语法
- java InputStream读取数据问题
- SQL Server 数据库获取表名,字段名,与字段类型语句。方便导出到Excel中使用。
- EntityFrameWork实体类分离校验方式
- "无法封送处理“parameter #2”: 内部限制: 结构太复杂或太大。"
- Shell变量$0 $# $@ $*
- 屏蔽"无法验证发行者,你确实要运行此软件吗?"的提示
- ubuntu安装qq
- 生成JAR包后音频文件无法播放解法
- MVC2调试技巧
- android XML 画图
- Linux技巧
- 继承与数据成员布局