Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Marshal.PtrToStructure在.NET3.5中工作,但在.NET4中失败_C#_.net_Marshalling - Fatal编程技术网

C# Marshal.PtrToStructure在.NET3.5中工作,但在.NET4中失败

C# Marshal.PtrToStructure在.NET3.5中工作,但在.NET4中失败,c#,.net,marshalling,C#,.net,Marshalling,我有一个项目,当设置为.NET3.5项目时,它执行下面一行,并且按照预期填充curConnection var curConnection = (Connection)Marshal.PtrToStructure(currentPtr, typeof(Connection)); 当我将项目切换为.NET4项目时,curConnection对象不再填充正确的详细信息。将其切换回3.5会使其再次工作,但由于各种原因,我需要切换到.NET4,我将不深入讨论 我尝试将以下内容添加到配置中,但没有帮助

我有一个项目,当设置为.NET3.5项目时,它执行下面一行,并且按照预期填充curConnection

var curConnection = (Connection)Marshal.PtrToStructure(currentPtr, typeof(Connection));
当我将项目切换为.NET4项目时,curConnection对象不再填充正确的详细信息。将其切换回3.5会使其再次工作,但由于各种原因,我需要切换到.NET4,我将不深入讨论

我尝试将以下内容添加到配置中,但没有帮助

<configuration>
   <runtime>
      <NetFx40_PInvokeStackResilience enabled="1"/>
   </runtime>
</configuration>
。。。
我不打算提供所有的代码,但其余的结构看起来都非常相似

您确定currentPtr及其指向的内容在V4中正常吗?如果你提供一些关于连接的详细信息可能会有所帮助。我已经更新了问题,充实了一些细节。。。至于currentPtr,它是由另一个非.NET组件提供的,所以我认为.NET4不会对itOK产生影响。您是否验证了所有这些大小,从两个版本中的SizeOffConnection开始?我将同一项目的版本更改回3.5,它工作得非常好,因此我知道这不是代码更改。至于尺寸,它们都有供应,但都有供应!=已验证。您确定currentPtr及其指向的内容在V4中正常吗?如果你提供一些关于连接的详细信息可能会有所帮助。我已经更新了问题,充实了一些细节。。。至于currentPtr,它是由另一个非.NET组件提供的,所以我认为.NET4不会对itOK产生影响。您是否验证了所有这些大小,从两个版本中的SizeOffConnection开始?我将同一项目的版本更改回3.5,它工作得非常好,因此我知道这不是代码更改。至于尺寸,它们都有供应,但都有供应!=已证实的
[StructLayout(LayoutKind.Sequential)]
internal struct Connection
{
    public ConnectionId party;
    public ExtendedDevice staticDevice;
};
[StructLayout(LayoutKind.Sequential)]
internal struct ConnectionId // 70 bytes
{
    public UInt32 CallId; // 4 bytes
    public DeviceId DeviceId; // 64 bytes
    public DeviceTypes DeviceType; // 2 bytes
};