問題があります。これは構造体のCの定義です。参照型/配列を含む整列構造
typedef struct _UNIMDM_CHG_DEVCFG {
DWORD dwCommand;
LPCWSTR lpszDeviceClass;
LPVARSTRING lpDeviceConfig;
DWORD dwOption;
DWORD dwValue;
} UNIMDM_CHG_DEVCFG;
Windows CE上で.NET Compact Framework 3.5を使用しています。私は、例えば、この構造体をマーシャリングする多くの方法を試してみました:
[StructLayout(LayoutKind.Sequential)]
internal struct UnimodemChangeDeviceConfiguration
{
public int dwCommand;
public byte[] lpszDeviceClass;
public byte[] lpDeviceConfig;
public int dwOption;
public int dwValue;
}
問題はこの構造体のインスタンスにMarshal.SizeOfを呼び出し、それはNotSupportedExceptionをスローする場合です。どうして?私はlpszDeviceClassの文字列を使用しようとしましたが、もう一度問題が発生しました。ポインタ型はマーシャリングできないようです。
私はそれを見ましたが、そのクラスは正しく書かれていません。私は自分自身を書いて、それは動作します。問題は、他の実装では、LPVARSTRINGが(構造の一部ではなく)関数に直接転送されることです。 – Bogi