浅析使用MarshalAsAttribute 类在托管代码和非托管代码之间封送数据

本文深入探讨了如何使用.NET框架中的MarshalAsAttribute类在托管和非托管代码之间进行数据传递。通过实例展示了在方法参数、字段和返回值上应用该特性,以及如何处理字符数组的封送。同时提到了StructLayoutAttribute在结构体声明中的作用,以便自定义数据字段的布局。
摘要由CSDN通过智能技术生成

MarshalAsAttribute 类

命名空间: System.Runtime.InteropServices
程序集: mscorlib(在 mscorlib.dll 中)

using System;
using System.Text;
using System.Runtime.InteropServices;

使用场合:

class Program
{

//Applied to a parameter.
public void M1([MarshalAs(UnmanagedType.LPWStr)]String msg) {}

//Applied to a field within a class.
class MsgText {
[MarshalAs(UnmanagedType.LPWStr)]
public String msg = “Hello World”;
}

//Applied to a return value.
[return: MarshalAs(UnmanagedType.LPWStr)]
public String GetMessage()
{
return “Hello World”;
}

static void Main(string[] args)
{ }
}

一个例子:
(MFC导出函数及结构体声明)
extern “C”_declspec(dllexport) BOOL WINAPI Task_AddPatient(CTask* pTask, PatientParam* mPat);

struct PatientParam
{
uns

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值