Windows Phone 7.5ではMarshalAs(UnmanagedType.LPStr)が使えませんでした。実行時にNotSupportedExceptionになります。UnmanagedType.LPWStrやUnmanagedType.BStrなら平気でしたので、そちらを使えと言うことなのでしょう。

1
2
3
4
5
[ComImport, Guid("……"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IHoge
{
  void Foo([In, MarshalAs(UnmanagedType.LPStr)] string s);
}

宣言しただけでは大丈夫だと思います、実際にマーシャリングする段階で例外が飛んできたので。

なお、UnmanagedType.FunctionPtrやUnmanagedType.IDispatchも同様にダメでした。

スポンサード リンク

この記事のカテゴリ

  • ⇒ WPではUnmanagedTypeのすべてが使えるわけではないようだ
  • ⇒ WPではUnmanagedTypeのすべてが使えるわけではないようだ