2

.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 の値はサードパーティのライブラリによって提供されていますが、そのソースはありません。以下は、接続などの構造です。

[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
};

... すべてのコードを提供するつもりはありませんが、残りの構造体はすべて非常によく似ています。

4

0 に答える 0