Win32 API

Win32 API に関するメモ

ini ファイル

ini ファイルには、文字コードが ACP (日本語環境では Shift_JIS) のものと、Unicode (UTF-16 with LE BOM) のものがあります。
また、ini ファイルを操作する Win32 API には、char * を引数とする ANSI版 (GetPrivateProfileStringA, WritePrivateProfileStringA など) と、wchar_t * を引数とする Wide文字版 (GetPrivateProfileStringW, WritePrivateProfileStringW など) があります。
ini ファイル (ACP, Unicode) と API (ANSI版, Wide文字版) で 4 パターンの組み合わせが発生します。

Windows 2000 以降の API は、読み書き時に内部で ini ファイルの文字コードにあわせて自動的に変換が行われるようになっています。

Windows NT 4 では、"ANSI版 API と ACP ini ファイルの組み合わせ", "Wide文字版 API と ACP ini ファイルの組み合わせ" が正しく動作するようです。
Wide文字版 API で ACP ini ファイルを扱う場合のみ自動的に変換されるようです。

Windows 95, 98, Me では、ANSI版 API と ACP ini ファイルの組み合わせのみが正しく動作するようです。
自動的な変換は行われないようです。

Windows 2000- Windows NT 4 Windows 95, 98, Me
ANSI API Wide API ANSI API Wide API ANSI API Wide API
ACP ini file OK OK OK OK OK NG
Unicode (UTF-16LE) ini file OK OK NG NG NG NG