たとえば、これは .NET Framework ソース ファイルUnsafeNativeMethods.csからのものです。
[DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
public static extern bool GetWindowRect(HandleRef hWnd,
[In, Out] ref NativeMethods.RECT rect);
これは PInvoke.Net からのものです。
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetWindowRect(HandleRef hwnd, out RECT lpRect);
この関数の正しい/最良の署名はどれですか? (そのうちの 1 つだけが
[return: MarshalAs(UnmanagedType.Bool)]
、または[In, Out] ref
などを持っています).NET Framework ソース ファイルでは、多くの/ほとんどの署名
ExactSpelling=true, CharSet=CharSet.Auto
に が含まれていますが、PInvoke には含まれていません。これは必須ですか?