关于C#中mapviewoffile的问题 [英] A question about mapviewoffile in C#
问题描述
我在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)$装饰c $ c>。
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 aStructLayoutAttribute(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屋!