关于C#中mapviewoffile的问题 [英] A question about mapviewoffile in C#

查看:157
本文介绍了关于C#中mapviewoffile的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在c ++环境中编写了如下代码:

CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,sizeof(MCDTYPE1),NULL);

MCDTYPE1 * pDest = (MCDTYPE1 *)MapViewOfFile(hFileMapDest,FILE_MAP_WRITE,0,0,0);



MCDTYPE1是结构类型

为MCDTYPE1设置一些值结构成员。

pDest =& MCDTYPE1;





但是如何在c#中获取struct值。



我尝试了什么:



I writted code in c++ environmental as below:
CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(MCDTYPE1), NULL);
MCDTYPE1* pDest = (MCDTYPE1*)MapViewOfFile(hFileMapDest, FILE_MAP_WRITE, 0, 0, 0);

MCDTYPE1 is struct type
set some values to MCDTYPE1 struct member.
pDest = &MCDTYPE1;


but how to get struct value in c#.

What I have tried:

MCDTYPE1 result = (MCDTYPE1 )Marshal.PtrToStructure(mapView, typeof(UIStruct));

it failed to get values of MCDTYPE1.

推荐答案

我需要在这里做一些假设:

1. MCDTYPE1已在C#中声明,用 StructLayoutAttribute(LayoutKind.Sequential)

2.你在MapView中以某种方式检索了指向pDest的指针



我发现了(如果你的话)重新使用.NET4.6),最简单的解决方案是使用Generic表单,如果PtrToStructure

I am needing to make a couple of assumptions here:
1. MCDTYPE1 has been declared in C#, decorated with a StructLayoutAttribute(LayoutKind.Sequential).
2. You've somehow retrieved the pointer to pDest in MapView

I've found (if you're using .NET4.6), the simplest solution is to use the Generic form if PtrToStructure
MCDTYPE1 result = Marshal.PtrToStructure<mcdtype1>(mapView)</mcdtype1>



否则,您的UIStruct是什么?不应该是 typeof(MCDTYPE1)


这篇关于关于C#中mapviewoffile的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆