私はいくつかのWin32コードをC#に移植していますが、AとWで終わることを除いて、同じ名前で同じ構造を使用するいくつかの関数に出くわしました。
例えば:
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("shell32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern bool Shell_NotifyIconA(uint dwMessage, ref NOTIFYICONDATAA lpData);
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("shell32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern bool Shell_NotifyIconW(uint dwMessage, ref NOTIFYICONDATAW lpData);
次のように、関数名と関連する構造の両方からAとWを省略したC#の実装を見てきました。
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("shell32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern bool Shell_NotifyIcon(uint dwMessage, ref NOTIFYICONDATA lpData);
私が知りたいのは:
AとWは何を意味しますか?
C#では、AとWの両方を使用して上記のような関数を実装する必要がありますか、それとも単一の実装にするためにAとWを省略した方がよいでしょうか。