C# 获取结构体长度 指针转结构体 指针转结构体数组

VS-C++ 系列:所有相关C++文章链接.
VS-C# 系列:所有相关C#文章链接.
bat 系列:所有相关bat文章链接.
OpenCV 系列:所有相关OpenCV文章链接.


Keil 系列:所有相关文章链接
所有内容均以最小系统调试成功;逐步提供低分源码工程下载
保证每行代码都经过验证!
如有疑惑,欢迎留言,看见即回;祝好__by Dxg_LC

序言:
1、以上链接为方便整理查看资料用;伴随博文发布更新,如果有不正确处,感谢指正
2、因本人能力有限若有不正确之处或者相关超链接失效,请于相关文章内提醒@博主;灰常感谢
3、友情提醒1,勿要《一支烟 + 一杯茶 == 一坐一下午》 身体重要,革命本钱;
4、友情提醒2,多喝热水;
5、友情提醒3,听媳妇话+多点时间陪家人;
在这里插入图片描述

1、

/// <summary>
/// 度深摄像头结构体
/// </summary>
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
public struct D3T_CameraInfo
{
    /// <summary>
    /// 设计厂商
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string Vendor;

    /// <summary>
    /// 生产厂商
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string Manufacturer;

    /// <summary>
    /// 型号
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string Model;

    /// <summary>
    /// 系列
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string Family;

    /// <summary>
    /// 连接名
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string LinkName;

    /// <summary>
    /// 传感器描述
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    string SensorInfo;

    /// <summary>
    /// 硬件版本
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string HardwareVersion;

    /// <summary>
    /// 固件版本
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string FirmwareVersion;

    /// <summary>
    /// 内核驱动版本
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string KernelVersion;

    /// <summary>
    /// 设备驱动版本
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string DscamVersion;

    /// <summary>
    /// 友好设备名称
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string FriendlyName;

    /// <summary>
    /// 接口描述
    /// </summary> 
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string PortInfo;

    /// <summary>
    /// 序列号(一般可以更改)
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string SerialNumber;

    /// <summary>
    /// 相机描述
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
    public string CameraInfo;

    /// <summary>
    /// 用户命名
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
    public string UserID;

    /// <summary>
    /// 原始序列号
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string OriginalSerialNumber;

    /// <summary>
    /// 保留字节
    /// </summary>
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
    public string reserved;
}
//获取结构体大小
D3T_CameraInfo pInfo = new D3T_CameraInfo();
int StSize = Marshal.SizeOf(pInfo);
// IntPtr 转结构体
IntPtr pSts = IntPtr.Zero;
D3T_CameraInfo st = new D3T_CameraInfo


st = (D3T_CameraInfo)Marshal.PtrToStructure(pSts, typeof(D3T_CameraInfo));
// IntPtr 转结构体数组
IntPtr pSts = IntPtr.Zero;
int Count = 5;
D3T_CameraInfo[] st = new D3T_CameraInfo[Count];
List<D3T_CameraInfo> pInfo;
pInfo.Clear();

for (int i = 0; i < Count; i++)
{
	pInfo.Add((D3T_CameraInfo)Marshal.PtrToStructure(pSts + Marshal.SizeOf(st[0]) * i, typeof(D3T_CameraInfo)));
}

Dxg-原创出品,如需转载,请注明出处;

欢迎收藏,点赞;"一键三联"走起,LOL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘气坏坏besos

原创干货分析,欢迎大佬打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值