このコード:
[DllImport("shell32", CharSet=CharSet.Unicode)]
private static extern int SHGetFileInfo(string pszPath, uint dwFileAttributes, out SHFILEINFO psfi, uint cbFileInfo, uint flags);
次のコード分析の問題が発生します。
CA1901 P/Invoke 宣言は移植可能でなければなりません
コードで宣言されているように、P/Invoke 'IconUtil.SHGetFileInfo(string, uint, out IconUtil.SHFILEINFO, uint, uint)' の戻り値の型は、64 ビット プラットフォームでは 4 バイト幅になります。この API の実際のネイティブ宣言は、64 ビット プラットフォームでは 8 バイト幅である必要があることを示しているため、これは正しくありません。「int」の代わりに使用するデータ型を決定するには、MSDN プラットフォーム SDK のドキュメントを参照してください。
私はどうしたらいいですか?「MSDNに相談」してみましたが、問題が何を意味するのかよくわかりません。
同じ行でこれも取得します:
CA1060 P/Invokes を NativeMethods クラスに移動
これは P/Invoke メソッドであるため、'IconUtil.SHGetFileInfo(string, uint, out IconUtil.SHFILEINFO, uint, uint)' は、NativeMethods、SafeNativeMethods、または UnsafeNativeMethods という名前のクラスで定義する必要があります。