北大青鸟光谷校区

北大青鸟光谷校区

  • 北大青鸟徐东校区
  • 北大青鸟光谷校区
  • 北大青鸟高新校区
  • 荆州青鸟之家
  • 襄阳青鸟之家

17740513250

百日千才

C#解析结构体指针浅析 北大青鸟C#技术

发布日期:2023-03-31来源:武汉北大青鸟武汉校区作者:武汉宏鹏

  北大青鸟C#技术:C#解析结构体指针浅析

        C#语言有很多值得学习的地方,这里我们主要介绍C#解析结构体指针,包括介绍也可将结构体赋值后封送到非托管内存。等方面。

  在C#解析结构体指针前,必须知道结构体是如何定义的。

  [StructLayout(LayoutKind.Sequential)]

  public struct VGAStat

  {

  public int ChannelNum;

  //通道数量

  [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]

  public char[] Version;

  //版本信息

  public uint CPUUsage;

  //CPU占用

  public bool WorkStatusOk;

  //工作状态

  [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]

  public tagCheckArg[] ChannelStatistic;

  //通道信息

  }

  定义完结构体后,就可将接收到C#解析结构体指针转换为定义的结构体对象。

  VGAStat entries = (VGAStat)Marshal.PtrToStructure(iptr, typeof(VGAStat));

  //iptr为接收到的非托管的结构体指针。

  反之,也可将结构体赋值后封送到非托管内存。

  假如vga为定义后实例化并赋值了的结构体。

  IntPtr intptr = Marshal.AllocHGlobal(Marshal.SizeOf(vga));

  Marshal.StructureToPtr(vga, intptr, true);

  //在此发送intptr指针给目的方

  Marshal.FreeHGlobal(intptr);

  //释放分配的非托管内存。

       北大青鸟武汉宏鹏光谷校区C#技术报名学习:17740513250

关闭

只为了方便您就学 北大青鸟光谷校区 北大青鸟武汉校区

武汉市洪山区珞喻路724号(地铁二号线光谷广场站F口出

Copyright (c) 2006-2023 武汉宏鹏教育咨询有限公司 版权所有 All Rights Reserved.